问题
The documentation for both of these methods are both very generic wherever I look. I would like to know what exactly I'm looking at with the returned arrays I'm getting from each method.
For getByteTimeDomainData, what time period is covered with each pass? I believe most oscopes cover a 32 millisecond span for each pass. Is that what is covered here as well? For the actual element values themselves, the range seems to be 0 - 255. Is this equivalent to -1 - +1 volts?
For getByteFrequencyData the frequencies covered is based on the sampling rate, so each index is an actual frequency, but what about the actual element values themselves? Is there a dB range that is equivalent to the values returned in the returned array?
回答1:
getByteTimeDomainData
(and the newer getFloatTimeDomainData
) return an array of the size you requested - its frequencyBinCount
, which is calculated as half of the requested fftSize
. That array is, of course, at the current sampleRate
exposed on the AudioContext
, so if it's the default 2048 fftSize
, frequencyBinCount
will be 1024, and if your device is running at 44.1kHz, that will equate to around 23ms of data.
The byte values do range between 0-255, and yes, that maps to -1 to +1, so 128 is zero. (It's not volts, but full-range unitless values.)
If you use getFloatFrequencyData
, the values returned are in dB; if you use the Byte version, the values are mapped based on minDecibels
/maxDecibels
(see the minDecibels
/maxDecibels
description).
来源:https://stackoverflow.com/questions/24083349/understanding-getbytetimedomaindata-and-getbytefrequencydata-in-web-audio