javascript - 使用网络音频创建自定义回声节点

标签 javascript web-audio-api

我正在玩 webkit 音频 API,我正在尝试创建回声效果,以实现我在循环中将 DelayNode 与 GainNode 连接(一个的输出是另一个的输入,反之亦然)。

Echo Node

效果很好,但现在我想创建一个 EchoNode 对象,我可以将其插入并与其他 AudioNode 对象连接。

类似于:

myEchoNode = new EchoNode(); 
myConvolverNode = context.createConvolver();
myConvolverNode.connect(myEchoNode);

我认为我应该让我的 EchoNode 继承自 AudioNode,这样每个其他 AudioNode 的连接功能都可以工作,但我不知道如何在 Javascript 中使用 Web Audio API 来做到这一点。

任何人都可以给我提示,或者如果您认为有更好的方法来完成,我将不胜感激。

谢谢

最佳答案

Oskar 的解决方案应该可以解决问题,但我想指出它需要您以非标准方式连接到您的 EchoNode(使用 EchoNode.input 而不是简单地连接到 EchoNode 本身).对于诸如反馈延迟之类的简单效果,可以通过工厂函数创建 EchoNode 来避免这种情况,该工厂函数返回混合了一些额外属性的 native DelayNode。这是来自 SynthJS 的示例:

function FeedbackDelayNode(context, delay, feedback){
    this.delayTime.value = delay;
    this.gainNode = context.createGainNode();
    this.gainNode.gain.value = feedback;
    this.connect(this.gainNode);
    this.gainNode.connect(this);
}

function FeedbackDelayFactory(context, delayTime, feedback){
    var delay = context.createDelayNode(delayTime + 1);
    FeedbackDelayNode.call(delay, context, delayTime, feedback);
    return delay;
}

AudioContext.prototype.createFeedbackDelay = function(delay, feedback){
    return FeedbackDelayFactory(this, delay, feedback);
};

如您所见,结果是一个可以以标准方式连接到其他节点的 native DelayNode,但它有一个附加的增益节点来提供反馈效果。

关于javascript - 使用网络音频创建自定义回声节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702733/

相关文章:

javascript - 在 NodeJS 中将 K,V 对分配给 JSON 对象

javascript - 为什么 Typescript 不鼓励将值设置为 null?

javascript - Google Chrome 中 createPeriodicWave() 的参数是什么?

javascript - setTimeout 设置为 0 时延迟约 100 毫秒

javascript - 构造失败 'AudioContext' : number of hardware contexts reached maximum

javascript - 如何将WaveSurfer js导出为音频文件?

javascript - 更新 React.js 组件中的状态在我的页面下留下空白

javascript - 无法加载 chrome 中 500 内部服务器错误的响应

Javascript - 在音轨中的确切位置时将音频搜索到特定位置

javascript - jQuery 电话正则表达式验证