【问题标题】:HTML5 Audio , getting the sound of pianoHTML5 Audio , 获得钢琴的声音
【发布时间】:2013-09-12 16:33:21
【问题描述】:

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

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

【问题讨论】:

  • 钢琴合成是一个相当广泛的话题!直到最近(不到 3 年),这种综合才取得了良好的效果。 Pianotech 是其中之一,我很高兴地尝试过,但是要获得良好结果的算法是相当数学的,因此 cpu 密集型。您可能会在网上找到获得基本钢琴的教程,即锤音 + 基音 + 谐波 + 混响 + 回声。
  • 如果您有一些教程资源可以分享,我将不胜感激?

标签: javascript html audio


【解决方案1】:

我假设您对合成相当陌生。在代码中尝试合成算法之前,我建议使用一些可用的软件合成器 - VST 或其他。这将使您掌握要引入算法的参数类型。 http://www.soundonsound.com/sos/allsynthsecrets.htm 是一系列非常好的综合教程的索引。 (从底部开始 - 第 1 部分!)

一旦您准备好开始在代码中进行试验,一个很好的起点是引入 envelope 以随时间更改声音的音量或音高(像这样随时间更改参数称为“调制” )。这个视频可能会感兴趣:http://www.youtube.com/watch?v=A6pp6OMU5r8

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

【讨论】:

  • 非常感谢! :) 还有一个问题,是否有任何基本想法可以开始,例如更改 LFO 或一次组合多个振荡器?
  • 这里有一个 LFO 代码示例 digitalsurgeons.com/blog/web-audiodata-javascript 虽然我自己没有尝试过。 digitalsurgeons.com/labs/dspad 还展示了如何实时更改频率(使用鼠标)并有一些混合在一起的波形 - 有一个 Github 存储库的链接。
  • 另外,对于声音教程中的声音,这个 HTML5 模块化合成器可能很有用:g200kg.com/en/docs/webmodular
  • 采样真实的钢琴音符不适用于微音。
  • @MészárosLajos 10 个音符可能会被视为质量非常低 - 一个“好的”样本集可能至少每 3 或 4 个半音(以及许多不同的速度层)有一个音符.但是是的,原理是一样的。
猜你喜欢
  • 2014-08-28
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多