使用周期波作为逆变换块

时间:2015-05-26 00:51:24

标签: javascript fft web-audio ifft

我对Web Audio API中的PeriodicWave有疑问。看看下面的代码:

https://slack-files.com/T04PVA27V-F051SS7LD-a71e14c8a2

对于脚本处理器的每次迭代,我得到通道数据0的不同值。是不是应该在每次迭代时得到相同的时间帧?毕竟,它正在为所提供的实数和虚数值执行IFFT。

步骤: 1)打开浏览器检查器。 2)将该代码复制到检查器控制台中。 3)在脚本处理器中放置一个断点。 4)检查输入缓冲区的值。

2 个答案:

答案 0 :(得分:2)

Echo66:你没有设置过osc.frequency.value;它在A440播放。我不认为你应该在每次迭代时都期望相同的值。

答案 1 :(得分:2)

为什么不使用离线上下文来捕获所需的IFFT? 像IFFT via PeriodicWave and OfflineAudioContext

这样的东西

var c = new OfflineAudioContext(1, 128, 48000)
var r = new Float32Array(128)
var i = new Float32Array(128)

// Set up r/i for a plain cos wave.
r[1] = 1;

var o = c.createOscillator();
var w = c.createPeriodicWave(r, i);

o.setPeriodicWave(w);
o.connect(c.destination);
o.start();

// The result should be a cos(2*pi*440/48000*k), k = 0, 1,..., 127.
var result;

c.startRendering().then(function (b) {result = b; });