<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>loudnorm &amp;mdash; Cyberdyne Systems</title>
    <link>https://noblogo.org/aytin/tag:loudnorm</link>
    <description>&#34;Fare o non fare. Non c&#39;è provare!&#34;</description>
    <pubDate>Thu, 16 Apr 2026 03:04:46 +0000</pubDate>
    <item>
      <title>Come aumentare il volume di una traccia audio</title>
      <link>https://noblogo.org/aytin/come-aumentare-il-volume-di-una-traccia-audio</link>
      <description>&lt;![CDATA[normalizzazione&#xA;Quando si deve aumentare il volume di una traccia audio, si deve ricorrere a ad un&#39;operazione di &#34;normalizzazione&#34;.&#xA;!--more--&#xA;&#xA;1. Cos’è la normalizzazione&#xA;2. Come misurare il &#34;picco&#34;?&#xA;3. Come leggere correttamente questa misura&#xA;   3.1. Perché usare il loudness invece di RMS?&#xA;4. Come ti normalizzo il file&#xA;  4.1. Peak normalization&#xA;  4.2. Loudness Normalization&#xA;     4.2.1. Loudness Normalization statica (ffmpeg)&#xA;     4.2.2. Loudness Normalization dinamica&#xA;     4.2.3. Loudness Normalization statica (rsgain)&#xA;&#xA;1. Cos&#39;è la normalizzazione&#xA;La normalizzazione è un&#39;operazione lineare che consiste nell&#39;analisi del file audio, nel calcolare la differenza (offset) fra il volume attuale ed un volume target, nell&#39;applicare una correzione di guadagno (Gain).&#xA;&#xA;La normalizzazione può essere distinta in base  al &#34;come&#34; e al &#34;dove&#34;.&#xA;&#xA;Il &#34;come&#34;&#xA;La normalizzazione classica si basa sui picchi. Cerca il punto più alto della forma d&#39;onda e lo porta a un valore massimo (es. 0 dB). Ignora la percezione umana; un brano con un singolo &#34;click&#34; molto forte risulterà comunque silenzioso perché quel picco blocca l&#39;aumento del volume.&#xA;&#xA;La normalizzazione più moderna si basa sui LUFS, ossia su come, mediamente, l&#39;audio viene effettivamente percepito dall&#39;orecchio umano (psicoacustica). Porta l&#39;intero brano a un livello di pressione sonora media costante, rendendo l&#39;ascolto uniforme tra diverse tracce.&#xA;&#xA;Il &#34;dove&#34;&#xA;Quando si normalizza una traccia audio si può scegliere di farla modificando ogni singolo sample della traccia audio oppure di agire sui metadati.&#xA;&#xA;Nel primo caso il file originale viene modificato (ricodifica quasi sempre lossy), nel secondo viene lasciato inalterato.&#xA;&#xA;Altro fattore di cui tenere conto è che una normalizzazione lossy funziona su ogni player, una normalizzazione che agisce sui metadati funziona solo se il player è in grado di leggerli.&#xA;&#xA;Possiamo fare quindi una prima distinzione:&#xA;&#xA;normalizzazione di picco (RMS) o iPeak Normalization/i: applicazione di un guadagno statico (RMS) in modalità lossy: non altera la dinamica del brano, richiede una ricodifica;&#xA;normalizzazione della sonorità (LUFS) o iLoudness Normalization/i:&#xA;   applicazione di un guadagno statico (LUFS) in modalità lossy: non altera la dinamica del brano, richiede una ricodifica;&#xA;   applicazione di un guadagno statico (LUFS) basato su tag: non altera la dinamica del brano, lascia il file inalterato (rsgain);&#xA;   agisce con un compressore / limiter in modalità lossy: altera la dinamica del brano, richiede una ricodifica.&#xA;&#xA;A questo punto la domanda diventa: quale scegliere?&#xA;&#xA;Per quel che mi riguarda, la salomonica risposta è: dipende.&#xA;&#xA;Come si può immaginare, non c&#39;è una risposta definitiva ma dipende dalla qualità della traccia, dal contesto ecc.&#xA;2. Come misurare il &#34;picco&#34;?&#xA;C&#39;è bisogno di un elemento misurabile che mi permetta di capire come agire con la normalizzazione.&#xA;&#xA;RMS (Root Mean Square): è un calcolo matematico asciutto su quanto sia potente elettricamente/digitalmente il segnale audio. È utile per capire l&#39;energia costante, ma non tiene conto del fatto che l&#39;orecchio umano è più sensibile ad alcune frequenze rispetto ad altre.&#xA;&#xA;LUFS (Loudness Units Full Scale): È lo standard moderno (EBU R128). Simula l&#39;udito umano applicando dei filtri che pesano maggiormente le frequenze medie.&#xA;&#xA;Per misurare il picco RMS posso ricorrere ad ffmpeg&#xA;ffmpeg -hidebanner -i &#34;audio.m4a&#34; -filter:a &#34;volumedetect&#34; -f null -&#xA;...&#xA;[...] nsamples: 18522112&#xA;[...] meanvolume: -20.3 dB&#xA;[...] maxvolume: -5.4 dB&#xA;[...] histogram5db: 40&#xA;[...] histogram6db: 1436&#xA;[...] histogram7db: 6443&#xA;[...] histogram8db: 18606&#xA;...&#xA;che mi mostrerà:&#xA;&#xA;il numero dei samples di cui si compone la traccia&#xA;il volume medio (meanvolume)&#xA;il picco (maxvolume)&#xA;&#xA;Il picco mi dice di quanto possa alzare il volume (fino al limite fisico di 0dB) staticamente senza causare distorsioni.&#xA;&#xA;La differenza fra volume medio e picco mi dà informazioni sulla dinamica del brano. Maggiore è la differenza, maggiore è la dinamica. Tipicamente:&#xA;&#xA;valori &lt; 5 sono tipici della musica dance, forte, uniforme, e molto compressa.&#xA;valori fra 5 e 15 sono tipici di brani pop-rock, ben bilanciati&#xA;valori   15 sono attribuibili a brani di musica classica, jazz, con una dinamica ricca.&#xA;&#xA;Per misurare il loudness, sempre con ffmpeg:&#xA;ffmpeg -hidebanner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - &#xA;...&#xA; Integrated loudness:&#xA;    I:         -18.1 LUFS&#xA;    Threshold: -28.4 LUFS&#xA;&#xA;  Loudness range:&#xA;    LRA:         4.1 LU&#xA;    Threshold: -38.3 LUFS&#xA;    LRA low:   -21.2 LUFS&#xA;    LRA high:  -17.1 LUFS&#xA;&#xA;  True peak:&#xA;    Peak:       -5.4 dBFS&#xA;La misurazione è più articolata rispetto alla precedente.&#xA;&#xA;FFmpeg innanzitutto mostra due sezioni: Integrated Loudness, rappresentante il volume medio complessivo del file e la Loudness Range che mi descrive la dinamica del brano come differenza di volume fra le parti più silenziose e quelle più rumorose.&#xA;&#xA;Sezione Integrated loudness:&#xA;   I: è il valore più importante. È il volume medio percepito dell&#39;intero brano (come si può vedere, diverso rispetto all&#39;RMS di prima. Il primo è pura potenza digitale, il secondo è volume percepito).&#xA;   Threshold: è la soglia usata per evitare che i silenzi abbassino artificialmente la media del volume. L&#39;algoritmo ignora tutto ciò che sta sotto questa soglia nel calcolo dell&#39;Integrated Loudness.&#xA;Sezione Loudness range:&#xA;   LRA: è un indice della variazione dinamica del brano. Più è basso, più il suono tende ad essere uniforme e probabilmente compresso&#xA;   Threshold: come prima, è la soglia oltre la quale i suoni vengono ignorati nel calcolo del range dinamico.&#xA;   LRA Low: indica il limite inferiore del loudness&#xA;   LRA High: indica il limite superiorebr&#xA;   quindi LRA = LRA High - LRA Low&#xA;Sezione True peak:&#xA;   Peak: Simile al max\volume dell&#39;RMS, indica il picco reale del brano in termini di sonorità.&#xA;&#xA;Un altro modo, forse meno pratico ma decisamente più scenografico, per analizzare un file audio è questo:&#xA;ffplay -f lavfi -i &#34;amovie=audio.m4a,ebur128=video=1:meter=18 out0&#34;&#xA;Disegna un grafico dell&#39;onda sonora in tempo reale.&#xA;3. Come leggere correttamente questa misura&#xA;L&#39;integrated loudness mi dice qual è il volume medio del brano.&#xA;True peak mi dice di quanto posso alzare prima di distorcere.&#xA;Queste sono le due informazioni cruciali sufficienti per applicare un guadagno statico senza fare danni.&#xA;&#xA;I valori High e Low del Loudness Range, che racchiudono asintoticamente il brano, tornano utili quando bisogna agire sulla dinamica.&#xA;&#xA;Notare che Integrated loudness è sempre compreso fra LRA Low e LRA High.&#xA;3.1. Perché usare il loudness invece di RMS?&#xA;L&#39;RMS è un calcolo puramente matematico che non tiene conto del fatto che l&#39;orecchio umano è molto più sensibile alle frequenze medie che non ai bassi estemi e agli acuti altissimi.&#xA;&#xA; A questo provvede il LUFS che è un&#39;evoluzione dell&#39;RMS perché include dei filtri di ponderazione che, prima di calcolare la media, esaltano le frequenze medie attenuando quelle basse.&#xA;&#xA;La conseguenza è che se agisco sul volume dei brani prendendo LUFS come riferimento, questi suoneranno tutti allo stesso volume. Se considerassi un adeguamento basato su RMS, i brani con più bassi sembreranno avere meno volume di quelli con frequenze medie più marcate. &#xA;4. Come ti normalizzo il file&#xA;La scelta fra una normalizzazione di picco e una di volume (loudness) è abbastanza semplice in realtà.&#xA;&#xA;A parte poche eccezioni in cui può avere senso avere RMS come riferimento, è sempre preferibile una normalizzazione della sonorità.&#xA;&#xA;Quest&#39;ultima può essere fatta modificando solo i metadati o agendo chirurgicamente sul file ricodificandolo.&#xA;4.1. Peak normalization&#xA;Una volta noti i dati di Max Volume e Mean Volume visti in precedenza, la normalizzazione è piuttosto semplice.&#xA;&#xA;Supponendo Max Volume = 6dB&#xA;ffmpeg -i audio.m4a -filter:a &#34;volume=6dB&#34; -c:a aac -b:a 192k audionormalized.m4a&#xA;Dovendo ricodificare, scelgo un bitrate piuttosto alto per limitare la perdita fisiologica di una ricodifica lossy.&#xA;&#xA;Come si può immaginare, è una aggiunta lineare secca a tutta la traccia a cui aumento solo la potenza digitale senza tenere conto della percezione sonora.&#xA;&#xA;Piccola nota: Conviene scegliere un valore che si avvicini, ma non equivalga, al limite di 0 dB perché altrimenti FFmpeg taglierà brutalmente le creste dell&#39;onda sonora che superano lo zero, creando quella tipica distorsione metallica grattata chiamata clipping.&#xA;&#xA;4.2. Loudness Normalization&#xA;La normalizzazione di volume, in base alla nostra scelta di alterare o meno la dinamica del brano, può essere fatta come detto applicando:&#xA;&#xA;un guadagno statico LUFS (lossy)&#xA;un guadagno statico LUFS sui metadati (non lossy)&#xA;compressore / limiter (sempre lossy) &#xA;&#xA;Il guadagno statico, quello con i metadati, avverrà con rsgain.&#xA;&#xA;La normalizzazione con perdita di qualità (lossy) avverrà con ffmpeg usando il filtro loudnorm che dispone di un compressore/limiter piuttosto efficace.&#xA;&#xA;Questo filtro è un processore dinamico (dual-pass o single-pass). Non si limita ad alzare il volume; se trova una parte troppo forte, può comprimere leggermente solo quella parte per permettere al resto della canzone di suonare più forte.&#xA;&#xA;loudnorm porta il loudness di default a -24 LUFS che è lo standard per il broadcast televisivo.&#xA;&#xA;I colossi dello streaming applicano automaticamente un loudness decisamente più marcato, salvo poche eccezioni, non si discostano da -14 LUFS. Ad es. Youtube, Amazon Music, Spotify, Soundcloud viaggiano mediamente su -14 LUFS, Deezer -15, Apple Music -16.&#xA;&#xA;Si può verificare facilmente, come sappiamo fare, come un audio presente su una di queste piattaforme, abbia uno dei loudness indicati.&#xA;&#xA;4.2.1. Loudness Normalization statica (ffmpeg)&#xA;Riprendiamo l&#39;esempio di prima.&#xA;ffmpeg -hidebanner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - &#xA;...&#xA; Integrated loudness:&#xA;    I:         -18.1 LUFS&#xA;    Threshold: -28.4 LUFS&#xA;&#xA;  Loudness range:&#xA;    LRA:         4.1 LU&#xA;    Threshold: -38.3 LUFS&#xA;    LRA low:   -21.2 LUFS&#xA;    LRA high:  -17.1 LUFS&#xA;&#xA;  True peak:&#xA;    Peak:       -5.4 dBFS&#xA;Con ffmpeg e loudnorm in modalità single-pass, posso applicare un guadagno statico 5.4 dBFS, con un true peak di -1 (Il default è -2), per arrivare, da -18.1 LUFS, a -13.0 LUFS senza distorsioni.&#xA;ffmpeg -i audio.m4a -filter:a &#34;loudnorm=I=-12.7:TP=-1.0&#34; -c:a aac -b:a 160k -vn audionorm.m4a&#xA;Verifichiamo:&#xA;ffmpeg -hidebanner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - &#xA;...&#xA;   Integrated loudness:&#xA;    I:         -12.5 LUFS&#xA;    Threshold: -22.6 LUFS&#xA;&#xA;  Loudness range:&#xA;    LRA:         4.0 LU&#xA;    Threshold: -32.6 LUFS&#xA;    LRA low:   -15.1 LUFS&#xA;    LRA high:  -11.1 LUFS&#xA;&#xA;  True peak:&#xA;    Peak:       -0.4 dBFS&#xA;...&#xA;Come si vede, sono arrivato al limite, forse un po&#39; troppo, del guadagno che potevo ottenere. Probabimente su dispositivi economici, l&#39;analogico di un brano così potrebbe gracchiare un po&#39;.&#xA;&#xA;Se avessi applicato il default  di  loudnorm, la sonorità sarebbe stata livellata sui -24 LUFS con una soglia true peak pari a -2 dBFS.&#xA;4.2.2. Loudness Normalization dinamica&#xA;Nei casi in cui:&#xA;&#xA;si vuole enfatizzare l&#39;audio di un podcast, di un parlato in generale;&#xA;la dinamica del brano è composta da picchi altissimi e una sonorità media molto bassa (un guadagno statico farebbe cambiare poco o nulla)&#xA;&#xA;con ffmpeg e loudnorm possiamo correggere ogni singolo sample del brano per rendere la dinamica più uniforme.&#xA;&#xA;Per ottenere un risultato ottimale, si deve procedere col dual-pass, in cui ffmpeg nel primo passaggio analizza il file e raccoglie i dati, nel secondo passaggio applica le correzioni puntualmente avendo già conoscenza della dinamica e dei picchi presenti nel file.&#xA;ffmpeg -i &#34;audio.m4a&#34; -filter:a &#34;loudnorm=I=-14:TP=-1.0:printformat=json&#34; -f null -&#xA;Ecco il json risultante dall&#39;analisi. I valori di input sono quelli che forniremo a ffmepg affinché possa impostare il loudness scelto da noi nel miglior modo possibile&#xA;{&#xA;&#x9;&#34;inputi&#34; : &#34;-18.17&#34;,&#xA;&#x9;&#34;inputtp&#34; : &#34;-5.41&#34;,&#xA;&#x9;&#34;inputlra&#34; : &#34;4.20&#34;,&#xA;&#x9;&#34;inputthresh&#34; : &#34;-28.47&#34;,&#xA;&#x9;&#34;outputi&#34; : &#34;-13.36&#34;,&#xA;&#x9;&#34;outputtp&#34; : &#34;-1.00&#34;,&#xA;&#x9;&#34;outputlra&#34; : &#34;4.30&#34;,&#xA;&#x9;&#34;outputthresh&#34; : &#34;-23.50&#34;,&#xA;&#x9;&#34;normalizationtype&#34; : &#34;dynamic&#34;,&#xA;&#x9;&#34;targetoffset&#34; : &#34;-0.64&#34;&#xA;}&#xA;Configurazione ffmpeg.&#xA;ffmpeg -i &#34;audio.m4a&#34; -filter:a &#34;loudnorm=I=-14:TP=-1.0:measuredI=-18.17:measuredTP=-5.41:measuredLRA=4.20:measuredthresh=-23.50:linear=true&#34; -c:a aac -b:a 160k -vn &#34;audionorm.m4a&#34;&#xA;Il compressore/limiter del filtro loudnorm è abbastanza intelligente da schiacciare i picchi affinche il guadagno di volume non produca clipping e alzerà le parti più &#34;deboli&#34;, livellando il suono e alterando la dinamica.&#xA;&#xA;4.2.3. Loudness Normalization statica (rsgain)&#xA;Rsgain permette di applicare un guadagno statico loseless, senza ricodifica, agendo sui metadati del brano con l&#39;applicazione dei tag.&#xA;&#xA;Se da un lato questo metodo ha l&#39;indubbio vantaggio di non alterare fisicamente il file, dall&#39;altro è necessario che il player che eseguirà il brano dovra essere capace di leggere e interpretare i tag. Nel caso precedente, la ricodifica rende il file disponibile per chiunque.&#xA;&#xA;Trattandosi di un guadagno statico, il campo d&#39;applicazione è quello visto per la Peak Normalization, cioè quando si vuole preservare la dinamica del brano, Ma nei casi particolari cui accennavo in precedenza, presenza di picchi altissimi e maggioranza sonorità medie molto basse, anche rsgain non è sufficiente.&#xA;&#xA;Come avevo detto all&#39;inizio, rsgain è una normalizzaziome della sonorità ottenuta agendo sui metadati del brano, applicando dei tag, che così non viene alternato in alcun modo.&#xA;&#xA;Rsgain è l&#39;evoluzione del vecchio mp3gain e come il suo predecessore ha due modalità di lavoro&#xA;&#xA;sul singolo brano (detta é custom)&#xA;su collezioni di brani (detta easy)&#xA;&#xA;La modalità custom è considerato un approccio legacy fatta per intervenire puntualmente sul brano con configurazioni ad-hoc ideali per lo scripting, quella easy, basata su presets, permette di normalizzare intere collezioni di brani che è lo scopo principale di rsgain.&#xA;&#xA;Analisi del file&#xA;rsgain custom -t audio.m4a&#xA;[✔] Scanning &#39;audio.m4a&#39;&#xA;[✔] Container: QuickTime / MOV [mov,mp4,m4a,3gp,3g2,mj2]&#xA;[✔] Stream #0: AAC (Advanced Audio Coding), 44.100 Hz, 2 ch&#xA; 100% [====================================================]&#xA;&#xA;Track: audio.m4a&#xA;  Loudness:   -18.12 LUFS&#xA;  Peak:     0.536630 (-5.41 dB)&#xA;  Gain:         0.12 dB&#xA;il flag -t individua il true peak&#xA;&#xA;Loudness: è la sonorità del brano in LUFS&#xA;Peak: è il true peak, esprime il guadagno che posso ottenere prima di distorcere&#xA;Gain: è il guadagno per arrivare allo standard LUFS di rsgain che è -18&#xA;&#xA;Nel nostro caso, Gain ci dice di diminuire di 0.12 LUFS mentre Peak ci dice che potrei aumentare di 5.41 LUFS&#xA;&#xA;Gain&#xA;rsgain custom -s i -l -13 -c p audio.m4a&#xA;Track: audio.m4a&#xA;  Loudness:   -18.12 LUFS&#xA;  Peak:     0.534149 (-5.45 dB)&#xA;  Gain:         5.12 dB&#xA;&#xA;-s i: scrive il tag&#xA;-l -13: imposta il loudness&#xA;-c p: protezione clipping&#xA;&#xA;Portando il loudness a -13 è come se avessi aumentato il volume di 5,12 dB mantenendo un cuscinetto di -0.33 dB (differenza fra peak e gain).&#xA;&#xA;Se provassi a spingere di più, il flag -c p impedisce al suono di distorcere.&#xA;rsgain custom -s i -l -10 -c p audio.m4a&#xA;Track: audio.m4a&#xA;  Loudness:   -18.12 LUFS&#xA;  Peak:     0.534149 (-5.45 dB)&#xA;  Gain:         5.45 dB  (adjusted to prevent clipping)&#xA;&#34;(adjusted to prevent clipping)&#34; è la conferma che la protezione anti-clipping è entrata in azione.&#xA;&#xA;Se non ci fosse stata:&#xA;rsgain custom -s i -l -10 audio.m4a&#xA;Track: audio.m4a&#xA;  Loudness:   -18.12 LUFS&#xA;  Peak:     0.534149 (-5.45 dB)&#xA;  Gain:         8.12 dB&#xA;La differenza fra peak e gain indica un&#39;evidente distorsione.&#xA;&#xA;Esempio di esecuzione del brano sfruttando il replaygain:&#xA;mpv --replaygain=track audio.m4a&#xA;Senza il flag --replaygain=track, il brano verrebbe letto normalmente.&#xA;&#xA;Cancellazione del tag&#xA;Basta cancellare il tag per riportare tutto alla normalità&#xA;verifico la presenza del tag prima&#xA;ffprobe -hidebanner -i &#34;audio.m4a&#34; 2  &amp;1 | grep -i &#34;replaygain&#34;&#xA;REPLAYGAINTRACKGAIN: 8.12 dB&#xA;REPLAYGAINTRACKPEAK: 0.534149&#xA;replaygain: track gain - 8.120000, track peak - 0.000012, album gain - unknown, album peak - unknown,&#xA;&#xA;cancello il tag&#xA;rsgain custom -s d audio.m4a&#xA;&#xA;verifico che il tag non si ci sia più&#xA;ffprobe -hidebanner -i &#34;audio.m4a&#34; 2  &amp;1 | grep -i &#34;replaygain&#34;&#xA;&#xA;Un altro modo più compatto per verificare la presenza del tag:&#xA;ffprobe -i &#34;audio.m4a&#34; -showentries formattags=REPLAYGAINTRACKGAIN -v quiet -of csv=&#34;p=0&#34;&#xA;Se c&#39;è il tag, mostra solo il gain.&#xA;&#xA;Easy mode&#xA;I flag impostati nella modalità custom nella modalitò easy sono affidati ad un file di configurazione.&#xA;&#xA;Su Gnu/Linux i file di default si trovano in /usr/share/rsgain/presets e sono 4&#xA;&#xA;default.ini&#xA;ebur128.ini&#xA;loudgain.ini&#xA;no\album.ini&#xA;&#xA;C&#39;è una sezione globla e delle sezioni specifiche per tipo di file.&#xA;&#xA;L&#39;override di queste configurazioni o la creazione di nuove, si fa in:&#xA;&#xA;~/.config/rsgain/presets&#xA;&#xA;e per la corrispondenza campi - flag custom vi rimando alla documentazione: https://github.com/complexlogic/rsgain?tab=readme-ov-file#scan-presets&#xA;&#xA;Una volta deciso il preset che fa per noi, basta chiamare rsgain su una directory in questo modo:&#xA;rsgain easy -s nomepreset pathalbum&#xA;rsgain farà la scansione e applicherà massivamente le configurazioni che potranno consistere per es.:&#xA;&#xA;nell&#39;applicazione di un loudness a tutti i brani per uniformare la sonorità;&#xA;nella cancellazione di tutti i tag;&#xA;nell&#39;analisi dei brani;&#xA;ecc.&#xA;&#xA;Esempio di file di configurazione per una scansione&#xA;[Global]&#xA;TagMode=s&#xA;Album=true&#xA;TargetLoudness=-18&#xA;ClipMode=p&#xA;MaxPeakLevel=-1.0&#xA;TruePeak=true&#xA;Lowercase=false&#xA;ID3v2Version=keep&#xA;OpusMode=d&#xA;PreserveMtimes=false&#xA;DualMono=false&#xA;In questo modo rsgain produrrà un&#39;analisi in modalità &#34;album&#34; per tutta la collezione, il gain da applicare all&#39;album e  una sintesi sulla media dei valori di picco ottenuti.&#xA;rsgain easy -p scan pathalbum &#xA;...&#xA;Track: pathalbum/track1&#xA;  Loudness:   -17.80 LUFS&#xA;  Peak:     0.743221 (-2.58 dB)&#xA;  Gain:        -0.20 dB&#xA;&#xA;Track: pathalbum/track2&#xA;  Loudness:   -17.81 LUFS&#xA;  Peak:     0.790007 (-2.05 dB)&#xA;  Gain:        -0.19 dB&#xA;&#xA;Track: pathalbum/track3&#xA;  Loudness:   -17.47 LUFS&#xA;  Peak:     0.834655 (-1.57 dB)&#xA;  Gain:        -0.53 dB&#xA;&#xA;...&#xA;&#xA;Album:&#xA;  Loudness:   -16.51 LUFS&#xA;  Peak:     0.991804 (-0.07 dB)&#xA;  Gain:        -1.49 dB&#xA;&#xA;Scanning Complete&#xA;Time Elapsed:      00:00:27&#xA;Files Scanned:     18&#xA;Clip Adjustments:  0 (0.0% of files)&#xA;Average Loudness:  -16.61 LUFS&#xA;Average Gain:      -1.39 dB&#xA;Average Peak:      0.823503 (-1.69 dB)&#xA;Negative Gains:    16 (88.9% of files)&#xA;Positive Gains:    2 (11.1% of files)&#xA;L&#39;ultima sezione, &#34;Album&#34;, mi dà le informazioni sul guadagno da applicare, in questo caso poco o nulla perché sono brani già normalizzati,.&#xA;&#xA;Con un altro presets, ad es. myGain.ini, posso normalizzare tutto l&#39;album in colpo solo.&#xA;&#xA;rsgain easy -p myGain pathalbum&#xA;In altre parole, tutto ciò che la modalità custom affida allo scripting, ora viene automatizzata dalla modalità easy.&#xA;&#xA;small Riferimenti:**&#xA;&#xA;https://ffmpeg.org/ffmpeg-filters.html#loudnorm&#xA;https://ffmpeg.org/ffmpeg-filters.html#toc-volumedetect&#xA;https://github.com/complexlogic/rsgain&#xA;/small&#xA;&#xA;#ffmpeg #rsgain #loudness #loudnorm]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://pixelfed.uno/storage/m/_v2/489827599091373610/31410d826-759a86/dW3U92YRrKI4/EQCqOi56fpS0p9w4OdD2VsE3ZG4W8j3KZvbK0TWZ.jpg" alt="normalizzazione">
Quando si deve aumentare il volume di una traccia audio, si deve ricorrere a ad un&#39;operazione di “<strong>normalizzazione</strong>”.
</p>
<ul><li><a href="#1-cos-%C3%A8-la-normalizzazione" rel="nofollow">1. Cos’è la normalizzazione</a></li>
<li><a href="#2-come-misurare-il-picco" rel="nofollow">2. Come misurare il “picco”?</a></li>
<li><a href="#3-come-leggere-correttamente-questa-misura" rel="nofollow">3. Come leggere correttamente questa misura</a>
<ul><li><a href="#3-1-perch%C3%A9-usare-il-loudness-invece-di-rms" rel="nofollow">3.1. Perché usare il loudness invece di RMS?</a></li></ul></li>
<li><a href="#4-come-ti-normalizzo-il-file" rel="nofollow">4. Come ti normalizzo il file</a>
<ul><li><a href="#4-1-peak-normalization" rel="nofollow">4.1. Peak normalization</a></li>
<li><a href="#4-2-loudness-normalization" rel="nofollow">4.2. Loudness Normalization</a>
<ul><li><a href="#4-2-1-loudness-normalization-statica-ffmpeg" rel="nofollow">4.2.1. Loudness Normalization statica (ffmpeg)</a></li>
<li><a href="#4-2-2-loudness-normalization-dinamica" rel="nofollow">4.2.2. Loudness Normalization dinamica</a></li>
<li><a href="#4-2-3-loudness-normalization-statica-rsgain" rel="nofollow">4.2.3. Loudness Normalization statica (rsgain)</a></li></ul></li></ul></li></ul>

<h2 id="1-cos-è-la-normalizzazione">1. Cos&#39;è la normalizzazione</h2>

<p>La normalizzazione è un&#39;operazione lineare che consiste nell&#39;analisi del file audio, nel calcolare la differenza (offset) fra il volume attuale ed un volume target, nell&#39;applicare una correzione di guadagno (Gain).</p>

<p>La normalizzazione può essere distinta in base  al “come” e al “dove”.</p>

<p><strong>Il “come”</strong>
La normalizzazione classica si basa sui picchi. Cerca il punto più alto della forma d&#39;onda e lo porta a un valore massimo (es. 0 dB). Ignora la percezione umana; un brano con un singolo “click” molto forte risulterà comunque silenzioso perché quel picco blocca l&#39;aumento del volume.</p>

<p>La normalizzazione più moderna si basa sui <strong>LUFS</strong>, ossia su come, <strong>mediamente</strong>, l&#39;audio viene effettivamente percepito dall&#39;orecchio umano (psicoacustica). Porta l&#39;intero brano a un livello di pressione sonora media costante, rendendo l&#39;ascolto uniforme tra diverse tracce.</p>

<p><strong>Il “dove”</strong>
Quando si normalizza una traccia audio si può scegliere di farla modificando ogni singolo sample della traccia audio oppure di agire sui metadati.</p>

<p>Nel primo caso il file originale viene modificato (ricodifica quasi sempre lossy), nel secondo viene lasciato inalterato.</p>

<p>Altro fattore di cui tenere conto è che una normalizzazione lossy funziona su ogni player, una normalizzazione che agisce sui metadati funziona solo se il player è in grado di leggerli.</p>

<p>Possiamo fare quindi una prima distinzione:</p>
<ol><li>normalizzazione di picco (<strong>RMS</strong>) o <i>Peak Normalization</i>: applicazione di un <strong>guadagno statico</strong> (RMS) in modalità lossy: non altera la dinamica del brano, richiede una ricodifica;</li>
<li>normalizzazione della sonorità (<strong>LUFS</strong>) o <i>Loudness Normalization</i>:
<ol><li>applicazione di un <strong>guadagno statico</strong> (LUFS) in modalità lossy: non altera la dinamica del brano, richiede una ricodifica;</li>
<li>applicazione di un <strong>guadagno statico</strong> (LUFS) basato su tag: non altera la dinamica del brano, lascia il file inalterato (rsgain);</li>
<li>agisce con un compressore / limiter in modalità lossy: altera la dinamica del brano, richiede una ricodifica.</li></ol></li></ol>

<p>A questo punto la domanda diventa: quale scegliere?</p>

<p>Per quel che mi riguarda, la salomonica risposta è: dipende.</p>

<p>Come si può immaginare, non c&#39;è una risposta definitiva ma dipende dalla qualità della traccia, dal contesto ecc.</p>

<h2 id="2-come-misurare-il-picco">2. Come misurare il “picco”?</h2>

<p>C&#39;è bisogno di un elemento misurabile che mi permetta di capire come agire con la normalizzazione.</p>

<p><strong>RMS (Root Mean Square)</strong>: è un calcolo matematico asciutto su quanto sia potente elettricamente/digitalmente il segnale audio. È utile per capire l&#39;energia costante, ma non tiene conto del fatto che l&#39;orecchio umano è più sensibile ad alcune frequenze rispetto ad altre.</p>

<p><strong>LUFS (Loudness Units Full Scale)</strong>: È lo standard moderno (EBU R128). Simula l&#39;udito umano applicando dei filtri che pesano maggiormente le frequenze medie.</p>

<p>Per misurare il picco RMS posso ricorrere ad <strong>ffmpeg</strong></p>

<pre><code class="language-bash">ffmpeg -hide_banner -i &#34;audio.m4a&#34; -filter:a &#34;volumedetect&#34; -f null -
...
[...] n_samples: 18522112
[...] mean_volume: -20.3 dB
[...] max_volume: -5.4 dB
[...] histogram_5db: 40
[...] histogram_6db: 1436
[...] histogram_7db: 6443
[...] histogram_8db: 18606
...
</code></pre>

<p>che mi mostrerà:</p>
<ul><li>il numero dei samples di cui si compone la traccia</li>
<li>il volume medio (<em>mean_volume</em>)</li>
<li>il picco (<em>max_volume</em>)</li></ul>

<p>Il picco mi dice di quanto possa alzare il volume (fino al limite fisico di 0dB) staticamente senza causare distorsioni.</p>

<p>La differenza fra volume medio e picco mi dà informazioni sulla dinamica del brano. Maggiore è la differenza, maggiore è la dinamica. Tipicamente:</p>
<ul><li>valori &lt; 5 sono tipici della musica dance, forte, uniforme, e molto compressa.</li>
<li>valori fra 5 e 15 sono tipici di brani pop-rock, ben bilanciati</li>
<li>valori &gt; 15 sono attribuibili a brani di musica classica, jazz, con una dinamica ricca.</li></ul>

<p>Per misurare il loudness, sempre con ffmpeg:</p>

<pre><code class="language-bash">ffmpeg -hide_banner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - 
...
 Integrated loudness:
    I:         -18.1 LUFS
    Threshold: -28.4 LUFS

  Loudness range:
    LRA:         4.1 LU
    Threshold: -38.3 LUFS
    LRA low:   -21.2 LUFS
    LRA high:  -17.1 LUFS

  True peak:
    Peak:       -5.4 dBFS
</code></pre>

<p>La misurazione è più articolata rispetto alla precedente.</p>

<p>FFmpeg innanzitutto mostra due sezioni: <strong>Integrated Loudness</strong>, rappresentante il <strong>volume medio</strong> complessivo del file e la <strong>Loudness Range</strong> che mi descrive la dinamica del brano come differenza di volume fra le parti più silenziose e quelle più rumorose.</p>
<ol><li>Sezione <strong>Integrated loudness</strong>:
<ul><li><strong>I</strong>: è il valore più importante. È il volume medio percepito dell&#39;intero brano (come si può vedere, diverso rispetto all&#39;RMS di prima. Il primo è pura potenza digitale, il secondo è <strong>volume percepito</strong>).</li>
<li><strong>Threshold</strong>: è la soglia usata per evitare che i silenzi abbassino artificialmente la media del volume. L&#39;algoritmo ignora tutto ciò che sta sotto questa soglia nel calcolo dell&#39;Integrated Loudness.</li></ul></li>
<li>Sezione <strong>Loudness range</strong>:
<ul><li><strong>LRA</strong>: è un indice della variazione dinamica del brano. Più è basso, più il suono tende ad essere uniforme e probabilmente compresso</li>
<li><strong>Threshold</strong>: come prima, è la soglia oltre la quale i suoni vengono ignorati nel calcolo del range dinamico.</li>
<li><strong>LRA Low</strong>: indica il limite inferiore del loudness</li>
<li><strong>LRA High</strong>: indica il limite superiore<br>
quindi <em>LRA = LRA High – LRA Low</em></li></ul></li>
<li>Sezione <strong>True peak</strong>:
<ul><li><strong>Peak</strong>: Simile al <em>max_volume</em> dell&#39;RMS, indica il picco <strong>reale</strong> del brano in termini di sonorità.</li></ul></li></ol>

<p>Un altro modo, forse meno pratico ma decisamente più scenografico, per analizzare un file audio è questo:</p>

<pre><code class="language-bash">ffplay -f lavfi -i &#34;amovie=audio.m4a,ebur128=video=1:meter=18 [out0][out1]&#34;
</code></pre>

<p>Disegna un grafico dell&#39;onda sonora in tempo reale.</p>

<h2 id="3-come-leggere-correttamente-questa-misura">3. Come leggere correttamente questa misura</h2>

<p>L&#39;<strong>integrated loudness</strong> mi dice qual è il volume <strong>medio</strong> del brano.
<strong>True peak</strong> mi dice di quanto posso alzare prima di distorcere.
Queste sono le due informazioni cruciali sufficienti per applicare un <strong>guadagno statico</strong> senza fare danni.</p>

<p>I valori <strong>High</strong> e <strong>Low</strong> del <strong>Loudness Range</strong>, che racchiudono asintoticamente il brano, tornano utili quando bisogna agire sulla dinamica.</p>

<p>Notare che <strong>Integrated loudness</strong> è sempre compreso fra <strong>LRA Low</strong> e <strong>LRA High</strong>.</p>

<h3 id="3-1-perché-usare-il-loudness-invece-di-rms">3.1. Perché usare il loudness invece di RMS?</h3>

<p>L&#39;RMS è un calcolo puramente matematico che non tiene conto del fatto che l&#39;orecchio umano è molto più sensibile alle frequenze medie che non ai bassi estemi e agli acuti altissimi.</p>

<p> A questo provvede il LUFS che è un&#39;evoluzione dell&#39;RMS perché include dei <strong>filtri di ponderazione</strong> che, prima di calcolare la media, esaltano le frequenze medie attenuando quelle basse.</p>

<p>La conseguenza è che se agisco sul volume dei brani prendendo LUFS come riferimento, questi suoneranno tutti allo stesso volume. Se considerassi un adeguamento basato su RMS, i brani con più bassi sembreranno avere meno volume di quelli con frequenze medie più marcate.</p>

<h2 id="4-come-ti-normalizzo-il-file">4. Come ti normalizzo il file</h2>

<p>La scelta fra una normalizzazione di picco e una di volume (loudness) è abbastanza semplice in realtà.</p>

<p>A parte poche eccezioni in cui può avere senso avere RMS come riferimento, è sempre preferibile una normalizzazione della sonorità.</p>

<p>Quest&#39;ultima può essere fatta modificando solo i metadati o agendo chirurgicamente sul file ricodificandolo.</p>

<h3 id="4-1-peak-normalization">4.1. Peak normalization</h3>

<p>Una volta noti i dati di <em>Max Volume</em> e <em>Mean Volume</em> visti in precedenza, la normalizzazione è piuttosto semplice.</p>

<p>Supponendo <code>Max Volume = 6dB</code></p>

<pre><code class="language-bash">ffmpeg -i audio.m4a -filter:a &#34;volume=6dB&#34; -c:a aac -b:a 192k audio_normalized.m4a
</code></pre>

<p>Dovendo ricodificare, scelgo un bitrate piuttosto alto per limitare la perdita fisiologica di una ricodifica lossy.</p>

<p>Come si può immaginare, è una aggiunta lineare secca a tutta la traccia a cui aumento solo la potenza digitale senza tenere conto della percezione sonora.</p>

<p>Piccola nota: Conviene scegliere un valore che si avvicini, ma non equivalga, al limite di 0 dB perché altrimenti FFmpeg taglierà brutalmente le creste dell&#39;onda sonora che superano lo zero, creando quella tipica distorsione metallica grattata chiamata <strong>clipping</strong>.</p>

<h3 id="4-2-loudness-normalization">4.2. Loudness Normalization</h3>

<p>La normalizzazione di volume, in base alla nostra scelta di alterare o meno la dinamica del brano, può essere fatta come detto applicando:</p>
<ul><li>un guadagno statico LUFS (lossy)</li>
<li>un guadagno statico LUFS sui metadati (non lossy)</li>
<li>compressore / limiter (sempre lossy)</li></ul>

<p>Il guadagno statico, quello con i metadati, avverrà con <strong>rsgain</strong>.</p>

<p>La normalizzazione con perdita di qualità (lossy) avverrà con ffmpeg usando il filtro <strong>loudnorm</strong> che dispone di un compressore/limiter piuttosto efficace.</p>

<p>Questo filtro è un processore dinamico (dual-pass o single-pass). Non si limita ad alzare il volume; se trova una parte troppo forte, può comprimere leggermente solo quella parte per permettere al resto della canzone di suonare più forte.</p>

<p><code>loudnorm</code> porta il loudness di default a -24 LUFS che è lo standard per il broadcast televisivo.</p>

<p>I colossi dello streaming applicano automaticamente un loudness decisamente più marcato, salvo poche eccezioni, non si discostano da -14 LUFS. Ad es. Youtube, Amazon Music, Spotify, Soundcloud viaggiano mediamente su -14 LUFS, Deezer -15, Apple Music -16.</p>

<p>Si può verificare facilmente, come sappiamo fare, come un audio presente su una di queste piattaforme, abbia uno dei loudness indicati.</p>

<h4 id="4-2-1-loudness-normalization-statica-ffmpeg">4.2.1. Loudness Normalization statica (ffmpeg)</h4>

<p>Riprendiamo l&#39;esempio di prima.</p>

<pre><code class="language-bash">ffmpeg -hide_banner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - 
...
 Integrated loudness:
    I:         -18.1 LUFS
    Threshold: -28.4 LUFS

  Loudness range:
    LRA:         4.1 LU
    Threshold: -38.3 LUFS
    LRA low:   -21.2 LUFS
    LRA high:  -17.1 LUFS

  True peak:
    Peak:       -5.4 dBFS
</code></pre>

<p>Con <code>ffmpeg</code> e <code>loudnorm</code> in modalità <strong>single-pass</strong>, posso applicare un guadagno statico 5.4 dBFS, con un true peak di -1 (Il default è -2), per arrivare, da -18.1 LUFS, a -13.0 LUFS senza distorsioni.</p>

<pre><code class="language-bash">ffmpeg -i audio.m4a -filter:a &#34;loudnorm=I=-12.7:TP=-1.0&#34; -c:a aac -b:a 160k -vn audio_norm.m4a
</code></pre>

<p>Verifichiamo:</p>

<pre><code class="language-bash">ffmpeg -hide_banner -i &#34;audio.m4a&#34; -filter:a &#34;ebur128=peak=true&#34; -f null - 
...
   Integrated loudness:
    I:         -12.5 LUFS
    Threshold: -22.6 LUFS

  Loudness range:
    LRA:         4.0 LU
    Threshold: -32.6 LUFS
    LRA low:   -15.1 LUFS
    LRA high:  -11.1 LUFS

  True peak:
    Peak:       -0.4 dBFS
...
</code></pre>

<p>Come si vede, sono arrivato al limite, forse un po&#39; troppo, del guadagno che potevo ottenere. Probabimente su dispositivi economici, l&#39;analogico di un brano così potrebbe gracchiare un po&#39;.</p>

<p>Se avessi applicato il default  di  <code>loudnorm</code>, la sonorità sarebbe stata livellata sui -24 LUFS con una soglia true peak pari a -2 dBFS.</p>

<h4 id="4-2-2-loudness-normalization-dinamica">4.2.2. Loudness Normalization dinamica</h4>

<p>Nei casi in cui:</p>
<ul><li>si vuole enfatizzare l&#39;audio di un podcast, di un parlato in generale;</li>
<li>la dinamica del brano è composta da picchi altissimi e una sonorità media molto bassa (un guadagno statico farebbe cambiare poco o nulla)</li></ul>

<p>con <code>ffmpeg</code> e <code>loudnorm</code> possiamo correggere ogni singolo sample del brano per rendere la dinamica più uniforme.</p>

<p>Per ottenere un risultato ottimale, si deve procedere col <strong>dual-pass</strong>, in cui ffmpeg nel primo passaggio analizza il file e raccoglie i dati, nel secondo passaggio applica le correzioni puntualmente avendo già conoscenza della dinamica e dei picchi presenti nel file.</p>

<pre><code class="language-bash">ffmpeg -i &#34;audio.m4a&#34; -filter:a &#34;loudnorm=I=-14:TP=-1.0:print_format=json&#34; -f null -
</code></pre>

<p>Ecco il json risultante dall&#39;analisi. I valori di input sono quelli che forniremo a ffmepg affinché possa impostare il loudness scelto da noi nel miglior modo possibile</p>

<pre><code class="language-json">{
	&#34;input_i&#34; : &#34;-18.17&#34;,
	&#34;input_tp&#34; : &#34;-5.41&#34;,
	&#34;input_lra&#34; : &#34;4.20&#34;,
	&#34;input_thresh&#34; : &#34;-28.47&#34;,
	&#34;output_i&#34; : &#34;-13.36&#34;,
	&#34;output_tp&#34; : &#34;-1.00&#34;,
	&#34;output_lra&#34; : &#34;4.30&#34;,
	&#34;output_thresh&#34; : &#34;-23.50&#34;,
	&#34;normalization_type&#34; : &#34;dynamic&#34;,
	&#34;target_offset&#34; : &#34;-0.64&#34;
}
</code></pre>

<p>Configurazione ffmpeg.</p>

<pre><code class="language-bash">ffmpeg -i &#34;audio.m4a&#34; -filter:a &#34;loudnorm=I=-14:TP=-1.0:measured_I=-18.17:measured_TP=-5.41:measured_LRA=4.20:measured_thresh=-23.50:linear=true&#34; -c:a aac -b:a 160k -vn &#34;audio_norm.m4a&#34;
</code></pre>

<p>Il compressore/limiter del filtro loudnorm è abbastanza intelligente da schiacciare i picchi affinche il guadagno di volume non produca clipping e alzerà le parti più “deboli”, livellando il suono e alterando la dinamica.</p>

<h4 id="4-2-3-loudness-normalization-statica-rsgain">4.2.3. Loudness Normalization statica (rsgain)</h4>

<p>Rsgain permette di applicare un guadagno statico loseless, senza ricodifica, agendo sui metadati del brano con l&#39;applicazione dei tag.</p>

<p>Se da un lato questo metodo ha l&#39;indubbio vantaggio di non alterare fisicamente il file, dall&#39;altro è necessario che il player che eseguirà il brano dovra essere capace di leggere e interpretare i tag. Nel caso precedente, la ricodifica rende il file disponibile per chiunque.</p>

<p>Trattandosi di un guadagno statico, il campo d&#39;applicazione è quello visto per la Peak Normalization, cioè quando si vuole preservare la dinamica del brano, Ma nei casi particolari cui accennavo in precedenza, presenza di picchi altissimi e maggioranza sonorità medie molto basse, anche rsgain non è sufficiente.</p>

<p>Come avevo detto all&#39;inizio, rsgain è una normalizzaziome della sonorità ottenuta agendo sui metadati del brano, applicando dei tag, che così non viene alternato in alcun modo.</p>

<p>Rsgain è l&#39;evoluzione del vecchio mp3gain e come il suo predecessore ha due modalità di lavoro</p>
<ul><li>sul singolo brano (detta é <strong>custom</strong>)</li>
<li>su collezioni di brani (detta <strong>easy</strong>)</li></ul>

<p>La modalità <strong>custom</strong> è considerato un approccio legacy fatta per intervenire puntualmente sul brano con configurazioni ad-hoc ideali per lo scripting, quella <strong>easy</strong>, basata su presets, permette di normalizzare intere collezioni di brani che è lo scopo principale di rsgain.</p>

<p><strong>Analisi del file</strong></p>

<pre><code class="language-bash">rsgain custom -t audio.m4a
[✔] Scanning &#39;audio.m4a&#39;
[✔] Container: QuickTime / MOV [mov,mp4,m4a,3gp,3g2,mj2]
[✔] Stream #0: AAC (Advanced Audio Coding), 44.100 Hz, 2 ch
 100% [====================================================]

Track: audio.m4a
  Loudness:   -18.12 LUFS
  Peak:     0.536630 (-5.41 dB)
  Gain:         0.12 dB
</code></pre>

<p>il flag <code>-t</code> individua il true peak</p>
<ul><li><strong>Loudness</strong>: è la sonorità del brano in LUFS</li>
<li><strong>Peak</strong>: è il true peak, esprime il guadagno che posso ottenere prima di distorcere</li>
<li><strong>Gain</strong>: è il guadagno per arrivare allo standard LUFS di rsgain che è -18</li></ul>

<p>Nel nostro caso, Gain ci dice di diminuire di 0.12 LUFS mentre Peak ci dice che potrei aumentare di 5.41 LUFS</p>

<p><strong>Gain</strong></p>

<pre><code class="language-bash">rsgain custom -s i -l -13 -c p audio.m4a
Track: audio.m4a
  Loudness:   -18.12 LUFS
  Peak:     0.534149 (-5.45 dB)
  Gain:         5.12 dB
</code></pre>
<ul><li><code>-s i</code>: scrive il tag</li>
<li><code>-l -13</code>: imposta il loudness</li>
<li><code>-c p</code>: protezione clipping</li></ul>

<p>Portando il loudness a -13 è come se avessi aumentato il volume di 5,12 dB mantenendo un cuscinetto di -0.33 dB (differenza fra peak e gain).</p>

<p>Se provassi a spingere di più, il flag <code>-c p</code> impedisce al suono di distorcere.</p>

<pre><code class="language-bash">rsgain custom -s i -l -10 -c p audio.m4a
Track: audio.m4a
  Loudness:   -18.12 LUFS
  Peak:     0.534149 (-5.45 dB)
  Gain:         5.45 dB  (adjusted to prevent clipping)
</code></pre>

<p>“<em>(adjusted to prevent clipping)</em>” è la conferma che la protezione anti-clipping è entrata in azione.</p>

<p>Se non ci fosse stata:</p>

<pre><code class="language-bash">rsgain custom -s i -l -10 audio.m4a
Track: audio.m4a
  Loudness:   -18.12 LUFS
  Peak:     0.534149 (-5.45 dB)
  Gain:         8.12 dB
</code></pre>

<p>La differenza fra peak e gain indica un&#39;evidente distorsione.</p>

<p><strong>Esempio di esecuzione del brano sfruttando il replaygain</strong>:</p>

<pre><code class="language-bash">mpv --replaygain=track audio.m4a
</code></pre>

<p>Senza il flag <code>--replaygain=track</code>, il brano verrebbe letto normalmente.</p>

<p><strong>Cancellazione del tag</strong>
Basta cancellare il tag per riportare tutto alla normalità</p>

<pre><code class="language-bash"># verifico la presenza del tag prima
ffprobe -hide_banner -i &#34;audio.m4a&#34; 2&gt;&amp;1 | grep -i &#34;replaygain&#34;
REPLAYGAIN_TRACK_GAIN: 8.12 dB
REPLAYGAIN_TRACK_PEAK: 0.534149
replaygain: track gain - 8.120000, track peak - 0.000012, album gain - unknown, album peak - unknown,

# cancello il tag
rsgain custom -s d audio.m4a

# verifico che il tag non si ci sia più
ffprobe -hide_banner -i &#34;audio.m4a&#34; 2&gt;&amp;1 | grep -i &#34;replaygain&#34;
**
</code></pre>

<p>Un altro modo più compatto per verificare la presenza del tag:</p>

<pre><code>ffprobe -i &#34;audio.m4a&#34; -show_entries format_tags=REPLAYGAIN_TRACK_GAIN -v quiet -of csv=&#34;p=0&#34;
</code></pre>

<p>Se c&#39;è il tag, mostra solo il gain.</p>

<p><strong>Easy mode</strong>
I flag impostati nella modalità custom nella modalitò easy sono affidati ad un file di configurazione.</p>

<p>Su Gnu/Linux i file di default si trovano in <code>/usr/share/rsgain/presets</code> e sono 4</p>
<ul><li>default.ini</li>
<li>ebur128.ini</li>
<li>loudgain.ini</li>
<li>no_album.ini</li></ul>

<p>C&#39;è una sezione globla e delle sezioni specifiche per tipo di file.</p>

<p>L&#39;override di queste configurazioni o la creazione di nuove, si fa in:</p>

<p><code>~/.config/rsgain/presets</code></p>

<p>e per la corrispondenza campi – flag custom vi rimando alla documentazione: <a href="https://github.com/complexlogic/rsgain?tab=readme-ov-file#scan-presets" rel="nofollow">https://github.com/complexlogic/rsgain?tab=readme-ov-file#scan-presets</a></p>

<p>Una volta deciso il preset che fa per noi, basta chiamare rsgain su una directory in questo modo:</p>

<pre><code class="language-bash">rsgain easy -s &lt;nome_preset&gt; &lt;path_album&gt;
</code></pre>

<p>rsgain farà la scansione e applicherà massivamente le configurazioni che potranno consistere per es.:</p>
<ul><li>nell&#39;applicazione di un loudness a tutti i brani per uniformare la sonorità;</li>
<li>nella cancellazione di tutti i tag;</li>
<li>nell&#39;analisi dei brani;</li>
<li>ecc.</li></ul>

<p><strong>Esempio di file di configurazione per una scansione</strong></p>

<pre><code>[Global]
TagMode=s
Album=true
TargetLoudness=-18
ClipMode=p
MaxPeakLevel=-1.0
TruePeak=true
Lowercase=false
ID3v2Version=keep
OpusMode=d
PreserveMtimes=false
DualMono=false
</code></pre>

<p>In questo modo rsgain produrrà un&#39;analisi in modalità “<strong>album</strong>” per tutta la collezione, il gain da applicare all&#39;album e  una sintesi sulla media dei valori di picco ottenuti.</p>

<pre><code class="language-bash">rsgain easy -p scan &lt;path_album&gt; 
...
Track: &lt;path_album&gt;/track_1
  Loudness:   -17.80 LUFS
  Peak:     0.743221 (-2.58 dB)
  Gain:        -0.20 dB


Track: &lt;path_album&gt;/track_2
  Loudness:   -17.81 LUFS
  Peak:     0.790007 (-2.05 dB)
  Gain:        -0.19 dB


Track: &lt;path_album&gt;/track_3
  Loudness:   -17.47 LUFS
  Peak:     0.834655 (-1.57 dB)
  Gain:        -0.53 dB

...

Album:
  Loudness:   -16.51 LUFS
  Peak:     0.991804 (-0.07 dB)
  Gain:        -1.49 dB


Scanning Complete
Time Elapsed:      00:00:27
Files Scanned:     18
Clip Adjustments:  0 (0.0% of files)
Average Loudness:  -16.61 LUFS
Average Gain:      -1.39 dB
Average Peak:      0.823503 (-1.69 dB)
Negative Gains:    16 (88.9% of files)
Positive Gains:    2 (11.1% of files)
</code></pre>

<p>L&#39;ultima sezione, “<strong>Album</strong>”, mi dà le informazioni sul guadagno da applicare, in questo caso poco o nulla perché sono brani già normalizzati,.</p>

<p>Con un altro presets, ad es. <code>myGain.ini</code>, posso normalizzare tutto l&#39;album in colpo solo.</p>

<pre><code>rsgain easy -p myGain &lt;path_album&gt;
</code></pre>

<p>In altre parole, tutto ciò che la modalità <strong>custom</strong> affida allo scripting, ora viene automatizzata dalla modalità <strong>easy</strong>.</p>

<p><small> <strong>Riferimenti:</strong></p>
<ul><li><a href="https://ffmpeg.org/ffmpeg-filters.html#loudnorm" rel="nofollow">https://ffmpeg.org/ffmpeg-filters.html#loudnorm</a></li>
<li><a href="https://ffmpeg.org/ffmpeg-filters.html#toc-volumedetect" rel="nofollow">https://ffmpeg.org/ffmpeg-filters.html#toc-volumedetect</a></li>
<li><a href="https://github.com/complexlogic/rsgain" rel="nofollow">https://github.com/complexlogic/rsgain</a>
</small></li></ul>

<p><a href="/aytin/tag:ffmpeg" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">ffmpeg</span></a> <a href="/aytin/tag:rsgain" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">rsgain</span></a> <a href="/aytin/tag:loudness" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">loudness</span></a> <a href="/aytin/tag:loudnorm" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">loudnorm</span></a></p>
]]></content:encoded>
      <guid>https://noblogo.org/aytin/come-aumentare-il-volume-di-una-traccia-audio</guid>
      <pubDate>Mon, 13 Apr 2026 15:03:39 +0000</pubDate>
    </item>
  </channel>
</rss>