À 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:

Visualiseur De Spectre

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.

25
demandé sur RobotEyes 2013-02-09 18:49:52

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.

28
répondu kr1 2017-05-23 11:55:07

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").

5
répondu Kevin Ennis 2013-02-09 16:35:55