Originariamente inviato da UnixMan
come dicevo, non ho ben chiaro se e quale possa essere l'utilità di aggiungere quel filtro.

Se parliamo di conversione PCM->DSD, partendo da uno stream PCM con sample-rate inferiori a 100K, evidentemente frequenze superiori a 50K non ce ne possono essere (e non sono neanche rappresentabili). Quindi quel filtro non ha senso. Ed infatti (giustamente) se provi a mettercelo sox dà errore:
E' per questo che io avevo pensato fosse DOPO il rate. Comunque, l'unico senso di convertire in DSD ed upsamplare è di spostare il rumore generato dai fitri (modulatori) in zone non udibili, se fosse sufficiente semplicemnet eliminare i dati con un filtro... per chè ci dovremmo tenere tutti qui giga inutili?

Perchè generiamo informazioni inesistenti sopr ai 22KHz fino a 400 Khz e più per poi tagliarle con un filtro a 50K?

mi sa che mi sfugge qualcosa...

Originariamente inviato da UnixMan
Non è che per caso hai fatto confusione con le impostazioni relative all'upsampling del DSD (DSD->DSD)?
Tutto può essere ci riguardo.


Originariamente inviato da UnixMan
In quel caso il filtro forse ha un senso, per "eliminare" (ridurre) il rumore fuori banda prima dell'upsampling(*).

In caso contrario, un lowpass a 50K puoi metterlo solo se lo stream PCM di partenza ha un s/r > 100K.

(*) personalmente proverei a "tagliare" anche molto più in basso di 50K: non solo non siamo delfini né pipistrelli ma, soprattutto, il resto della catena audio ed in modo particolare i diffusori ben difficilmente sono in grado di riprodurre correttamente frequenze oltre i 20K. Quanto meno, non molto oltre...
mmmhhh... questo è anche il mio dubbio 'originario' ma essendo così 'gnucco' propendo al che ci sia una spiegazione più complessa, v. sopra. (...mi sa che mi sfugge qualcosa...)

Originariamente inviato da UnixMan
BTW: se non ho capito male come funzionano le cose, internamente sox lavora -sempre- in PCM a 32bit. Quindi, anche se in ingresso gli mandi uno stream DSD, lui rappresenta ogni "campione" (bit del DSD) con 32bit! Cioè per così dire lo "converte in PCM" (uno stream PCM dove tutti i bit tranne il LSB sono sempre a 0) allo stesso s/r dello stream DSD in ingresso (...ecco perché per poter "trattare" il DSD non solo ci vuole una CPU veloce, ma anche una quantità di memoria esagerata).
Secondo me non è così, l'opzione -b 1 serve proprio a dirgli di usare campioni da 1 bit (per canale).


Originariamente inviato da UnixMan
Sia nel caso di PCM->DSD che DSD->DSD il processo prevede dapprima un "normale" upsampling (PCM) fino al sample/rate desiderato in uscita (quello del DSD 64/128/256), a 32bit (!), dopo di che (con sdm) viene applicato il dithering/noise-shaping ad 1bit.
Si è così, ma in uscita il flusso è a 1 bit, ma non credo possa essere diversamente.