BackendSettingsPage: add "EBU R 128 loudness normalization"-related settings

Change `Use Replay Gain metadata if it is available` checkbox
into a radio button and add button to disable any loudness normalization.

Add second group(+radio button), for EBU R 128 loudness normalization.

There is only one tunable: Target Level,
defaulting to EBU R 128-recommended `-23 LUFS`.

Care should be taken when changing Target Level!
You probably don't want to go outside of `-30..-16` range!

At least as implemented, there is only support for per-song normalization,
i.e. no per-album normalization.

We do not do anything with loudness range,
although i have some further thoughts about compression.

We do not do anything about clipping / peak level.

NOTE: we do not need `libebur128` to *perform* the audio normalization,
      only for the initial analysis.


Co-authored-by: Jonas Kvinge <jonas@jkvinge.net>
This commit is contained in:
Roman Lebedev
2023-06-27 05:00:05 +03:00
committed by Jonas Kvinge
parent 9a7949297e
commit 0ea81b13b9
3 changed files with 278 additions and 114 deletions

View File

@@ -68,6 +68,9 @@ class BackendSettingsPage : public SettingsPage {
void DeviceStringChanged();
void RgPreampChanged(const int value);
void RgFallbackGainChanged(const int value);
#ifdef HAVE_GSTREAMER
void EbuR128TargetLevelChanged(const int value);
#endif
void radiobutton_alsa_hw_clicked(const bool checked);
void radiobutton_alsa_plughw_clicked(const bool checked);
void radiobutton_alsa_pcm_clicked(const bool checked);