diff --git a/packages/superdough/phaser.mjs b/packages/superdough/phaser.mjs deleted file mode 100644 index 9aadc532..00000000 --- a/packages/superdough/phaser.mjs +++ /dev/null @@ -1,65 +0,0 @@ -const createFilter = (ctx, cutoff, Q) => { - const filter = ctx.createBiquadFilter(); - filter.type = 'notch'; - filter.gain.value = 1; - filter.frequency.value = cutoff; - filter.Q.value = Q; - return filter; -}; - -const createOscillator = (ctx, freq) => { - const osc = ctx.createOscillator(); - osc.frequency.value = freq; - osc.type = 'sine'; - return osc; -}; -const createGain = (ctx, gain) => { - const gainNode = ctx.createGain(); - gainNode.gain.value = gain; - return gainNode; -}; - -const createLFO = (ctx, freq, gain) => { - const osc = createOscillator(ctx, freq); - const gainNode = createGain(ctx, gain); - osc.start(); - osc.connect(gainNode); - return gainNode; -}; - -if (typeof GainNode !== 'undefined') { - class PhaserNode extends GainNode { - constructor(ac, input) { - super(ac); - this.lfo; - - const { speed, depth = 0.5 } = input; - console.log(depth); - - const makeupGain = ac.createGain(); - - if (this.lfo == null) { - this.lfo = createLFO(ac, speed, 2000); - } - const numStages = 2; - let fOffset = 0; - for (let i = 0; i < numStages; i++) { - const gain = ac.createGain(); - gain.gain.value = 1 / numStages; - const filter = createFilter(ac, 1000 + fOffset, 2 - Math.min(Math.max(depth * 2, 0), 1.9)); - this.connect(filter); - this.lfo.connect(filter.detune); - filter.connect(gain); - gain.connect(makeupGain); - fOffset += 200 + Math.pow(i, 2); - } - makeupGain.gain.value = 1; // how much makeup gain to add? - this.connect = (target) => makeupGain.connect(target); - return this; - } - } - - AudioContext.prototype.createPhaser = function (speed) { - return new PhaserNode(this, speed); - }; -} diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs index 2dc560d9..9721c5c8 100644 --- a/packages/superdough/superdough.mjs +++ b/packages/superdough/superdough.mjs @@ -7,7 +7,6 @@ This program is free software: you can redistribute it and/or modify it under th import './feedbackdelay.mjs'; import './reverb.mjs'; import './vowel.mjs'; -import './phaser.mjs'; import { clamp } from './util.mjs'; import workletsUrl from './worklets.mjs?url'; import { createFilter, gainNode, getCompressor } from './helpers.mjs';