生成特定频率的声音

4
我找到了这个库:http://codebase.es/riffwave/,它可以在javascript中实时生成声音。
我想要一个函数,能够生成特定频率的正弦波。
但是使用该库需要大量数学计算,我无法使其正常工作。
我尝试过:
for(var i=0;i<10000;i++)data.push(127*(Math.sin(2*Math.PI*f*i)));

但是它没有起作用。

我该怎么做呢?

1个回答

4

试试这个:

var freq = 440;  // Frequency (cycles per second)
var rate = 44100;  // Sample rate (samples per second)
for (var i = 0; i < 10000; i++) {
    var time = i / rate;       
    data[i] = 128 + Math.round(127 * (Math.sin(2 * Math.PI * freq * time)));
}

哇!太完美了,非常感谢!你能告诉我费用是多少吗? - Alexandre Khoury
采样率决定每秒有多少个样本。速率越高,质量越高。44100 Hz是常见的速率,所以我猜riffwave将其用作默认值。 - Ken Fehling
实际上,如果你执行 alert(wave.header.sampleRate); 你会发现它是8000。但幸运的是我在我的代码中写了 wave.header.sampleRate=rate;。(我不知道为什么我写了那个) - Alexandre Khoury

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接