AnalyserNode的getFloatFrequencyData vs getFloatTimeDomainData

问题描述:

所以我认为我很了解getFloatFrequencyData。如果getFloatFrequencyData返回一个包含1024个值的数组,则每个值代表一个频点/范围的音量。在采样率为44.1的1024个值的情况下,每个值将表示大约20赫兹的频率范围的音量。AnalyserNode的getFloatFrequencyData vs getFloatTimeDomainData

现在怎么办getFloatTimeDomainData?假设我有2048个值,每个值代表什么?

understanding getByteTimeDomainData and getByteFrequencyData in web audio不一样。或者至少,这个问题的答案不回答我的问题。

Float32Array使用getFloatTimeDomainData将包含样本值的阵列,每个值在所采样的位置限定所述振幅,通常在[-1, 1]域获得。样本位置是唯一分布的,所获得的数据本质上相当于原始的PCM

对于正弦波,这将产生以下近似曲线之间逐渐改变的连续值:

0 ... 0.7 ... 1.0 ... 0.7 ... 0 ... -0.7 ... -1.0 ... -0.7 ... 0 ... 

认为它为一系列后续值,它们一起限定了形状音频波的;如果你是可视化的,也就是说,一个帆布获得的值,使用样本值y坐标(幅度)和x坐标(时间),随后增加值,你会得到一个oscilloscope,如:

sine wave

请注意该正弦波形如何与上述示例值相关联。下面是一些例子操作,您可以在这个数据做才能更好地理解:

  • 如果您是通过2乘每个值,则可以通过将100%(双卷)放大音量

  • 如果你用0来替换每一个值,你会得到沉默

  • 如果你跳过每第二个值,你会得到一个100%仰音频(双播放速度)

getFloatTimeDomainData从音频流 - 即原始音频数据返回PCM数据的样本。

+0

准确地说,每个值代表什么?频率数据值表示频率范围的音量。时域数据表示y的x? – maximedupre