Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5音频,获得钢琴的声音_Javascript_Html_Audio - Fatal编程技术网

Javascript HTML5音频,获得钢琴的声音

Javascript HTML5音频,获得钢琴的声音,javascript,html,audio,Javascript,Html,Audio,我正在创建我的html5应用程序进行测试,我正在使用音频api在键盘上生成声音,我正在做类似的事情 keyboard.keyDown(function (note, frequency) { var oscillator = context.createOscillator(), gainNode = context.createGainNode(); oscill

我正在创建我的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);
                });

现在我的问题是,因为我试图在谷歌上找到一些例子,但没有成功,除了振荡器之外,还有哪些参数可以用来获得钢琴或其他电子乐器的声音,以及如何传递它们

我想你对合成相当陌生。在代码中尝试合成算法之前,我建议使用一些可用的软件合成器-VST或其他。这将为您提供一个关于要引入算法的参数类型的句柄。是一系列非常好的合成教程的索引。(从底部开始-第1部分!)

一旦你准备好开始在代码中进行实验,一个很好的开始就是引入一种方法来随时间改变声音的音量或音高(随时间改变一个参数,像这样称为“调制”)。这段视频可能很有趣:


请记住,几乎所有的原声乐器都很难令人信服地通过算法合成,到目前为止,接近钢琴最简单的方法是使用真实钢琴音符的样本

钢琴合成是一个相当广泛的话题!!!直到最近(不到3年),这种合成才产生了良好的结果。Pianotech是其中之一,我尝试了一些喜悦,但算法有一个很好的结果是相当数学,因此cpu密集。你可能会在网上找到一些教程来获得一架基础钢琴,即锤声+基频+谐波+混响+回声。如果你有一些教程的来源可以分享,我将不胜感激。非常感谢!)还有一个问题,是否有任何基本的想法,比如改变LFO或同时组合多个振荡器?这里有一个LFO代码示例,但我自己没有尝试过。还展示了如何(使用鼠标)实时更改频率,并有一些混合波形-有一个指向Github repo的链接。此外,对于声音上的声音教程,这个HTML5模块化合成器可能很有用:采样真正的钢琴音符不适用于微音。@MészárosLajos 10音符可能会被视为相当低的质量-一个“好”的样本集可能至少每3或4个半音有一个音符(以及许多不同的速度层)。但是,原则是一样的。