我正在创建用于测试的html5应用,并且正在使用音频api来在键盘上生成声音,我正在执行类似的操作
keyboard.keyDown(function (note, frequency) {
var oscillator = context.createOscillator(),
gainNode = context.createGainNode();
oscillator.type = 2;
oscillator.frequency.value = frequency;
gainNode.gain.value = 0.3;
oscillator.connect(gainNode);
if (typeof oscillator.noteOn !== 'undefined') {
oscillator.noteOn(0);
}
gainNode.connect(context.destination);
nodes.push(oscillator);
});
现在我的问题是,因为我试图在Google上找到示例,但没有成功,除振荡器以外,还能用于获取诸如钢琴或某些电子乐器之类的声音的其他参数以及如何传递它们?
最佳答案
我假设您对合成还很陌生。在尝试代码中的合成算法之前,我建议您使用一些可用的软件合成器-VST或其他方式。这将帮助您处理要引入算法中的参数种类。 http://www.soundonsound.com/sos/allsynthsecrets.htm是一系列非常好的综合教程的索引。 (从底部开始-第1部分!)
一旦准备好开始进行代码实验,一个很好的开始就是引入envelope来随着时间改变声音的音量或音高(像这样随时间改变参数称为“调制”)。这部影片可能是您感兴趣的:http://www.youtube.com/watch?v=A6pp6OMU5r8
请记住,几乎所有声学乐器都难以令人信服地通过算法进行合成,到目前为止,接近钢琴的最简单方法是使用真实钢琴音符的样本。
关于javascript - HTML5音频,获得钢琴声,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18752925/