我对Web Audio API中的PeriodicWave有疑问。看看下面的代码:
https://slack-files.com/T04PVA27V-F051SS7LD-a71e14c8a2
对于脚本处理器的每次迭代,我得到通道数据0的不同值。是不是应该在每次迭代时得到相同的时间帧?毕竟,它正在为所提供的实数和虚数值执行IFFT。
步骤: 1)打开浏览器检查器。 2)将该代码复制到检查器控制台中。 3)在脚本处理器中放置一个断点。 4)检查输入缓冲区的值。
答案 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; });