mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 07:15:47 +00:00
feat(playback): loudness bind rules, analysis seeding, and normalization UI
Resolve integrated loudness from SQLite only at decode bind; keep pre-trim until a row exists, then allow provisional gain from live updates. Pass DB-stable hints from the web app into play and gapless preload. Default pre-measurement attenuation -4.5 dB with an icon reset in Settings; drop redundant normalization copy and shorten pre-trim descriptions. analysis_cache seed_from_bytes returns an outcome and skips redundant waveform work on cache hits; wire callers and related frontend/backend glue.
This commit is contained in:
@@ -847,6 +847,12 @@ export const deTranslation = {
|
||||
replayGainAlbum: 'Album',
|
||||
replayGainPreGain: 'Pre-Gain (getaggte Dateien)',
|
||||
replayGainFallback: 'Fallback (ohne Tags / Radio)',
|
||||
normalization: 'Normalisierung',
|
||||
loudnessTargetLufs: 'Ziel-LUFS',
|
||||
loudnessPreAnalysisAttenuation: 'Dämpfung vor Messung (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Zusätzliche Dämpfung, bis die Loudness des Titels gespeichert ist. Beim Streamen folgen nur grobe Schätzungen, keine volle Messung. 0 dB = aus; negativer = leiser.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Standard',
|
||||
crossfade: 'Crossfade',
|
||||
crossfadeDesc: 'Überblendung zwischen Tracks',
|
||||
crossfadeSecs: '{{n}} s',
|
||||
|
||||
@@ -853,6 +853,12 @@ export const enTranslation = {
|
||||
replayGainAlbum: 'Album',
|
||||
replayGainPreGain: 'Pre-Gain (tagged files)',
|
||||
replayGainFallback: 'Fallback (untagged / radio)',
|
||||
normalization: 'Normalization',
|
||||
loudnessTargetLufs: 'Target LUFS',
|
||||
loudnessPreAnalysisAttenuation: 'Trim before measurement (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Extra quieting until loudness for this track is saved. Streaming then uses rough guesses, not a full measurement. 0 dB = off; lower = quieter.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Reset to default',
|
||||
crossfade: 'Crossfade',
|
||||
crossfadeDesc: 'Fade between tracks',
|
||||
crossfadeSecs: '{{n}} s',
|
||||
|
||||
@@ -840,6 +840,12 @@ export const esTranslation = {
|
||||
replayGainAlbum: 'Álbum',
|
||||
replayGainPreGain: 'Pre-Ganancia (archivos etiquetados)',
|
||||
replayGainFallback: 'Respaldo (sin etiquetar / radio)',
|
||||
normalization: 'Normalización',
|
||||
loudnessTargetLufs: 'LUFS objetivo',
|
||||
loudnessPreAnalysisAttenuation: 'Atenuación antes de medir (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Atenúa hasta que la loudness del tema esté guardada. En streaming luego solo hay estimaciones aproximadas. 0 dB = ninguna; más negativo = más bajo.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Predeterminado',
|
||||
crossfade: 'Crossfade',
|
||||
crossfadeDesc: 'Transición entre pistas',
|
||||
crossfadeSecs: '{{n}} s',
|
||||
|
||||
@@ -835,6 +835,12 @@ export const frTranslation = {
|
||||
replayGainAlbum: 'Album',
|
||||
replayGainPreGain: 'Pré-Gain (fichiers taggés)',
|
||||
replayGainFallback: 'Repli (sans tags / radio)',
|
||||
normalization: 'Normalisation',
|
||||
loudnessTargetLufs: 'LUFS cible',
|
||||
loudnessPreAnalysisAttenuation: 'Atténuation avant mesure (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Réduit le volume tant que la loudness du morceau n’est pas enregistrée. En streaming, des estimations grossières suivent, pas une mesure complète. 0 dB = rien ; plus négatif = plus discret.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Valeur par défaut',
|
||||
crossfade: 'Fondu enchaîné',
|
||||
crossfadeDesc: 'Fondu entre les pistes',
|
||||
crossfadeSecs: '{{n}} s',
|
||||
|
||||
@@ -834,6 +834,12 @@ export const nbTranslation = {
|
||||
replayGainAlbum: 'Album',
|
||||
replayGainPreGain: 'Pre-Gain (taggede filer)',
|
||||
replayGainFallback: 'Reserveverdi (uten tagger / radio)',
|
||||
normalization: 'Normalisering',
|
||||
loudnessTargetLufs: 'Mål-LUFS',
|
||||
loudnessPreAnalysisAttenuation: 'Demping før måling (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Ekstra demping til loudness for sporet er lagret. Streaming bruker deretter grove anslag, ikke full måling. 0 dB = av; lavere = roligere.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Standard',
|
||||
crossfade: 'Crossfade',
|
||||
crossfadeDesc: 'Tone mellom spor',
|
||||
crossfadeSecs: '{{n}}s',
|
||||
|
||||
@@ -834,6 +834,12 @@ export const nlTranslation = {
|
||||
replayGainAlbum: 'Album',
|
||||
replayGainPreGain: 'Pre-Gain (getagde bestanden)',
|
||||
replayGainFallback: 'Terugval (zonder tags / radio)',
|
||||
normalization: 'Normalisatie',
|
||||
loudnessTargetLufs: 'Doel-LUFS',
|
||||
loudnessPreAnalysisAttenuation: 'Demping vóór meting (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Extra zachter tot de loudness van het nummer is opgeslagen. Streamen gebruikt daarna grove schattingen, geen volledige meting. 0 dB = uit; negatiever = zachter.',
|
||||
loudnessPreAnalysisAttenuationReset: 'Standaard',
|
||||
crossfade: 'Overgang',
|
||||
crossfadeDesc: 'Fade tussen nummers',
|
||||
crossfadeSecs: '{{n}} s',
|
||||
|
||||
@@ -886,6 +886,12 @@ export const ruTranslation = {
|
||||
replayGainAlbum: 'По альбому',
|
||||
replayGainPreGain: 'Предусиление (файлы с тегами)',
|
||||
replayGainFallback: 'Резерв (без тегов / радио)',
|
||||
normalization: 'Нормализация',
|
||||
loudnessTargetLufs: 'Целевой LUFS',
|
||||
loudnessPreAnalysisAttenuation: 'Ослабление до измерения (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'Насколько приглушить звук, пока для трека нет сохранённого измерения громкости. При стриме дальше идут лишь грубые оценки, не полный LUFS. 0 dB — без дополнительного приглушения; ниже — тише.',
|
||||
loudnessPreAnalysisAttenuationReset: 'По умолчанию',
|
||||
crossfade: 'Кроссфейд',
|
||||
crossfadeDesc: 'Плавный переход между треками',
|
||||
crossfadeSecs: '{{n}} с',
|
||||
|
||||
@@ -829,6 +829,12 @@ export const zhTranslation = {
|
||||
replayGainAlbum: '专辑',
|
||||
replayGainPreGain: '预增益(有标签文件)',
|
||||
replayGainFallback: '回退增益(无标签 / 收音机)',
|
||||
normalization: '响度归一化',
|
||||
loudnessTargetLufs: '目标 LUFS',
|
||||
loudnessPreAnalysisAttenuation: '测量前衰减 (dB)',
|
||||
loudnessPreAnalysisAttenuationDesc:
|
||||
'在曲目响度数据保存前的额外压低。流式阶段之后只是粗略估计,不是完整测量。0 dB 为不压低;更负则更安静。',
|
||||
loudnessPreAnalysisAttenuationReset: '恢复默认',
|
||||
crossfade: '交叉淡入淡出',
|
||||
crossfadeDesc: '曲目间淡入淡出',
|
||||
crossfadeSecs: '{{n}} 秒',
|
||||
|
||||
Reference in New Issue
Block a user