Newsgroup: it.comp.programmare.win32
Titolo: Scheda audio e demodulatori software [un po' lunghetto]

Ciao a tutti!
Come new entry del ng, concedetemi due righe per presentarmi: mi
chiamo Massimo e da qualche anno mi occupo di progettazione di
software in ambito medicale per un'azienda di Milano. Mi sono sempre
occupato di problematiche inerenti progettazione e amministrazione di
database, ma adesso mi trovo a dover risolvere il seguente problema,
totalmente nuovo per me:
devo acquisire, mediante la linea di input della scheda audio, un
segnale digitale (freq. camp. 125 Hz, 16 bit per campione)  modulato
in frequenza (portante 2 kHz, mono, banda passante 4 kHz).
Non avendo mai avuto a che fare con la programmazione delle schede
audio, ho spulciato un po' di documentazione e alla fine mi sembra che
la cosa da fare sia quella di utilizzare il controllo MCI, il quale
permette di campionare il segnale in ingresso in un certo formato (es.
PCM) e con certe caratteristiche di banda e di frequenza di
campionamento. Il tutto viene registrato in un file .WAV. Da cui le
mie domande:
- Il formato PCM corrisponde al Pulse Code Modulation, o e' tutt'altra
cosa?
- Dove posso trovare della documentazione riguardante il formato del
file .WAV?
- Se quello che registro nel file .WAV e' effettivamente il mio
segnale di ingresso campionato, dovrei applicare un demodulatore
software per ottenere il segnale originale in banda base (sequenza di
campioni): esistono questi demodulatori e se si, avete idea di dove
possa trovare della documentazione in merito?
Mi scuso per la banda occupata e ringrazio anticipatamente chiunque
possa darmi una mano.
Buon lavoro a tutti!
Massimo Fauro

 campioni)
Mi sfugge il senso del tuo ragionamento: tu hai gia` la sequenza dei campioni.
Se torni a "offrire" alla scheda sonora questi campioni, ci pensera` lei a
riconvertirli nel segnale di partenza.
Se ricordo bene le lezioni di Comunicazioni Elettriche, esiste una funzione
apposita con cui fare la convoluzione del segnale PCM per riottenere il segnale
iniziale... ma non ti interessa, perche` te lo fa automagicamente il DAC della
scheda sonora.
Forse ti riferivi all'analisi spettrale? Per quella esistono innumerevoli
pacchetti di FFT (Fast Fourier Transform), che e` una DFT "velocizzata".
--
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

possa trovare della documentazione in merito?
Purtroppo non ho capito: stai chiedendo come trasformare la frequenza da
(per esempio) 8000Hz del file wav a 125Hz (o quella che ti serve)?
Saluti,
    Mardy


Prova
http://msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/psdk/multimed/mm
io_4jvz.htm
Saluti,
    Mardy

scheda sonora.
A me le lezioni di Comunicazioni sono cadute proprio nel dimenticatoio
(il tempo e' carogna), comunque quello che ho in ingresso alla scheda
e' un segnale (sequenza di campioni) modulato in frequenza: devo (o
dovrei?) campionarlo e demodularlo per riottenere il segnale
originario (che poi il segnale originario sia una sequenza di campioni
ha importanza? Boh, non ricordo...)
Grazie mille e buon lavoro!!
Massimo Fauro


No. I campioni a 125 Hz rappresentano il segnale originario in banda
base. Questi campioni vengono modulati in frequenza e ottengo il
segnale che arriva alla scheda audio. Campiono a una certa frequenza e
quindi ottengo i campioni di un segnale modulato in frequenza. Ma per
riottenere la sequenza di campioni a 125 Hz dovrei demodulare la
sequenza dei campioni del segnale modulato in frequenza... Boia, lo so
che e' un casino, ma bene o male me lo devo smazzare....
Grazie per le indicazioni e buon lavoro!!
Massimo Fauro

Ciao a tutti!
Ciao, io sto sperimentando cone le waveInxxxx e waveOutxxxx, sono
relativamente semplici da usare e quindi puoi gestirti i segnali campionati
da programma senza prima passare per file .wav. Non e' certo l'unica
soluzione.
Per quanto riguarda il PCM, e' esattamento quello che hai detto, una sola
raccomandazione: campiona a 44.100 Hz, in quanto se la scheda non fosse ben
progettata, campionando a frequenza piu' basse potresti trovarti un ammasso
di aliasing in frequenza sul segnale.
Per quanto riguarda i demodulatori, ti consiglio di cercare DSP e
demodulators e via dicendo, ci sono molte cose. Tieni conto che devi
imparare qualcosa sul filtraggio numerico, come minimo.
Se hai bisogno di altre informazioni, scrivi pure (non so se questo gruppo
e' considerato adatto, comunque... eventualmente in posta elettr.)
Ciao, Stefano.
http://digilander.iol.it/satollo
Rimuovi _rimuovi_ per scrivermi in casella.


s(t)cos(2 _pi_ F t),
con estensione spettrale di s(t) compresa tra -125/2 Hz e 125/2 Hz
F = 2 KHz
Seganle campionato
s(kT)cos(2 _pi_ F kT) = s'(k)
con k intero e T = 1/8000 sec = 125 micro-secondi
Traslazione in frequenza
s''(k) = e^(- j * 2 * _pi_ * F * T) * s'(k)
Filtraggio passabasso
s'''(k) =  s''(k-n)(*)PB(n)
Ora, il problem e' di progettare il filtro passabasso
che abbia una frequenza di taglio a 125/2 Hz, e una decente
attenuazione.
Dati i parametri di Attenuazione e una relizzazione
(FIR, filtri ellittici, ecc) esistono strumenti di calcolo
che danno i coefficienti del polinomio in Z
(frazione di polinimi in Z, dipende dalla realizzazione scelta)
che definisce il nucleo della convoluzione.
La soluzione presentata ha lo svantaggio della moltiplicaione
complessa.
La soluzione reale prevete una seconda modulazione
con la stessa portante e sempre un filtraggio passabasso.
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 e' un segnale (sequenza di campioni) modulato in frequenza
Ah, ecco, ora si` che e` chiaro! Rileggendo il tuo messaggio, immagino che si
tratti di una modulazione AM, giusto?
Sembra proprio che cio` che fa al caso tuo sia un pacchetto di FFT o DFT.
L'algoritmo del secondo e` abbastanza semplice da mettere in pratica, tempo fa
l'ho fatto senza grossi problemi.
Se la modulazione e` FM, la questione si complica un po' perche` l'analisi
spettrale di un segnale FM e` molto piu` complessa.


 tratti di una modulazione AM, giusto?
Ehm, scusa... ho la testa un po' via in questo periodo. :)
Se ti interessa posso dare un'occhiata ai miei appunti di Comunicazioni...
comunque confermo che la FFT/DFT fa al caso tuo, anche se (dato che la
modulazione e` FM) dovrai suddividere la banda in piu` "settori" (almeno 256) e
quindi ti servira` piu` potenza computazionale.
Il mini-analizzatore di spettro che ho scritto tempo fa (lo trovi sul mio sito)
ha una sessantina di settori, e occupa al 5% un PII-450 pur usando la DFT
(quindi molto inefficiente)... se tanto mi da` tanto, 256 settori dovrebbero
occupare quella CPU al 20%, ma se usi FFT probabilmente diventerebbe ancora
meno.


Pochi bytes per ringraziarvi dei vostri suggerimenti. Mi sembra di
avere avuto sufficienti elementi per cominciare a lavorare.
