javascript - 网络音频延迟节点指南

标签 javascript web-audio-api

尝试为一个小型网络音频应用程序连接延迟效果,但似乎无法让它听起来不错。看起来很简单,但没有得到我想要的结果。想让延迟音符一遍又一遍地重复并慢慢消失。我可以实现其中的增益部分,但似乎无法获得反馈循环部分,因此延迟仍在继续。有人能指出我正确的方向吗?

这是相关代码。添加了第二次延迟,希望能够延长,但并不完全是我想要的。

            var osc = ctx.createOscillator();
            var gainNode = ctx.createGain();

            if (addDelay === false) {
                osc.connect(gainNode);
                gainNode.connect(ctx.destination);
            }

            else if (addDelay === true) {
                var delay = ctx.createDelay();
                var delay2 = ctx.createDelay();
                delay.delayTime.value = 0.35;
                delay2.delayTime.value = 0.5;
                osc.connect(gainNode);
                gainNode.connect(ctx.destination);
                gainNode.connect(delay);
                gainNode.connect(delay2);
                delay.connect(gainNode);
                delay2.connect(gainNode);
                delay.connect(ctx.destination);
                delay2.connect(ctx.destination);        
            }
            gainNode.gain.value = 0.0;
            gainNode.gain.setTargetAtTime(0.75, ctx.currentTime, 0.1);
            gainNode.gain.setTargetAtTime(0.0, ctx.currentTime + sustainFnl, 0.01);
            osc.frequency.value = hz * octave / 4;
            osc.type = waveType;
            osc.start();
            osc.stop(ctx.currentTime + sustainFnl + 0.01);
        }

谢谢!

最佳答案

在 Chris Lowis 的这篇文章中找到了答案:http://blog.chrislowis.co.uk/2014/07/23/dub-delay-web-audio-api.html

var ctx = new AudioContext();
var audioElement = $('#feedback audio')[0];

audioElement.addEventListener('play', function(){
var source = ctx.createMediaElementSource(audioElement);

var delay = ctx.createDelay();
delay.delayTime.value = 0.5;

var feedback = ctx.createGain();
feedback.gain.value = 0.8;

delay.connect(feedback);
feedback.connect(delay);

source.connect(delay);
source.connect(ctx.destination);
delay.connect(ctx.destination);

正是我正在寻找的东西。

关于javascript - 网络音频延迟节点指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472681/

相关文章:

javascript - scriptProcessorNode 振荡器频率

javascript - 将 MediaElementAudioSourceNode 转换为 AudioBufferSourceNode

javascript - 如何在 React 组件的返回函数中使用 IIFE?

javascript - jQuery平滑滚动 anchor 问题

javascript - 如何使用音频文件中的振幅为图像大小制作动画?

javascript - 当我拖动连接到 Web Audio API 增益节点的 slider 时,它会弹出并单击。拖动时音量没有平滑变化

javascript - Web Audio API - 停止连接到释放包络的振荡器的正确方法

javascript - 在 React Native 中使用 onPress 调用两个函数

Javascript 从 div 位置获取单选按钮值

javascript - 如何在加载某些异步数据(在 Vuex 存储中)之前防止任何路由?