Acc, trovato un altro bug... ;) su "Output format" dice "uncoMMpressed" pcm... :pp
Printable View
Acc, trovato un altro bug... ;) su "Output format" dice "uncoMMpressed" pcm... :pp
Per quanto riguarda il funzionamento mi pare tutto OK!!! OTTIMO LAVORO MARCO!!!
piccolo errore anche da me (non ci avrei mai fatto caso....):
Flac (compresSione media)
flac (compresSione massima)
@Paolo come si usa il parametro loudness ? praticamento mettendo gain a 0 e aggiungendo il parametro loudness - 6 sostituisce il gain ma il secondo parametro?
Sei sicuro lo faccia solo al cambio di release e NON tutte le volte che fai ripartire il plugin (o LMS)? Mi pare sia un problema correlato ai valori binari nelle preferenze, 1= vero 0 = falso ma anche 'null' ed 'inesistente' = falso, quindi, quando il valore di default è 'vero' - in fase di inizializzazione non distingue e se risulta falso ripropone vero. Era così anche per il Dithering.
Soluzione rapida, metto il default a falso.
I 'ditoni' colpiscono ancora... Ovunque non ci sia un controllo ortografico/sintattico è certo che mi succeda. A parziale discolpa porto la 'distribuzione casuale' degli errori, il che dovrebbe moderare la componente equina meno nobile della mia multiforme natura, mentre conferma la mia palese ovinità manuale e, purtroppo, la definitiva perdita delle capacità visive da rapace, (avevo 11/10...) Chiedo venia.
Sistemati entrambi , verranno rilasciati in una prossima release di patch (1.1.02).
standing ovation per Marco... :)
salvo errori ed omissioni, per quanto ho capito... provo a spiegarlo. Ma, per cominciare, facciamo prima un passo indietro. :lokaro
Cos'è il "loudness", e perché è utile?
Si è scoperto (da un bel pezzo) che la "risposta in frequenza" dell'udito umano non è invariante rispetto alla pressione sonora ("intensità" dei suoni).
In parole povere questo vuol dire che, se registriamo e riproduciamo un suono "complesso", che comprende frequenze sparse su tutto lo spettro udibile (posto di avere un sistema di registrazione e riproduzione "perfetti", cioè che non introducono distorsioni né alterazioni della risposta in frequenza, ecc), lo percepiremo come "uguale" all'originale se e solo se lo riproduciamo con la stessa identica "intensità" dell'originale.
Se invece lo riascoltiamo ad un "volume" diverso, più basso (o più alto) dell'originale, il suono ci apparirà diverso.
Questa dipendenza tra "risposta in frequenza" ed intensità sonora è stata misurata e standardizzata in quelle che sono dette "curve isofoniche" (o diagramma di uguale intensità sonora).
La funzione del "loudness" è quella di introdurre una "equalizzazione inversa" rispetto a tali curve che dovrebbe fare in modo che un suono che aveva originariamente intensità "X" possa essere percepito come uguale all'originale quando riascoltato con una intensità "Y" (diversa da X).
Ovviamente, perché ciò sia possibile dobbiamo sapere qual è la curva di equalizzazione che dobbiamo applicare. Cioè dovremmo conoscere qual era l'intensità dell'originale e qual è quella con cui lo andiamo a riprodurre.
In sostanza il secondo parametro dell'effetto "loudness" di sox (in combinazione con il primo) ha proprio questa funzione (cioè quella di selezionare la curva di equalizzazione giusta), e va quindi "regolato" caso per caso in funzione del proprio "volume" di ascolto (intensità sonora effettiva).
Va da sé che una regolazione esatta e precisa del livello di riferimento (secondo parametro) non sarebbe proprio banale. Ci vorrebbero delle registrazioni di riferimento di cui sia nota l'intensità acustica originale (assoluta) e quindi si dovrebbe misurare quella a cui lo si riproduce effettivamente.
Per fortuna ai nostri fini non serve ottenere una precisione matematica (che per altro avrebbe ben scarsa utilità, dato che la risposta effettiva è soggettiva e le isofoniche rappresentano soltanto una media statistica): basta andare "a recchia"... ciascuno con le proprie. Che è meglio. :)
In pratica si tratta quindi banalmente di regolare il volume a quello che è il proprio tipico livello di ascolto medio e quindi aggiustare per tentativi il livello di riferimento (secondo parametro) dell'effetto finché non si raggiunge il risultato più convincente all'ascolto.
N.B.:
Presumibilmente i due parametri (con la funzione di regolazione del "guadagno" che ha il primo) sono stati introdotti per dare la possibilità di utilizzarlo per realizzare un "controllo di volume intelligente" che, una volta fissato il livello di riferimento (secondo parametro), seleziona automaticamente la curva di equalizzazione giusta in funzione della regolazione del volume fatta attraverso il primo parametro (ovviamente posto un dato guadagno -costante- per il resto della catena, nonché un livello "normalizzato" in ingresso).
Nel nostro caso una cosa del genere non la possiamo fare (quanto meno non con LMS+C-3PO così come sono attualmente), quindi dobbiamo accontentarci di un compromesso. Cioè di una regolazione fissa per quello che è il nostro livello di ascolto "tipico".
Pertanto conviene non alterare il volume per mezzo di quell'effetto (ovvero impostare il primo parametro sempre fisso a 0dB, cioè a guadagno unitario) ed utilizzare soltanto il secondo parametro per impostare il "livello di riferimento" (cioè per selezionare la curva di equalizzazione inversa da applicare).
Quindi il gain messo comunque a 0...Quote:
Pertanto conviene non alterare il volume per mezzo di quell'effetto (ovvero impostare il primo parametro sempre fisso a 0dB, cioè a guadagno unitario) ed utilizzare soltanto il secondo parametro per impostare il "livello di riferimento" (cioè per selezionare la curva di equalizzazione inversa da applicare).
e comando extra tipo loudness 0 60 ? é questa la sintassi giusta?
se ti riferisci al "gain" dell'effetto gain iniziale, cioè alla regolazione dello slider di C-3PO... No!!!
Quello serve per creare "headroom" per i calcoli successivi, in modo da evitare possibili (probabilissimi) clipping, e ci vuole... sempre!
Tanto più che, oltre a "rate" ed a "dither", anche "loudness" può aumentare il livello max dei picchi e quindi ha bisogno di (ulteriore) headroom. Personalmente seguirei il consiglio di Marco, mettendo un headroom di almeno 6dB.
sì, questa sì: "loudness 0 XX", dove XX lo devi aggiustare a orecchio secondo le tue esigenze.
BTW: questo comando lo puoi infilare sia prima che dopo il resampling (ovviamente o prima o dopo, non entrambe le cose!).
In teoria, dal punto di vista del risultato, metterlo prima o dopo dovrebbe essere indifferente; in caso di upsampling sarebbe meglio metterlo prima perché così facendo si lavora con un s/r più basso -> si dovrebbe avere un minor consumo di risorse.
Però, come al solito, in pratica non è detto che sia effettivamente così. Se ci siano o meno differenze udibili (se soggettivamente "suoni" meglio mettendolo prima o dopo, o se la cosa è indifferente) è da verificare all'ascolto.
Ho incontrato una discussione su questo argomento propio per LMS dove non ci ho capito una beata....
https://groups.google.com/forum/#!to...rc/C7EsyYUiLPs
Ho fatto alcune prove di ascoltopiù attente ma il mio problema è che mi stanco e dopo pochi minuti la mia capacità critica crolla ed ascolto la musica, bisognerebbe dedicare molto tempo a ciascun settaggio, ma è impossibile, per questo NON amo ciò che mi costringe a (o permette di, per il procione che è in me è la stessa cosa) usare numerosi settaggi.
Comunque, questi sono i risultati sul mio impiantoi, per le mie orecchi ed i miei gusti.
a. NON USARE MAI FLAC!!! per un incidente di percorso avevo disinstallato FFMPEG ed il risultato è stato un inasprimento del tutto, il cui effetto è sicuramente maggiore di ogni altro di cui stiamo qui parlando.
b. 44100/16 con noise shaping è meglio di 48000/24 con dithering automatico, gli effetti dei diversi filtri si avvertono, ma potrei convivere con uno qualsiasi, mi pare di preferire leggermente 'improved-E-weighted" o shibata-Low, dipende dal materiale.
d. 44100/24 con noise shaping è - leggermente - meglio di 44100/16, stesse preferenze per i filtri (-p=24), usare -p 16 o -p 20 non da beneficio, se non peggiora leggermente.
d. 48000/24 con noise shaping è - leggermente - meglio di 44100/24. Non ho capito se i filtri a 48K sono ancora attivi o se - in realtà - sto usando dither -S, comunque sia, mi piace di più.
Per chiarirci però: in una scala da 1 100, FLAC/ffmpeg = 90 almeno, noise shaping = 9, il resto 1. A 44100 questo 1 'vale di più' che non a 48000/24.
In termini assoluti, in un confornto A/B probabilmente riuscirei a distinguere flac da ffmpeg, ma non a memoria o su impianti diversi, non credo che riuscirei a riconoscere profondità, sample rate e filtri, nel senso che si, probabilmente potrei individuare differenze, ma certo non ricondurle all'uno piuttosto che all'altro.
@Filippo: Il loudness produce effetti di un'altro ordine di grandezza. Attento, produce dipendenza!
come fai per fargli utilizzare ffmpeg al posto di flac?
diversamente da quanto accade con s/r superiori, con lo shibata a 48K sox non emette warning... quindi almeno quello dovrebbe esserci (con altri non ho provato).
Basta installarlo se lo usi per 'tagliare' i wav in base ai cue, se parti da FLAC senza cue, usi già solo SOX. L'unico punto in cui usi FLAC + SOX è con i cue + FLAC o con Qobuz e simili, ma in questo ultimo caso non mi è parso così deleterio e comunque sox da solo non funziona, servirebbe una particolare configurazione di ffmpeg.
Vero, non me ne ero accorto, se fa fault back lo dice. Aggiornata la tendina con le corrette indicazioni.
p.s.
Non sono ancora del tutto sordo, entrambi i filtri che ho indicato come 'preferibili' funzionano anche a 48K... sarà solo fortuna, ma se ne avessi scelto uno che non va, ne sarei uscito più abbacchiato!
partendo da files flac, con "cue" abilitati (laddove al momento utilizza flac+sox). Ovviamente ammesso (e non concesso) che ci sia qualche vantaggio.
Cioè: i vantaggi di cui parli saranno relativi al fatto che parti da files wav non compressi (e quindi non devi fare anche la decodifica), oppure sarà proprio flac (applicazione) che, per qualche motivo, "disturba" più di ffmpeg?
...oppure siamo noi che non abbiamo capito cosa volevi dire dicendo "meglio ffmpeg"?
NO, avete capito, solo che io ho fatto un cortocircuito:
Chi non ammette la differenza tra flac -> FLAC -> pcm -> player e pcm -> player, come fa a sentire la differenza tra flac -> FLAC -> pcm -> player e flac -> FFMPEG-> pcm -> player ?
Mi sembrerebbe quantomeno strano.
Fate una prova e convertite un flac in un pcm poi mi dite.
p.s.
Sia chiaro che sono più stupito di voi che le cose stiano così, ma ormai ho troppe conferme, quando c'è di mezzo flac (anche solo sul server) si sente ed è come se fosse tutto più 'compresso'.
No praticamete a volte finita una song non riesche a mandare in play la successiva (come se andasse in pausa), e non riesce ad andare in play nenche piú manualmente....finché non cambio i settaggi (tolgo loudness)...e dopo vari tentatitvi funziona...robe di sto tipo insomma
questo il comando
https://up.nexthardware.com/user_ima...e/htop122.jpeg
Ho qualche problema con i caratteri dopo aver aggiornato ubuntustudio all'ultima versione .....
Il log
Allegato 16980
codice:16-04-26 20:42:15.3666] Slim::Player::TranscodingHelper::enabledFormat (223) Testing flc-flc-transcode-* vs flc-pcm-*-50:e5:49:cc:b4:29
[16-04-26 20:42:15.3667] Slim::Player::TranscodingHelper::checkBin (250) enabled
[16-04-26 20:42:15.3668] Slim::Player::TranscodingHelper::checkBin (252) Found command: [C-3PO] -c $CLIENTID$ -p "/var/lib/squeezeboxserver/prefs/plugin/C3PO.prefs" -l "/var/log/squeezeboxserver/" -x "/usr/sbin" -i flc -o wav $START$ $END$ $RESAMPLE$ $FILE$
[16-04-26 20:42:15.3669] Slim::Player::TranscodingHelper::getConvertCommand2 (446) Matched: flc->pcm via: [C-3PO] -c $CLIENTID$ -p "/var/lib/squeezeboxserver/prefs/plugin/C3PO.prefs" -l "/var/log/squeezeboxserver/" -x "/usr/sbin" -i flc -o wav $START$ $END$ $RESAMPLE$ $FILE$
[16-04-26 20:42:15.3670] Slim::Player::Song::open (408) Transcoder: streamMode=F, streamformat=pcm
[16-04-26 20:42:15.3673] Slim::Player::TranscodingHelper::tokenizeConvertCommand2 (617) Using command for conversion: "/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/C3PO/Bin/C-3PO" -c 50-e5-49-cc-b4-29 -p "/var/lib/squeezeboxserver/prefs/plugin/C3PO.prefs" -l "/var/log/squeezeboxserver/" -x "/usr/sbin" -i flc -o wav "/media/cb/Users/filippo/Desktop/Music/Moritz Von Oswald Trio - Horizontal Structures (2011) (Flac)/05_Structure-5.flac" & |
[16-04-26 20:42:15.3674] Slim::Player::Song::open (558) Tokenized command: "/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/C3PO/Bin/C-3PO" -c 50-e5-49-cc-b4-29 -p "/var/lib/squeezeboxserver/prefs/plugin/C3PO.prefs" -l "/var/log/squeezeboxserver/" -x "/usr/sbin" -i flc -o wav "/media/cb/Users/filippo/Desktop/Music/Moritz Von Oswald Trio - Horizontal Structures (2011) (Flac)/05_Structure-5.flac" & |
[16-04-26 20:42:15.3736] Slim::Player::SongStreamController::new (31) live=1
[16-04-26 20:42:15.3739] Slim::Player::StreamingController::_Stream (1265) 50:e5:49:cc:b4:29: stream
[16-04-26 20:42:15.3748] Slim::Player::StreamingController::_Stream (1302) Song queue is now 4
[16-04-26 20:42:15.3749] Slim::Player::StreamingController::_setPlayingState (2357) new playing state BUFFERING
[16-04-26 20:42:15.3750] Slim::Player::StreamingController::_setStreamingState (2366) new streaming state STREAMING
[16-04-26 20:42:15.3751] Slim::Player::StreamingController::_eventAction (303) 50:e5:49:cc:b4:29: NextTrackReady - new state BUFFERING-STREAMING
[16-04-26 20:42:15.3752] Slim::Player::Song::DESTROY (160) DESTROY(Slim::Player::Song=ARRAY(0xbbbb708)) live=1: index=3, url=file:///media/cb/Users/filippo/Desktop/Music/Moritz%20Von%20Oswald%20Trio%20-%20Horizontal%20Structures%20(2011)%20(Flac)/04_Structure-4.flac
[16-04-26 20:42:15.4584] Slim::Player::Source::_wakeupOnReadable (409) 50:e5:49:cc:b4:29
[16-04-26 20:42:15.4588] Slim::Player::Source::_readNextChunk (350) Read to end of file or pipe
[16-04-26 20:42:15.4589] Slim::Player::Source::_readNextChunk (373) end of file or error on socket, song pos: 3433061456
[16-04-26 20:42:15.4591] Slim::Player::Source::_readNextChunk (378) 50:e5:49:cc:b4:29 mark end of stream
[16-04-26 20:42:15.4592] Slim::Player::Source::_readNextChunk (386) Didn't stream any bytes for this song; mark it as failed
[16-04-26 20:42:15.4593] Slim::Player::StreamingController::playerStreamingFailed (2228) 50:e5:49:cc:b4:29
[16-04-26 20:42:15.4594] Slim::Player::StreamingController::_playersMessage (789) Problema: impossibile aprire il file per:: file:///media/cb/Users/filippo/Desktop/Music/Moritz%20Von%20Oswald%20Trio%20-%20Horizontal%20Structures%20(2011)%20(Flac)/05_Structure-5.flac
[16-04-26 20:42:15.4599] Slim::Player::StreamingController::_eventAction (273) 50:e5:49:cc:b4:29: StreamingFailed in BUFFERING-STREAMING -> Slim::Player::StreamingController::_StopNextIfMore
[16-04-26 20:42:15.4600] Slim::Player::StreamingController::_eventAction (284) params: errorDisconnect => undef
[16-04-26 20:42:15.4602] Slim::Player::StreamingController::_Stop (603) Song queue is now 4
[16-04-26 20:42:15.4603] Slim::Player::SongStreamController::DESTROY (44) DESTROY(Slim::Player::SongStreamController=HASH(0xb9d63c0)) live=0
[16-04-26 20:42:15.4605] Slim::Player::StreamingController::_setPlayingState (2357) new playing state STOPPED
[16-04-26 20:42:15.4606] Slim::Player::StreamingController::_setStreamingState (2366) new streaming state IDLE
[16-04-26 20:42:15.4607] Slim::Player::StreamingController::_willRetry (1391) no retry data
[16-04-26 20:42:15.4609] Slim::Player::StreamingController::nextsong (882) The next song is number 0, was 4
[16-04-26 20:42:15.4610] Slim::Player::StreamingController::_eventAction (303) 50:e5:49:cc:b4:29: StreamingFailed - new state STOPPED-IDLE
[16-04-26 20:42:15.4613] Slim::Player::StreamingController::_eventAction (273) 50:e5:49:cc:b4:29: StatusHeartbeat in STOPPED-IDLE -> Slim::Player::StreamingController::_NoOp
[16-04-26 20:42:18.0017] Slim::Player::StreamingController::_eventAction (273) 50:e5:49:cc:b4:29: StatusHeartbeat in STOPPED-IDLE -> Slim::Player::StreamingController::_NoOp
[16-04-26 20:42:18.4501] Slim::Player::TranscodingHelper::enabledFormat (209) Checking to see if flc-flc-*-* is enabled
[16-04-26 20:42:18.4504] Slim::Player::TranscodingHelper::enabledFormat (217) There are 16 disabled formats...
[16-04-26 20:42:18.4506] Slim::Player::TranscodingHelper::enabledFormat (223) Testing aif-aif-*-* vs flc-flc-*-*
[16-04-26 20:42:18.4508] Slim::Player::TranscodingHelper::enabledFormat (223) Testing aif-flc-*-* vs flc-flc-*-*
[16-04-26 20:42:18.4510] Slim::Player::TranscodingHelper::enabledFormat (223) Testing aif-mp3-*-* vs flc-flc-*-*
[16-04-26 20:42:18.4512] Slim::Player::TranscodingHelper::enabledFormat (223) Testing alc-alc-*-* vs flc-flc-*-*
Il sintomo è quello di un comando sbagliato, ma per quel che riesco a vedere. l'unica cosa 'strana' è la meno dopo dither -S, a meno che non ci sia anche p xx.
Se togli loudness va senza problemi?
Se lanci la riga togliendo il -q e mettendo il solito prova.wav, cosa dice?
si in effetti non si vede tutta la riga ma dopo c'é p 24Quote:
Il sintomo è quello di un comando sbagliato, ma per quel che riesco a vedere. l'unica cosa 'strana' è la meno dopo dither -S, a meno che non ci sia anche p xx.
siQuote:
Se togli loudness va senza problemi?
probabile. Ma il punto è che, mentre di riconvertire la libreria in wav non ci penso nemmeno, non lo farei neanche se per assurdo ci fosse una differenza eclatante e certa al 100%, usare un programma piuttosto che un altro sostanzialmente equivalente non mi costa nulla... per cui posso farlo anche se ho il dubbio che non cambi nulla. ;)
La cosa migliore sarebbe dare la possibilità di scelta (tra flac ed ffmpeg) con una opzione di configurazione... :ehh
curioso. Io ho fatto un po' di prove, con impostazioni (credo) praticamente identiche (ho provato anche sia con loudness infilato prima che dopo il resampling), e non ho avuto il benché minimo problema.
https://up.nexthardware.com/user_ima.../C-3PO_new.png
Che sia un problema di latenza? Come hai configurato SL? (soprattutto i buffer).
ah. OK.
Appena provato... con 80 non funziona, punto. Probabilmente c'è un limite max al valore del reference level. D'altro canto, oltre un certo livello probabilmente non avrebbe più molto senso usare il loudness.
Da una rapida serie di prove veloci (sul manuale non l'ho trovato), direi che il limite max sia 75 (dB).
Ho fatto un minimo di prove con gain, loudness e remix (usato come controllo di balance) ed ho verificato che:
a. loudness NON può essere usato con il primo parametro (gain) = 0, il comando non ha effetto in questo caso.
b. gain deve essere compreso tra -50 e 15, indipendententemente (a quanto pare) dal valore di db_ref (???).
c. db_ref (start) deve essere compreso tra 50 e 75.
d. provoca facilmente clipping su tutta la catena, porre MOLTA attenzione.
Non ho ancora ben capito SE e quale relazione intercorre tra i due parametri del loudness e tra questi ed il gain aggiunto mediante altri effetti (gain o remix, per quanto mi riguarda). Il messaggio di errore conseguente al punto b parla di 'delta', ma non capisco tra cosa, dal messaggio parrebbe tra gain e db_ref, ma in realtà pare un valore assoluto (o riferito al corrente, sconosciuto, valore della pressione sonora PRIMA dell'applicazione del loudness). Non è per nulla chiaro. La documentazione non è certo il loro punto forte!
Questi sono i livelli di picco misurati:
traccia originale = 3.69 db
traccia con gain -20 = 22.65 db
traccia con gain - 10 e loudness -10 55 = 22,35 db
traccia con solo loudness -20 55 = 20.85 db
posto che non ho capito perchè riducendo con 20 db di gain non si ottiene esattamente il risultato aspettato (-23.69 db) , si vede che la stessa isofonica applicata su 10 db di riduzione produce solo 0.3 db di differenza di picco, mentre su 20 db ne produce quasi 2, quindi probabilmente l'effetto avviene nei limiti della variazione di guadagno, cioè variazioni più gradi danno probabilmente effettto più sensibile a parità di curva isofonica (cioè di db_ref).
Ma è una deduzione debole ed al buio, tutto dipende dal 'come' l'effetto della isofonica viene limitato.
Una cosa interessante è l'opzione -G o -h + -r) che in pratica consiste nel far si che SOX 'reclami' l'headroom non utilizzato alla fine della catena degli effetti, garantendo in ogni caso l'assenza di clipping, ma NON per l'effett loudness in se, mi pare, dato che anche con -G e loudness 10 55 ho ottenuto clipping da quell'effetto, ma omettendo -G se ne hanno molti di più anche in rate, dithering ed output. Comunque, l'uso di guadagno positivo è sempre sconsigiabile.
Può essere interessante provarlo,anche se io non ho mai sentito 'nostalgia' dei db persi per creare headroom... basta girare appena di più la manopolina...
In pratica si traduce in un effetto gain aggiuntivo, applicato DOPO il rate ma prima del dithering e mi pare aggiunga tempo all'elaborazione. Da verificare che non costringa sox a bufferizzare tutto il file (cosa che sarebbe ragionevole).
p.s.
Effetto collaterale della prova fatta:
Per misurare i picchi ho usato foobar sul pc di sviluppo e, vista la riduzione importante, ho dovuto alzare di molto il volume delle casse amplificate per 'ascoltarne' l'effetto, con il risultato che - in assenza di riproduzione - il rumore di fondo diventa molto più evidente (probabilmente ho anche un cavetto difettoso, muovendolo 'scricchiola'). Com'è e come non è, mi sono accorto che il 'tipo' ed il tono del rumore cambia sensibilmente quando lancio la conversione via SOX (muta, perchè produco i files).
Ovvio che non è una condizione 'normale', si tratta di apparecchi low-fi e probabilmente un cavo parzialmente interrotto fa da antenna, ma se questa non è un'ennesima dimostrazione di come le attività della CPU (o di cos'altro) producano disturbi ben captabili da apparecchiature audio nelle vicinanze....
uh? ma sei sicuro? Con quale versione di sox?
questo è abbastanza ovvio, visto che applica una equalizzazione che aumenta il livello di alcune parti dello spettro...
opzione globale "--guard" (eq. -G), oppure "gain -h" all'inizio della catena seguito da "gain -hr" in fondo (subito prima di "dither", che è e deve essere sempre l'ultimo).
Funziona benissimo e, per le operazioni "offline", è comodissimo.
Purtroppo per l'uso "online/on-the-fly" che ne facciamo noi è improponibile. Per funzionare in qualche modo prima deve processare/analizzare l'intero file per scoprire di quanto headroom ha bisogno... per cui aggiunge una latenza enorme (da qualche decina di secondi a qualche minuto, a seconda delle dimensioni del file e della velocità della macchina). :(
...ed ovviamente con LMS "rompe il gapless". ;)
azz... hai ragione! ;sadlike
Genero un file con solo white noise:
questo lo spettro (piatto, come atteso...):codice:sox -S -n wnoise.wav synth -n 00:00:10 whitenoise gain -10
https://up.nexthardware.com/user_ima...hite_noise.png
dopo di che:
Con il primo parametro (di "loudness") posto a "-9", lo spettro diventa questo:codice:sox wnoise.wav wn+l-0-50.wav loudness 0 50
sox wnoise.wav wn+g-+9-l--9-50.wav gain +9 loudness -9 50
https://up.nexthardware.com/user_ima...wn+l--9-50.png
...mentre con il primo parametro a zero resta piatto!
edit: stupidamente non avevo aggiunto il "-V3" alla riga di comando, altrimenti avrei visto il warning... e mi sarei potuto risparmiare la fatica di fare gli spettri. :)
idem. Credevo di averlo capito, e invece... non avevo capito proprio nulla. :ehh :(
se non ho completamente frainteso anche questo, in teoria i diversi effetti dovrebbero essere del tutto indipendenti tra loro, come se fossero programmi diversi che puoi combinare tra loro "in cascata" con una "pipe".
Però, per applicare correttamente la correzione, in qualche modo "loudness" dovrebbe fare riferimento (anche) al livello effettivo dello stream che va a trattare, quindi dovrebbe risentire degli effetti (sul livello) di quanto fatto "a monte".
Boh... :mmmm
no, decisamente. :(
come? con "stat"/"stats"? (altri "effetti" di sox)
ah, ecco...
Per toglierti il dubbio sull'entità delle attenuazioni, potresti (ri)verificare anche con stat/stats.
Si, ma se capisco bene nel secondo grafico la scala è molto diversa, tra valle e picco il delta è 0,5 db, giusto?
Si, i diversi effetti sono in una 'catena', quindi indipendenti, ma il gain -hr finale (o il -G) 'dovrebbe' riconsiderare il tutto ed in effetti lo fa, ma probabilmente non riesce del tutto con il loudenss (che io avevo impostato con guadagno positivo però).
Come fa a fare roiferimento al livello effettivo? dovrebbe avere un fonometro collegato. Per questo lo chiede a te (db_ref). In sostaza, la cosa più probabile è questa: Indichi a che livello di pressione sei (db_ref) quindi dici che variazione vuoi ottenere rispetto a quel livello e lui la applica mediante la isofonica corrispondente. QUindi la isofonica applicata NON è quella di db_ref, ma di db_ref + guadagno.
In questo modo assumono un senso maggiore anche i ilimiti:
loudness -50 50 = porta il livello a 0.
loudenss +15 75 = porta il livello a 90.
Sotto 0 db non ha senso il loudness, ovviamente, sopra 90 db (ma anche prima) non si applica più, i parametri psicoaucustici cambiano completamente. probabilmente bisogna leggerlo in questo modo, anche se se metti ANCHE il gain è come se mettesi uno shift ulteriore al db_ref, quindi 'falsi' il quadro (da qui i valori diversi di picco, presumibilmente).
Comunque è troppo vago, dovrebbero spiegare meglio, magari mi guardo il codice.
sì, la scala è diversa. No, la differenza si riferisce alla posizione del "cursore" (puntatore del mouse), che era posizionato a caso. Non ho misurato quantitativamente l'effetto, mi premeva solo di visualizzare lo "shape".
ah, avevi attivato quello... ecco perché quei valori "strani", che non capivo da dove uscissero.
Lol! :)
Ovviamente per "livello effettivo" mi riferivo a quello dello stream in ingresso (quanto meno, in ingresso a "loudness", dopo le eventuali elaborazioni precedenti). Non tutti gli stream sono "normalizzati" allo stesso livello (tutt'altro...); se uno stream è normalizzato a 0dB (picchi massimi che raggiungono la massima ampiezza possibile) mentre un altro è normalizzato e.g. a -10dB, per applicare correttamente la correzione si dovrebbe tener conto di quella differenza.
sì, questo mi era chiaro. Il dubbio resta su come usi esattamente quel valore (e l'altro), nonché se/come eventualmente tenga conto dell'ampiezza massima (relativa al f.s.) dello stream in ingresso.
che (se non ho capito male cosa intendevi dire) è proprio quello che pensavo. Ma, se così fosse, non dovrebbe funzionare anche con il primo parametro a 0dB?! :lokaro
cosa intendi con "livello", in questo caso? (quale livello?)
penso proprio di sì... (vedi quello che dicevo poco sopra).
sì, temo sia l'unica soluzione per tagliare la testa al toro. A meno che non ci sia qualche spiegazione più chiara in qualche "risorsa" online (WiKi, ecc).
Per 'livello' intendo i db 'teorici' dopo la correzione di gain del loudness sulla base del db_ref e del guadagno (interno alla funzione loudness), in pratica il valore di riferimento per la isottonica applicata.
db_ref = 50 gain = -50 -> livello = 0.
db_ref = 75 gain = +15 -> livello = 90.
che sono gli estremi massimo e minimo in cui può lavorare l'effetto loudness.
Ovviamente sono 'relativi' rispetto al livello di presione sonora reale (sconosciuto) ma purtroppo - per quanto ho capito - anche a quello 'nominale' (la somma dei gains o volume o compresione,...)impostati dagli altri effetti), teoricamente conoscibile, ma quanto significativo senza sapere il primo?
La cosa che però meno capisco è che
loudness -20 75
loudness -20 65
gain -10 loudness -10 65
restituisce rispettivamente 20.37, 20.54, 22.36 db. Quindi, in loudness, è più importante il livello di riduzione che non il punto di partenza. Se voglio capire devo studiare il codice...
Senza pretesa di aver capito come funziona il tutto, è però evidente che gli unici parametri presi in considerazione sono start e delta, cioè db_ref e gain dell'effetto loudness, dalla 'differenza' tra il valore start + delta e start per singola frequenza, ricava il valore di filtro da applicare.codice:
for (i = 0; i < (int)LEN - 2; ++i) {
spl[i + 1] = SPL(start + delta, iso226_table[i]) -
SPL(start , iso226_table[i]);
fs[i + 1] = log(iso226_table[i].f);
}
Ecco il motivo per cui un delta di '0' non è significativo.
Non chiedetemi come, al momento, ma ciò basta a capire la logica sottostante:
val(hz) = f(start, delta), è quindi da leggere come : variazione (calcolata ad ogni frequenza del riferimento 'hz') provocata dall'applicazione di delta db alla pressione 'nominale' di start db.
Questa variazione viene poi aggiunta (sempre come curva) al segnale, indipendentemente da altri effetti, gain compreso.
Non era così difficile da spiegare...
Proviamo con qualcosa del genere, allora...
https://up.nexthardware.com/user_ima.../C-3PO.new.png
perchè metti -l +6 ?
in questp modo 'limiti', cioè immetti compressione per evitare clipping. Non è meglio NON mettere nessun guadagno (posto che quello negativo imposto al loudness sia suffciente)? Dovrai alzare un po di più il volume...