Originariamente inviato da
UnixMan
infatti SOX lo aggiunge automaticamente (alla fine, come ultimo step)
solo se ce n'è bisogno cioè se, nella sequenza di comandi che ha eseguito, c'è una operazione che ne richieda l'applicazione (ad es. una "riquantizzazione" con riduzione del "bit depth"). In caso contrario non lo fa:
l'opzione "-D" serve ad impedire che ciò venga fatto anche quando sox ritiene che sia opportuno farlo; va aggiunta solo per casi particolari, ad es. quando lo stream debba subire ulteriori elaborazioni e/o quando si voglia aggiungere il dithering a posteriori con un altro software.
invece può esserlo:
il resampling con conversione da 16/44 a 24/192 (che in realtà è ottenuto con la sequenza: 16/44 -> 32/44 -> 32/192 -> 24/192) è proprio uno di questi casi.
certamente ma, dato che il risultato è esattamente identico, non ha alcun senso complicarsi la vita inutilmente. Molto meglio lasciar fare tutto a sox, dandogli in pasto direttamente il file originale.
penso di no, quello dovrebbe essere corretto. Errore mio non aver specificato -b 24 in uscita. Probabilmente, se non diversamente specificato, il default in uscita è 16bit.
N.B.: considera che "internamente" SOX ignora quale sia il formato dei dati in ingresso ed in uscita: qualsiasi essi siano, la prima operazione che fa -sempre- è quella di convertire i dati in ingresso nel suo formato interno (PCM a 32bit), mentre l'ultima operazione che fa è quella di convertire nuovamente i dati elaborati dal suo formato interno a quello richiesto in uscita, eventualmente applicando le ulteriori elaborazioni richieste per ottenere tale formato (eventuali resampling, riduzione del bit-depth, dithering, ecc).
Per questo se tu dai il comando:
sox -V3 file_di_ingresso.flac -b 24 -r 192000 file_di_uscita.wav
ottieni effettivamente che venga effettuato (automaticamente) il resampling. Salvo che (come per tutte le operazioni automatiche) in tal caso vengono utilizzate le opzioni di default e
NON hai modo di cambiarle.
che c'entra "-b" (che cambia la banda passante del filtro di resampling) con il clipping?
Per evitare il clipping è necessario ridurre l'ampiezza del segnale (con il comando "gain")
prima di procedere con le ulteriori elaborazioni.
Per questo suggerivo di aggiungere "gain -6" (prima di rate):
codice:
sox -V3 file_di_ingresso.flac -b 24 file_di_uscita.wav gain -6 rate -v 192000
(qualora -6dB non fossero sufficienti si può aumentare l'attenuazione ad es. a -9 o più. Viceversa la si può ridurre qualora fosse sufficiente una attenuazione minore).
P.S.: ovviamente è possibile che il filtro più semplice (di ordine inferiore) richiesto dalla minore banda passante (rate -b 90) riduca o addirittura elimini la probabilità di incorrere in "clipping" (overflow) durante i calcoli. Ma si tratta di una "soluzione" indiretta e limitante (nel senso che ti obbliga a scegliere determinate opzioni di resampling piuttosto che altre, mentre ovviamente vogliamo essere liberi di scegliere le opzioni di resampling che vogliamo, solo sulla base di quali "suonano" meglio nel nostro sistema). La soluzione "propria" e diretta è appunto quella di ridurre preventivamente il valore numerico dei campioni utilizzando la funzione "gain".