feat(qt): Settings > Audio > Loudness — normalization toggle, target loudness presets, clipping guard
The bars' audio flyout keeps its switch; Settings > Audio gains the same key with its two companions: a Target loudness select (-11 / -14 default / -16 / -18 / -23 LUFS, a value set elsewhere shows as a display-only "Custom (N LUFS)" entry instead of being re-mapped) and the Prevent clipping toggle. Eight catalogs updated. cc
This commit is contained in:
10 files changed
+481
No files matched your search
@@ -7575,3 +7575,51 @@ msgstr "Entfernt alles, was zum Offline-Hören gespeichert ist: {} mit {}. Gekau
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Erweitert"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "LAUTHEIT"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Lautstärkenormalisierung"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Ziel-Lautheit"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "Die Lautheit, auf die jeder Titel angeglichen wird. -14 LUFS entspricht Streaming-Diensten, -18 LUFS ist die ReplayGain-Referenz."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Übersteuerung vermeiden"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Begrenzt die Anhebung, damit der lauteste Pegel unter der Vollaussteuerung bleibt. Aus: leise Titel erreichen das Ziel, auch wenn ihre Spitzen übersteuern."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Laut"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (Standard)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Rundfunk (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Benutzerdefiniert ({} LUFS)"
|
||||
@@ -3201,3 +3201,55 @@ msgstr "Removes everything saved for offline listening: {} using {}. Purchased d
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Advanced"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "LOUDNESS"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Volume normalization"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Level loudness across tracks"
|
||||
msgstr "Level loudness across tracks"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Target loudness"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Prevent clipping"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Loud"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (default)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Broadcast (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Custom ({} LUFS)"
|
||||
@@ -7581,3 +7581,51 @@ msgstr "Elimina todo lo guardado para escuchar sin conexión: {} que ocupan {}.
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Avanzado"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "SONORIDAD"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Normalización de volumen"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Sonoridad objetivo"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "La sonoridad a la que se alinea cada pista. -14 LUFS coincide con los servicios de streaming; -18 LUFS es la referencia de ReplayGain."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Evitar recorte"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Limita el realce para que el pico más alto quede por debajo de la escala completa. Desactivado, las pistas silenciosas alcanzan el objetivo aunque sus picos recorten."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Fuerte"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (predeterminado)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Radiodifusión (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Personalizado ({} LUFS)"
|
||||
@@ -7573,3 +7573,51 @@ msgstr "Supprime tout ce qui est enregistré pour l'écoute hors ligne : {} occu
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Avancé"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "SONIE"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Normalisation du volume"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Sonie cible"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "La sonie à laquelle chaque morceau est aligné. -14 LUFS correspond aux services de streaming, -18 LUFS est la référence ReplayGain."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Éviter l'écrêtage"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Limite l'amplification pour que le pic le plus fort reste sous la pleine échelle. Désactivé, les morceaux faibles atteignent la cible même si leurs pics écrêtent."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Fort"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (par défaut)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Diffusion (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Personnalisé ({} LUFS)"
|
||||
@@ -7556,3 +7556,51 @@ msgstr "オフライン再生用に保存したものをすべて削除します
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "詳細"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "ラウドネス"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "音量ノーマライズ"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "目標ラウドネス"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "各トラックを揃えるラウドネス。-14 LUFS はストリーミングサービスの基準、-18 LUFS は ReplayGain の基準です。"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "クリッピングを防止"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "最大ピークがフルスケールを超えないようブーストを制限します。オフにすると、ピークがクリップしても静かなトラックが目標に達します。"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · 大きめ"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · ストリーミング(既定)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · 放送 (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "カスタム({} LUFS)"
|
||||
@@ -7563,3 +7563,51 @@ msgstr "Verwijdert alles wat voor offline luisteren is opgeslagen: {} met {}. Ge
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Geavanceerd"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "LUIDHEID"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Volumenormalisatie"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Doelluidheid"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "De luidheid waarop elke track wordt afgestemd. -14 LUFS komt overeen met streamingdiensten, -18 LUFS is de ReplayGain-referentie."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Clipping voorkomen"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Begrenst de versterking zodat de luidste piek onder volle schaal blijft. Uit: stille tracks bereiken het doel, ook als hun pieken clippen."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Luid"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (standaard)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Omroep (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Aangepast ({} LUFS)"
|
||||
@@ -7573,3 +7573,51 @@ msgstr "Remove tudo o que está salvo para ouvir offline: {} ocupando {}. As com
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Avançado"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "SONORIDADE"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Normalização de volume"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Sonoridade alvo"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "A sonoridade à qual cada faixa é alinhada. -14 LUFS corresponde aos serviços de streaming; -18 LUFS é a referência do ReplayGain."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Evitar clipping"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Limita o ganho para que o pico mais alto fique abaixo da escala completa. Desligado, as faixas baixas atingem o alvo mesmo que os picos cortem."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Alto"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Streaming (padrão)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Radiodifusão (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Personalizado ({} LUFS)"
|
||||
@@ -7594,3 +7594,51 @@ msgstr "Удаляет всё, что сохранено для прослуши
|
||||
#: qbz-qt/qml/settings/SettingsView.qml
|
||||
msgid "Advanced"
|
||||
msgstr "Дополнительно"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "LOUDNESS"
|
||||
msgstr "ГРОМКОСТЬ"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Volume normalization"
|
||||
msgstr "Нормализация громкости"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Target loudness"
|
||||
msgstr "Целевая громкость"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference."
|
||||
msgstr "Громкость, к которой приводится каждый трек. -14 LUFS соответствует стриминговым сервисам, -18 LUFS — эталон ReplayGain."
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Prevent clipping"
|
||||
msgstr "Не допускать клиппинга"
|
||||
|
||||
#: qbz-qt/qml/settings/AudioSettings.qml
|
||||
msgid "Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip."
|
||||
msgstr "Ограничивает усиление, чтобы самый громкий пик оставался ниже полной шкалы. Выключено — тихие треки достигают цели, даже если их пики клиппируют."
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-11 LUFS · Loud"
|
||||
msgstr "-11 LUFS · Громко"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-14 LUFS · Streaming (default)"
|
||||
msgstr "-14 LUFS · Стриминг (по умолчанию)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-16 LUFS · Apple Music"
|
||||
msgstr "-16 LUFS · Apple Music"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-18 LUFS · ReplayGain"
|
||||
msgstr "-18 LUFS · ReplayGain"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "-23 LUFS · Broadcast (EBU R128)"
|
||||
msgstr "-23 LUFS · Вещание (EBU R128)"
|
||||
|
||||
#: qbz-qt/src/settings_qt.rs
|
||||
msgid "Custom ({} LUFS)"
|
||||
msgstr "Своё значение ({} LUFS)"
|
||||
@@ -350,6 +350,44 @@ Column {
|
||||
SettingsDivider { }
|
||||
SettingsSpacer { }
|
||||
|
||||
// ============================= LOUDNESS ==============================
|
||||
// The bars' audio flyout keeps its normalization switch; this is the
|
||||
// same key with its two companions. Target and clipping guard only show
|
||||
// while normalization is on.
|
||||
GroupHeader { kioskHost: root.kioskHost; text: QbzSession.tr("LOUDNESS", QbzSession.trRev) }
|
||||
SettingRow { kioskHost: root.kioskHost;
|
||||
label: QbzSession.tr("Volume normalization", QbzSession.trRev)
|
||||
description: QbzSession.tr("Level loudness across tracks", QbzSession.trRev)
|
||||
QbzToggle { kioskHost: root.kioskHost;
|
||||
checked: root.doc.normalization === true
|
||||
onToggled: function (v) { QbzBridge.settingsBool("normalization", v) }
|
||||
}
|
||||
}
|
||||
SettingRow { kioskHost: root.kioskHost;
|
||||
visible: root.doc.normalization === true
|
||||
label: QbzSession.tr("Target loudness", QbzSession.trRev)
|
||||
description: QbzSession.tr("The loudness every track is aligned to. -14 LUFS matches streaming services, -18 LUFS is the ReplayGain reference.", QbzSession.trRev)
|
||||
QbzSelect { kioskHost: root.kioskHost;
|
||||
menuWidth: 260
|
||||
options: root.doc.normalizationTargets || []
|
||||
currentIndex: root.doc.normalizationTargetIndex || 0
|
||||
onSelected: function (i) { QbzBridge.settingsSelect("normalization-target", i) }
|
||||
}
|
||||
}
|
||||
SettingRow { kioskHost: root.kioskHost;
|
||||
visible: root.doc.normalization === true
|
||||
label: QbzSession.tr("Prevent clipping", QbzSession.trRev)
|
||||
description: QbzSession.tr("Cap the boost so the loudest peak stays under full scale. Off lets quiet tracks reach the target even if their peaks clip.", QbzSession.trRev)
|
||||
QbzToggle { kioskHost: root.kioskHost;
|
||||
checked: root.doc.normalizationPreventClipping === true
|
||||
onToggled: function (v) { QbzBridge.settingsBool("normalization-prevent-clipping", v) }
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSpacer { }
|
||||
SettingsDivider { }
|
||||
SettingsSpacer { }
|
||||
|
||||
// ============================= STARTUP ===============================
|
||||
GroupHeader { kioskHost: root.kioskHost; text: QbzSession.tr("STARTUP", QbzSession.trRev) }
|
||||
SettingRow { kioskHost: root.kioskHost;
|
||||
|
||||
@@ -1600,6 +1600,21 @@ fn save_myqbz_label(label: &str) {
|
||||
pub const STREAMING_QUALITY_KEYS: &[&str] = &["mp3", "cd", "hires", "hires_plus"];
|
||||
pub const STREAMING_QUALITY_LABELS: &[&str] = &["MP3", "CD Quality", "Hi-Res", "Hi-Res+"];
|
||||
|
||||
/// Target loudness presets (label msgid, LUFS). Index 1 is the store default.
|
||||
pub(crate) const NORMALIZATION_TARGETS: &[(&str, f32)] = &[
|
||||
("-11 LUFS · Loud", -11.0),
|
||||
("-14 LUFS · Streaming (default)", -14.0),
|
||||
("-16 LUFS · Apple Music", -16.0),
|
||||
("-18 LUFS · ReplayGain", -18.0),
|
||||
("-23 LUFS · Broadcast (EBU R128)", -23.0),
|
||||
];
|
||||
|
||||
fn normalization_target_index(lufs: f32) -> Option<usize> {
|
||||
NORMALIZATION_TARGETS
|
||||
.iter()
|
||||
.position(|(_, v)| (v - lufs).abs() < 0.01)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Snapshot
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -2084,6 +2099,15 @@ pub struct SettingsDoc {
|
||||
/// Settable via settingsBool("normalization", …) but never published
|
||||
/// back, so both now-playing bars had to shadow the toggle locally.
|
||||
pub normalization: bool,
|
||||
/// Target loudness presets (translated labels) + the selected index; a
|
||||
/// value outside the presets (qbzd CLI, an import) shows as a trailing
|
||||
/// "Custom (N LUFS)" entry rather than being silently re-mapped.
|
||||
#[serde(rename = "normalizationTargets")]
|
||||
pub normalization_targets: Vec<String>,
|
||||
#[serde(rename = "normalizationTargetIndex")]
|
||||
pub normalization_target_index: i32,
|
||||
#[serde(rename = "normalizationPreventClipping")]
|
||||
pub normalization_prevent_clipping: bool,
|
||||
#[serde(rename = "persistSession")]
|
||||
pub persist_session: bool,
|
||||
#[serde(rename = "resumePosition")]
|
||||
@@ -2634,6 +2658,24 @@ pub async fn publish_snapshot() {
|
||||
show_context_icon: prefs.show_context_icon,
|
||||
gapless: audio_settings.gapless_enabled,
|
||||
normalization: audio_settings.normalization_enabled,
|
||||
normalization_targets: {
|
||||
let mut v: Vec<String> = NORMALIZATION_TARGETS
|
||||
.iter()
|
||||
.map(|(l, _)| qbz_i18n::t(l))
|
||||
.collect();
|
||||
if normalization_target_index(audio_settings.normalization_target_lufs).is_none() {
|
||||
v.push(qbz_i18n::t_args(
|
||||
"Custom ({} LUFS)",
|
||||
&[&format!("{:.0}", audio_settings.normalization_target_lufs)],
|
||||
));
|
||||
}
|
||||
v
|
||||
},
|
||||
normalization_target_index: normalization_target_index(
|
||||
audio_settings.normalization_target_lufs,
|
||||
)
|
||||
.unwrap_or(NORMALIZATION_TARGETS.len()) as i32,
|
||||
normalization_prevent_clipping: audio_settings.normalization_prevent_clipping,
|
||||
persist_session: prefs.persist_session,
|
||||
resume_position: prefs.resume_playback_position,
|
||||
stream_uncached: audio_settings.stream_first_track,
|
||||
@@ -3504,6 +3546,9 @@ pub async fn settings_bool(runtime: &Arc<AppRuntime<LoggingAdapter>>, key: &str,
|
||||
"normalization" => {
|
||||
with_audio(|s| s.set_normalization_enabled(value)).map(|_| Apply::Reload)
|
||||
}
|
||||
"normalization-prevent-clipping" => {
|
||||
with_audio(|s| s.set_normalization_prevent_clipping(value)).map(|_| Apply::Reload)
|
||||
}
|
||||
"stream-uncached" => with_audio(|s| s.set_stream_first_track(value)).map(|_| Apply::Reload),
|
||||
"streaming-only" => with_audio(|s| s.set_streaming_only(value)).map(|_| Apply::Reload),
|
||||
"continue-playback" => {
|
||||
@@ -4147,6 +4192,16 @@ pub async fn settings_select(runtime: &Arc<AppRuntime<LoggingAdapter>>, key: &st
|
||||
}
|
||||
apply_audio(runtime, Apply::Reload);
|
||||
}
|
||||
"normalization-target" => {
|
||||
let Some((_, lufs)) = NORMALIZATION_TARGETS.get(index) else {
|
||||
return; // the trailing "Custom" entry is display-only
|
||||
};
|
||||
if let Err(e) = with_audio(|s| s.set_normalization_target_lufs(*lufs)) {
|
||||
log::error!("[qbz-qt] persist normalization target failed: {e}");
|
||||
return;
|
||||
}
|
||||
apply_audio(runtime, Apply::Reload);
|
||||
}
|
||||
"qconnect-startup" => {
|
||||
let Some(mode) = QCONNECT_STARTUP_VALUES.get(index) else {
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user