• 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
  • ¶

    Pluck synth

    import { instrument } from "../synth"
    import Gain from "../kit/gain"
    import Noise from "../kit/noise"
    import FeedbackCombFilter from "../kit/feedback-comb-filter"
    import GainEnvelope from "../kit/gain-envelope"
  • ¶

    Poor’s man version of Karplus-String string synthesis

    export default function Pluck (ac, config) {
      const pluck = instrument(ac, {
        noise: [ Noise, "envelope" ],
        envelope: [ GainEnvelope, "combFilter" ],
        combFilter: [ FeedbackCombFilter, "amp" ],
        amp: [ Gain, "output" ],
      }).update(config)
    
      pluck.trigger = (freq, time, dur) => {
        const delay = 1 / freq
        pluck.combFilter.delayTime.setValueAtTime(delay, time)
        pluck.envelope.trigger(time)
      }
      return pluck
    }
    
    Pluck.defaults = {
      noise: {
        type: "white",
      },
      envelope: {
        attack: 0.1,
        decay: 0.1,
      },
      combFilter: {
        delayTime: 0.2,
        resonance: 0.9,
      }
    }