This article похоже, у вас есть способ сделать только то, что вы ищете.
Основная предпосылка:
function MyCustomNode(){
this.input = audioContext.createGainNode();
var output = audioContext.createGainNode();
this.connect = function(target){
output.connect(target);
};
}
Пример:
function AudioBus(){
this.input = audioContext.createGainNode();
var output = audioContext.createGainNode();
var custom = new MyCustomNode();
this.input.connect(custom);
custom.connect(output);
this.connect = function(target){
output.connect(target);
};
}
//create some native oscillators and our custom audio bus
var bus = new AudioBus(),
instrument1 = audioContext.createOscillator(),
instrument2 = audioContext.createOscillator(),
instrument3 = audioContext.createOscillator();
//connect our instruments to the same bus
instrument1.connect(bus.input);
instrument2.connect(bus.input);
instrument3.connect(bus.input);
bus.connect(audioContext.destination);
Edit: Вопрос может быть возможным дубликатом Creating a custom echo node with web-audio, но я считаю, что ответ вы ищете это the one from @MattDiamond. Это не совсем довольно решение, но это, кажется, получить работу:
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);
};
возможно дубликат [Создание пользовательский эхо-узел с веб-аудио] (http://stackoverflow.com/questions/13702733/creating-a-custom-echo-node-with-web-audio) – idbehold