Newsgroup: it.scienza.fisica
Titolo: spettro del suono

Buongiorno!
Mi occupo di HiFi per hobby e sono uno studente al primo anno in Matematica.
Con un analizzatore di Spettro, SpectraLab, mi sono divertito a fare FFT su
suoni vari. Soltanto non mi è riuscita una cosa. Ho provato a cambiar base
temporale su cui fare la trasformata (con FFT) di un suono "puro" di 1 KHz.
Ho una bella banda stretta centrata su questo valore con una base temporale
di un 1 sec. Restringendola base temporale a 0.05 sec, mi aspettavo un
allargamento sensibile della banda, che ivece non è verificato. Sapreste
spiegarmi perchè? Quali basi temporali scegliere per notare il fenomeno?
L'uica cosa che noto, passando all'intervallo pi breve, è la comparsa di 3-4
piccoli picchi in corrispondenza della "coda" destra (a > frequenza) della
banda spettrale: di che si tratta?
Ciauz :))

Tobias ha scritto:

Se la base temporale e' multiplo esatto del periodo, devi avere
un'unica componente di Fourier non nulla.
Anche se prendi una base di 1 ms.
Viceversa non capisco i piccoli picchi. Quanto piccoli?
Che frequenza di campionamento hai usato?
 
------------------------------
Elio Fabri
Dip. di Fisica - Univ. di Pisa
------------------------------

 
E' semplicemente il battimento dovuto alla finestratura (windowing)
temporale. Nel caso ideale di un segnale esteso da un tempo -Inf a
+Inf si avrebbe un solo tono in frequenza, quello a 1 kHz (e anche
quello a -1 kHz per la verità). Siccome invece stai considerando un
supporto limitato, è come se stessi convolvendo in frequenza una
sinusoide con un seno cardinale (che è la trasformata di un rettangolo,
ovvero della finestra che hai utilizzato).
Ora, se la finestra rettangolare che usi è ampia 1 sec, i lobi del
seno cardinale hanno risoluzione 1 Hz, che è assai più basso della
portante che consideri, 1 kHz, quindi praticamente ininfluente. Al
contrario, se la finestra è ampia 0.05 sec i lobi del seno cardinale
sono ampi 20 Hz, e come vedi l'effetto del battimento inizia a non
essere più trascurabile.
ciao
capitan harlock

 Che frequenza di campionamento hai usato?
Ho fatto così!
Ho utilizzato un software che genera forme d'onda. Ho chiesto che generasse
un'onda sin di freq. 1024 Hz. Ho registrato il suono così prodotto (questo
passaggio ha ovviamente aggiunto rumore a non finire) ed ho ottenuto un'onda
che lungi dall'essere una sinusoide era però di certo "bella" periodica. Ho
quindi applivatop la FFT a pezzi sempre più brevi di questo segnale. Una
cosa molto simile l'ho ottenuta registrando al PC il suono di un diapason:
un bel picco stretto stretto attorno ai 442 Hz. Ma anche questa volta,
trasformando pezzi di diversa lunghezza, non ho visto nulla. La
registrazione dei suoni l'ho gatta a 44100, 16 bit, mono.
Lo so che alla fine ho trasformato un'onda un po' compromessa dai passaggi
artigianali, ma non mi è venuto in mente alcun modo alternativo per passare
al software una onda di forma, frequenza, ampiezza, ecc, prestabilite.
Consigli?
Ciauz :-)

 essere più trascurabile.
L'avevo immaginato
Ho un altro dubbio. Ma in pratica, lo spettro in tempo reale, come viene
calcolato? Io immaginino che probabilmente il software registra per un
intervallino di tempo l'andamento dell'ampiezza nel tempo e poi calcola la
trasformata. E così a ripetizione....può essere?
Grazie per la risposta.
Ciao :-)

 calcola la trasformata. E così a ripetizione....può essere?
Sicuramente e' qualcosa del genere, e quasi sicuramente usando una
finestra che ho chiamato "smussata" perche' non ricordo il termine
tecnico.


 Ciauz :-)
Ciao.
-- 
Bruno Cocciaro
--- Li portammo sull'orlo del baratro e ordinammo loro di volare.
--- Resistevano. Volate, dicemmo. Continuavano a opporre resistenza.
--- Li spingemmo oltre il bordo. E volarono. (G. Apollinaire)

 Dip. di Fisica - Univ. di Pisa
Wow!!!!!!

 trasformata. E così a ripetizione....può essere?
Ci sono svariati metodi computazionali per calcolare gli spettri.... 
innanzitutto l'unico metodo utilizzabile su un calcolatore è la DFT
(Discrete Fourier Transform) o meglio la FFT (Fast F.T.): i segnali
trattati sono sempre campionati e conseguentemente gli spettri utili
sono compresi tra -fn e fn, dove con fn si indica la Freq. di Nyquist
(metà della frequenza di campionamento). Inoltre l'elaborazione avviene
SEMPRE su segnali definiti su compatti limitati (ad esempio per t che va
da 0 a T), ergo sono periodicizzabili, ergo lo spettro è campionato.
Come dice Elio Fabri la FFT si calcola su un segnale lungo un numero N =
2^M campioni (è anche possibile costruire stadi FFT in base 3, 4, e così
via però) ma questo non è un problema perchè si aggiungono degli zeri
per approssimare alla potenza di 2 successiva, fatto ininfluente nella
valutazione dello spettro.
Tuttavia il numero elevato di campioni è molto spesso un problema. La
FFT ha complessità computazionale O(N)=N*log(N) (che è meglio di quella
standard N^2 per la DFT, ma per N=10^6 qualsiasi computer impazzirebbe).
Quindi cosa si fa ad esempio? Si divide il segnale in tanti intervalli
anche sovrapposti e si valuta il periodogramma (che è una sorta di 
"spettro di potenza campionario") su ciascuno, per poi mediare ed ottenere
lo spettro approssimato complessivo. Molti software audio (penso a
Cool Edit Pro ad esempio) inoltre non fanno questo per tutta la durata
del segnale, ma solo per una porzione istantanea. Raffigurando tutti
gli spettri istantanei lungo un asse dei tempi hai un grafico
bidimensionale tempo-frequenza chiamato "spettrogramma", molto utile
per svariate applicazioni. Prova a pensare ai grafici a barre degli
impianti HiFi (o a quello di winamp!): essi non rappresentano niente
altro che le potenze istantanee, naturalmente su un asse delle frequenze
campionato
ciao
capitan harlock

 cose sono diverse dalla classica trasformata??
E' così. MA ricorda che il tuo segnale periodico (Anche localmente) è
campionato. Ergo le frequenze vengono periodicizzate ai multipli della
frequenza di campionamento. Inoltre essendo periodico, ha uno spettro
discreto. In conclusione un segnale discreto periodico ha uno spettro
discreto periodico. Dunque la DFT / FFT di un segnale limitato
su un compatto e campionato è ancora un segnale limitato su un compatto
e campionato. Se la finestratura è coerente con la lunghezza T del
compatto allora in frequenza il seno cardinale in convoluzione va
a farsi benedire perchè diventa un impulso di dirac: convolvere un
segnale con un impulso restituisce il segnale stesso. In conclusione
dovresti ottenere una riga impulsiva alla freq. della sinusoide.
Tuttavia se c'è di mezzo anche il rumore di toni spuri ne possono
comparire potenzialmente su tutte le frequenze.
ciao
capitan harlock

 estremi.
Questo è assai probabile

 Innanzitutto chiarisci se la freq. di campionamento è 44.1 kHz o 8
44.1 kHz è il campionamento usato dal registratore di suoni del PC. Il suono
così registrato (da un diapason), è stato passato come file wav
all'analizzatore, il quale campiona ad una fre. di 8 kHz.
Ciao e grazie
PS: spiegheresti cos'è il seno cardinale?
Ma non andiamo troppo lontano...devo prima digerire :-)

 cose sono diverse dalla classica trasformata??
Eh si' sono diverse eccome.
Se ho ben capito tu spereresti di osservare un allargamento della banda a
causa del fatto che hai analizzato un segnale che era periodico solo per un
intervallo di tempo minore (e, presumibilmente, zero altrove), cioe'
spereresti di ritrovare dalla tua analisi digitale cio' che si sa avvenire
per le trasformate di Fourier. Ma questa e' una speranza vana.
L'allargamento che osservi e' tutto dovuto a effetti "spuri" (non mi ricordo
proprio per niente bene, mi pare si chiami "aliasing" l'effetto che osservi,
ma potrei sbagliare) ed e' normale che tu non noti differenze notevoli al
variare dell'intervallo di tempo totale Ttot in cui hai campionato il
segnale.
Differenze notevoli le osservi quando Ttot e' un multiplo esatto del periodo
del segnale che stai analizzando: in tal caso osserveresti, come ti e' stato
fatto notare, non una banda ma un risultato della FFT non nullo solo in un
punto (piu' eventuali armoniche se il segnale non e' monocromatico).
Se il segnale e' a 1024 Hz e il campionamento ce lo hai a 8KHz allora Ttot
deve essere un multiplo di 125/8000 secondi.
Se il software non ti permette una cosa del genere allora le cose si
complicano. Se conosci con esattezza Ttot nonche' le frequenza del segnale e
del campionamento allora si puo' ugualmente risalire all'ampiezza della
sinusoide dalla analisi della FFT (questo almeno nella auspicabile ipotesi
che il tuo software non usi la finestra smussata di cui parlava Elio).
Ad ogni modo senza un minimo di manuale del software e' veramente un
problema venirne fuori (venirne fuori=misurare ampiezza e fase delle diverse
armoniche componenti il tuo segnale periodico che e' l'unica cosa, mi pare,
che si possa fare con una FFT di un segnale periodico). Oltre alla questione
dell'uso della finestra smussata o meno c'e' anche il problema della
presentazione dei risultati:
alcuni software presentano in output "energia e fase" altri "ampiezza in
fase e ampiezza in quadratura", altri solamente "energia", altri
SQRT(energia), e senza un manuale uno dovrebbe preventivamente inferire da
risultati di esperimenti mirati quale e' l'output scelto dal software in
questione.
A parte eventuali fattori a moltiplicare si ha:
AF=Ampiezza in fase (j/Ttot)=SUM(i=0 to N-1)
{F(i*Delt) * cos[(2*pigreco*j/Ttot)*(i*Delt)]}
AQ=Ampiezza in quadratura (j/Ttot)=SUM(i=0 to N-1)
{F(i*Delt) * sin[(2*pigreco*j/Ttot)*(i*Delt)]}
Energia (j/Ttot)=AF^2+AQ^2
Fase (j/Ttot)=arctan(AQ/AF)
dove Delt e' l'inverso della frequenza di campionamento e N*Delt=Ttot.


 impazzirebbe).
Non credo proprio.
Nel lavoro che ti dicevo, di qualche anno fa, ho usato N > 10^5, sul
mio PC.
Oggi, con l'aumento di frequenza di clock e di RAM, sono sicuro che
non avrei problemi con 10^6.
Non aggiungo altro sulla connessione fra le varie TdF, perche' Toby
deve digerire :-))
 
------------------------------
Elio Fabri
Dip. di Fisica - Univ. di Pisa
------------------------------

 non avrei problemi con 10^6.
Beh l'anno scorso, quando lavoravo alla tesi, mi ero trovato a dover
studiare lo spettro di un segnale di un milione di campioni e il computer
non ci stava dietro (pentium4 con 1 giga di ram usando una libreria
scritta in C), figurati ^^;
ciao
capitan harlock