algoritmo per convertire campioni da 8 k -> 48k e viceversa

sapete dove posso rimediare questi algoritmi ? preferibilmente in C

devo convertire dei campioni acquisiti a 48ksps dalla scheda sonora a 8ksps e viceversa un segnale pcm da 8000 campioni/sec a 48000.

grazie

Reply to
simone
Loading thread data ...

"simone" ha scritto:

No, ma con Google dovresti fare in un attimo...

Cosi' a occhio, per passare da 8 a 48 l'unico modo che hai e' o replicare lo stesso campione 6 volte, oppure meglio, interpolando (linearmente o con polinomi di grado superiore, al massimo 5 direi, avendo 6 punti). Per passare da 48 a 8, o scegli un campione ogni 6, oppure ne prendi 6 alla volta, ne fai la media, e quello e' il nuovo campione.

Ciao.

-- Per rispondermi via email sostituisci il risultato dell'operazione (in lettere) dall'indirizzo

Reply to
Fabio G.

Cerca in rete sotto i nomi di decimation e interpolation filters.

--

Franco

Wovon man nicht sprechen kann, darüber muß man schweigen.
(L. Wittgenstein)
Reply to
Franco

insomma..

ho provato a replicare e liearmente ma vengono male ( cooledit non fa così.. ho debuggato i files pcm.. sembrano dei sinc )

decimare allegramente nemmeno..

Grazie?

Reply to
simone

Cerca qualcosa sulle implementazioni software dei filtri digitali: dovresti essere sepolto dai riferimenti ;-) In ogni caso gli esperti del settore sono sul NG comp.dsp

Se non ricordo troppo male, gli algoritmi sono di questo tipo (e se ricordo male spero che qualcuno se ne accorga :-) Per convertire 48 ksps -> 8 ksps devi filtrare passa-basso il segnale di ingresso, usando un filtro digitale con elevata pendenza e frequenza di taglio minore di 4 kHz, poi prendi un campione ogni 6 dal risultato e consideri quello che ottieni come una sequenza a 8 ksps. Per convertire 8 ksps -> 48 ksps aggiungi cinque campioni di valore zero in mezzo ad ogni campione di ingresso poi, considerando la sequenza ottenuta come una serie di campioni a 48 ksps, la passi in un filtro passa-basso con taglio < 4 kHz. Nota che in entrambi i casi la l'informazione utile che hai in uscita e' limitata in banda a 4 kHz, perche' il limite lo fissa il campionamento a frequenza minore, indipendentemente dal fatto che questo sia in ingresso o in uscita alla conversione (l'informazione scartata a causa dei limiti della sequenza a minor frequenza di campionamento non la puoi piu' recuperare, quindi anche se ricampioni a frequenza piu' alta quell'informazione ormai se n'e' andata). Nota a margine: se per caso le frequenze di campionamento di ingresso e di uscita non fossero una un multiplo dell'altra, con questi algoritmi dovresti fare un passaggio intermedio per una frequenza di campionamento pari al minimo comune multiplo delle due frequenze di partenza e arrivo.

Ciao, Daniele

Reply to
Vulcan

Stasera cerco.. forse oggi compro un libro di ricette in C ( ne ho visto uno ) se ne contiene che mi interessano.

Grazie mille Franco.

Avevo cercato downsampling algorithm.. con poco successo ^_^

S
Reply to
simone

Se cerchi il "ricettario" vero e proprio, lo trovi anche on-line:

formatting link

ma ci trovi algoritmi generici di calcolo numerico, non direttamente algoritmi per l'elaborazione dei segnali. Se vuoi qualche indicazione su libri o pacchetti software per il DSP ti consiglio la FAQ del NG comp.dsp (il NG che ti avevo indicato nell'altro post). La FAQ la trovi ad esempio qui:

formatting link
potrebbe interessarti soprattutto il capitolo 1.3.6 (filter design software).

Ciao, Daniele

Reply to
Vulcan

e per l'aliasing come fa?

A questo punto tanto vale che sommi assieme gruppi di 6 campioni e divida il risultato per 6, almeno cosi' ha una sorta di rozzo filtraggio passa-basso.

Reply to
Lord Arthur / Inverse

Lord Arthur / Inverse ha scritto:

Hai ragione, ho cannato!! La spiegazione di Vulcan e' sicuramente + corretta

E io che ho scritto?:

Ciao!

-- Per rispondermi via email sostituisci il risultato dell'operazione (in lettere) dall'indirizzo

Reply to
Fabio G.

vero, mi ero perso quella parte della media.

Reply to
Lord Arthur / Inverse

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.