À quoi correspondent les données FFT dans L'API Web Audio?
J'ai utilisé les données FFT du nœud analyseur en utilisant la méthode getByteFrequencyData
dans L'API Web Audio pour créer un visualiseur de spectre comme indiqué ci-dessous:
Dans ce cas, j'ai 256 bins de données. À quoi correspondent exactement les chiffres? Est-ce le niveau de décibels de chaque composante de fréquence. Si oui, comment puis-je savoir à quoi correspond la valeur de la fréquence de chaque bin?
Je voudrais savoir pour pouvoir expérimenter dans la construction d'un égaliseur graphique et je voudrais donc savoir à quels points indiquer les bandes de filtre. Idéalement, je voudrais représenter les fréquences de 20Hz à 20kHz et tracer des intervalles entre ceux-ci en conséquence.
Merci pour toute aide.
2 réponses
Oui, getByteFrequencyData
donne un tableau normalisé de valeurs entre 0 et 255.
(il copie les données dans le tableau qu'il reçoit).
Les bandes de fréquences sont divisées également, de sorte que chaque élément n de votre tableau correspond à:
N * samplerate/fftSize
Donc, le premier bac est 0.
et, en supposant un samplerate de 44100 et un <analyzerNode>.fftSize
de 512 le second serait: 86.13 Hz, et ainsi de suite...
, Vous trouverez ces deux questions et réponses utiles, sur dsp et sur , DONC:
Note que la longueur de votre sampledata est la moitié de la <analyzerNode>.fftSize
, limitant efficacement la gamme de fréquences à la moitié du taux d'échantillonnage.
Avec 256 bins, chacun sera séparé de ~86 Hz (fréquence d'échantillonnage de 44100 kHz / fftSize, où fftSize est le double du nombre de bins). Donc, vous commencez à zéro et montez par incréments de 86 Hz à partir de là.
Les valeurs réelles dans les bacs ne sont qu'une représentation de la quantité de chaque fréquence présente dans le signal (c'est-à-dire à quel point la fréquence est "forte").