Was bedeutet die FFT-Daten in die Web-Audio-API entsprechen?
Habe ich die FFT-Daten aus der Analyser-Knoten mit Hilfe des getByteFrequencyData
- Methode in der Web-Audio-API zum erstellen eines spectrum visualizer, wie unten gezeigt:
In diesem Fall habe ich 256 bins der Daten. Was genau bedeuten die zahlen in diesem entsprechen? Ist es der Dezibel-Pegel für jede Frequenz-Komponente. Wenn ja, wie kann ich wissen, welchen Wert die Frequenz jeder Klasse entspricht?
Ich würde gerne wissen, so kann ich Experimentieren in den Aufbau einer Grafik-eq und ich würde gerne wissen, auf welche Punkte zur Angabe der filter-Bänder. Im Idealfall möchte ich darstellen, Frequenzen von 20Hz bis 20kHz und plot Intervalle zwischen diesen entsprechend.
Vielen Dank für jede Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ja,
getByteFrequencyData
Ergebnisse in einer normalisierten array von Werten zwischen 0 und 255.(kopiert es die Daten auf dem array, die es übergeben bekommt-in).
die Frequenzbänder sind gerecht aufgeteilt, so dass jedes element N der Arrays entspricht:
so, der erste bin ist 0.
und, unter der Annahme einer samplerate von 44100 und einer
<analyzerNode>.fftSize
512 die zweite wäre: 86.13 Hz, und so weiter...finden Sie diese beiden Fragen und Antworten nützlich, auf dsp und auf SO:
Beachten Sie, dass die Länge des sampledata ist die Hälfte der
<analyzerNode>.fftSize
, effektiv begrenzen die Frequenz-Bandbreite auf die Hälfte der samplerate.audioContext.sampleRate
für bestimmten Wert.Mit 256 bins, jeder wird sein ~86 Hz auseinander (44100 kHz Samplingrate /fftSize, wobei fftSize ist zweimal die Anzahl der Lagerplätze). So dass Sie beginnen bei null und gehen bis in 86 Hz-Schritten von dort.
Die tatsächlichen Werte in den Kästen sind einfach eine Darstellung, wie viel von jeder Frequenz im signal (d.h. wie "laut" die Frequenz ist).
bins.length * 2
oder besser mitfftSize
direkt, siehe auch meine Antwort.