niente di "preconfezionato". Anche perché, IME, le impostazioni "ottimali" (cioè, quelle che "suonano" meglio all'ascolto) variano sensibilmente da un sistema all'altro, soprattutto con DAC diversi. Quindi non puoi fare altro che sperimentare ed ascoltare, in prima persona, sul tuo stesso sistema.
Per assurdo che possa sembrare (a me per primo...), in almeno un caso mi è capitato che l'impostazione che all'ascolto suonava meglio era quella peggiore in assoluto, teoricamente del tutto inaccettabile: resampling con algoritmo "Zero Order Hold"!![]()
(su altri sistemi quella stessa impostazione risulta invece semplicemente inascoltabile, come ci si aspetterebbe che debba essere sempre).
Per prima cosa proverei con l'impostazione più semplice, cioè banalmente con "rate -v" (che dovrebbe essere equivalente a quanto fatto da squeezelite con libsoxr con l'impostazione "VHQ").
Dopo di che puoi provare a giocare con il "tipo" di filtro, cioè con la risposta in fase. Che determina "qualità" e quantità di pre- e/o post- ringing della risposta all'impulso nel dominio del tempo. Questo lo puoi fare aggiungendo l'opzione "-M" oppure "-I".
(il filtro a fase lineare - opzione "-L" - è quello usato di default, quindi specificare tale opzione dovrebbe essere del tutto superfluo).
In alternativa alle opzioni -M/-I/-L puoi usare l'opzione "-p x", con "x" che è un numero compreso tra 0 e 100:
- "-p 0", equivalente a "-M" (filtro a fase minima)
- "-p 25", equivalente a "-I"
- "-p 50", equivalente a "-L" (filtro a fase lineare, default)
Come è ovvio la "-p" è una opzione molto potente e versatile, che consente di ottenere qualsiasi risposta "intermedia" nonché di andare anche "oltre" la risposta lineare, fino ad una risposta "maximum phase" ("-p 100").
Puoi inoltre provare ad aggiungere "-a" e "-s", in varie combinazioni con le altre opzioni. Queste due opzioni in sostanza determinano (indirettamente) la "pendenza" (ordine) del filtro impiegato:
- "-a" indica di permettere una non completa soppressione degli "alias" al di sopra della banda passante (e quindi, a parità di banda passante, l'uso di un filtro con pendenza minore); come "side-effect" implica tra l'altro un minore utilizzo della CPU.
- "-s" indica di utilizzare un filtro "steep", ad alta pendenza, per ottenere una banda passante del 99% (*)
Infine puoi giocare con l'opzione "-b x", dove "x" è un numero compreso tra 74 e 99.7. Questo determina la "banda passante" del resampler, intesa come percentuale della banda passante del segnale di ingresso riprodotta in uscita. (*)
Va da sé che all'aumento della banda passante richiesta corrisponde necessariamente anche l'uso di filtri con pendenza maggiore, quindi tipicamente risposte all'impulso più "lunghe", con più pre- e/o -post ringing, nonché un maggiore consumo di risorse di CPU.
Considerando che in genere all'ascolto "suonano meglio" i filtri meno ripidi, IMHO è preferibile sacrificare un po' di banda passante (anche scendendo al disotto del 95% di default dell'opzione "-v") piuttosto che cercare di rincorrere l'ultimo hertz...
(*) sì, la banda passante dopo il resampling è sempre inferiore a quella in ingresso, cioè il resampling "taglia" (ancora di più di quanto già non lo fossero...) le frequenze più alte. Cioè, a dispetto della frequenza di campionamento più alta, il segnale "upsamplato" ha una banda passante effettiva (leggermente) minore di quello originale!
N.B.: Questo NON è un limite di SOX e dei suoi algoritmi ma una caratteristica fisico/matematica inevitabile del processo stesso di resampling, comunque realizzato!
P.S.: quanto sopra è semplicemente una traduzione/spiegazione di quanto chiaramente illustrato nella man page di sox:
codice:[...] rate [-q|-l|-m|-h|-v] [override-options] RATE[k] Change the audio sampling rate (i.e. resample the audio) to any given RATE (even non-integer if this is supported by the output file format) using a quality level defined as follows: Quality Band- Rej dB Typical Use width -q quick n/a ~=30 @ playback on Fs/4 ancient hardware -l low 80% 100 playback on old hardware -m medium 95% 100 audio playback -h high 95% 125 16-bit mastering (use with dither) -v very high 95% 175 24-bit mastering where Band-width is the percentage of the audio frequency band that is preserved and Rej dB is the level of noise rejection. Increasing levels of resampling quality come at the expense of increasing amounts of time to process the audio. If no qual- ity option is given, the quality level used is `high' (but see `Playing & Recording Audio' above regarding playback). The `quick' algorithm uses cubic interpolation; all others use band-limited interpolation. By default, all algorithms have a `linear' phase response; for `medium', `high' and `very high', the phase response is configurable (see below). [...] The simple quality selection described above provides settings that satisfy the needs of the vast majority of resampling tasks. Occasionally, however, it may be desirable to fine-tune the resampler's filter response; this can be achieved using override options, as detailed in the following table: -M/-I/-L Phase response = minimum/intermediate/linear -s Steep filter (band-width = 99%) -a Allow aliasing/imaging above the pass-band -b 74-99.7 Any band-width % -p 0-100 Any phase response (0 = minimum, 25 = intermediate, 50 = linear, 100 = maximum) [...]