import BaseEffect from './base-effect';
export default class Convolver extends BaseEffect {
    constructor(context, graph, params) {
        super(context, graph, params);
        this.volume = 0.25;
        console.log(`Creating convolver`);
        this.effectNode = this.context.getContext().createConvolver();
        this.effectNode.normalize = true;
        this.effectNode.buffer = this.effectParams.buffer;
    }
    setBuffer(buffer) {
        this.buffer = buffer;
        if (this.effectNode) {
            this.effectNode.buffer = buffer;
        }
    }
    setVolume(volume) {
        this.volume = volume;
        if (this.outputGain) {
            this.outputGain.gain.setValueAtTime(this.volume, this.context.getContext().currentTime);
        }
    }
    connectInput(node) {
        this.channelSplitter = this.context.getContext().createChannelSplitter(2);
        this.channelMerger = this.context.getContext().createChannelMerger(2);
        this.channelSplitter.connect(this.channelMerger, 0, 0);
        this.channelSplitter.connect(this.channelMerger, 1, 0);
        this.channelSplitter.connect(this.channelMerger, 0, 1);
        this.channelSplitter.connect(this.channelMerger, 1, 1);
        this.outputGain = this.context.getContext().createGain();
        this.outputGain.gain.setValueAtTime(this.volume, this.context.getContext().currentTime);
        node.connect(this.channelSplitter);
        this.channelMerger.connect(this.outputGain);
        this.outputGain.connect(this.effectNode);
        this.inputNode = node;
    }
}
