2014-06-06 13 views
7

La documentazione di entrambi questi metodi è molto generica ovunque io guardi. Mi piacerebbe sapere che cosa sto guardando esattamente con gli array restituiti che ottengo da ciascun metodo.comprensione getByteTimeDomainData e getByteFrequencyData nell'audio del web

Per getByteTimeDomainData, che periodo di tempo è coperto da ogni pass? Credo che la maggior parte degli oscopi copre un intervallo di 32 millisecondi per ogni passaggio. È quello che è coperto anche qui? Per i valori effettivi degli elementi stessi, l'intervallo sembra essere compreso tra 0 e 255. È equivalente a -1 - +1 volt?

Per getByteFrequencyData le frequenze coperte si basano sulla frequenza di campionamento, quindi ogni indice è una frequenza effettiva, ma per quanto riguarda i valori effettivi degli elementi stessi? Esiste un intervallo in dB equivalente ai valori restituiti nell'array restituito?

risposta

13

getByteTimeDomainData (e il più recente getFloatTimeDomainData) restituire un array di dimensioni che avete richiesto - la sua frequencyBinCount, che viene calcolata come metà del richiesto fftSize. Questo array è, naturalmente, allo stato attuale sampleRate esposto su AudioContext, quindi se è il 2048 fftSize predefinito, frequencyBinCount sarà 1024 e se il dispositivo è in esecuzione a 44.1kHz, ciò equivarrà a circa 23ms di dati.

I valori di byte vanno da 0 a 255, e sì, che esegue il mapping da -1 a +1, quindi 128 è zero. (Non è volt, ma valori senza unità a gamma intera.)

Se si utilizza getFloatFrequencyData, i valori restituiti sono espressi in dB; se si utilizza la versione Byte, i valori vengono mappati in base a minDecibels/maxDecibels (vedere la descrizione minDecibels/maxDecibels).

+0

come hai ottenuto 2,3 ms da un frequencyBinCount di 1024 e una frequenza di campionamento di 44,1 kHz? –

+0

Ooops, spento di un fattore dieci! Avrei dovuto dire 23 millisecondi. 1024 campioni divisi per 44100 campioni al secondo (ovvero Hertz) equivale a 0,023219 ... secondi. – cwilso

+0

Perché 'frequencyBinCount' viene utilizzato come larghezza dei dati del dominio del tempo? C'è qualche relazione tra la finestra del dominio del tempo e il conteggio degli intervalli di frequenza per il fft che mi manca qui? – JoeRocc

Problemi correlati