• Jump To … +
    index.js conga.js cowbell.js hihat.js kick.js mini.js monosynth.js pluck.js snare.js tom.js tonewheel.js delay.js feedback-comb-filter.js filter.js gain-envelope.js gain.js lfo.js mono-buffer.js noise.js osc-bank.js osc.js pulse.js sample.js soft-clipper.js source.js vca.js vcf.js vco.js wave-shaper.js synth.js
  • ¶

    Voltage Controlled Filter

    import { createAudioNode, triggerAdsr } from "../synth"
  • ¶

    A voltage controlled filter is a BiquadFilter with a AD (attack-decay) envelope connected to it’s frequency

    /**
     * Create a VCF
     */
    export default function VCF (ac, state) {
      const filter = createAudioNode(ac, "BiquadFilter", VCF.params)
  • ¶

    set the default parameters so plug work with them

      filter.attack = 0.01
      filter.decay = 0.1
      filter.octaves = 2
    
      filter.trigger = function (time, dur) {
        if (!time) time = ac.currentTime
        this.base = this.frequency.value
        this.peak = this.base * this.octaves
        const release = triggerAdsr(time, filter.frequency, filter)
        if (dur) release(time + dur)
        return release
      }
      return filter.update(state)
    }
    VCF.params = ["type", "frequency", "detune", "Q",
      "attack", "decay", "octaves"]
    VCF.defaults = {
      type: "lowpass",
      frequency: 880,
      attack: 0.1,
      decay: 0.5,
      octaves: 2
    }