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

    Sample

    import Gain from "./gain"
    import Source from "./source"
  • ¶

    A sample is a re-triggerable audio buffer source.

    /**
     * Create a Sample
     *
     * @param {AudioContext} context
     * @param {AudioBuffer} buffer
     * @param {Object} [state]
     */
    export default function Sample (ac, buffer, config) {
      const sample = Gain(ac)
    
      sample.trigger = (time, dur) => {
        if (!time) time = ac.currentTime
        const source = Source(ac, buffer, config)
        source.connect(sample)
        source.onended = () => {
          if (sample.onended) sample.onended()
          source.disconnect()
        }
        source.start(time)
      }
      return sample
    }
    
    Sample.state = {
      gain: 0.8
    }