【发布时间】:2015-02-20 20:36:56
【问题描述】:
是否可以根据特定公式生成音调?我试过用谷歌搜索它,但我能找到的唯一东西是关于正常的正弦波,比如this other SO question。所以我想知道是否可以根据其他类型的公式生成音调?
在另一个 SO 问题上,我确实找到了指向 this demo page 的链接,但该页面似乎只是下载声音文件并使用它们来改变声音的音高。
我已经尝试使用多个振荡器来组合正弦波,基于 this answer,效果与预期一样:
window.ctx = new webkitAudioContext();
window.osc = [];
function startTones() {
osc[0] = ctx.createOscillator(),
osc[1] = ctx.createOscillator()
osc[0].frequency.value = 120;
osc[1].frequency.value = 240;
osc[0].connect(ctx.destination);
osc[1].connect(ctx.destination);
osc[0].start(0);
osc[1].start(0);
}
function stopTones() {
osc[0].stop(0);
osc[1].stop(0);
}
<button onclick="startTones();">Start</button>
<button onclick="stopTones();">Stop</button>
所以现在我想知道,是否有可能制作一个不基于添加这样的正弦波的波,例如锯齿波 (x - floor(x)),或正弦波的乘法 (sin(PI*440*x)*sin(PI*220*x))?
PS:我可以不支持某些浏览器 - 只要它仍然可以在至少一个中运行(尽管越多越好)。
【问题讨论】: