Web Audio API FRP wrapper for creating, routing, and triggering AudioNodes.
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
params
processors
sources
.gitignore
README.md
index.js
link-param.js
package.json
processor.js
routable.js
triggerable.js

README.md

audio-slot

Web Audio API FRP wrapper for creating, routing, and triggering AudioNodes.

This module serves as the audio engine for Loop Drop.

NPM

Related modules / deps

Example

Create a simple monosynth:

var Slot = require('audio-slot')

var context = {
  audio: new AudioContext(),
  nodes: {
    oscillator: require('audio-slot/sources/oscillator'),
    filter: require('audio-slot/processors/filter'),
    envelope: require('audio-slot/params/envelope'),
    lfo: require('audio-slot/params/lfo')
  }
}

var synth = Slot(context)
synth.set({
  sources: [
    { 
      node: 'oscillator', 
      shape: 'sawtooth', 
      amp: {
        node: 'envelope',
        value: 0.6,
        attack: 0.1,
        release: 1
      },
      octave: -1,
      detune: {
        value: 0,
        node: 'lfo',
        amp: 40,
        rate: 5,
        mode: 'add'
      }
    }
  ],
  processors: [
    {
      node: 'filter',
      type: 'lowpass',
      frequency: {
        node: 'envelope',
        value: 10000,
        decay: 0.6,
        sustain: 0.05,
        release: 0.1
      }
    }
  ]
})

synth.connect(context.audio.destination)

// trigger!
setTimeout(function() {
  synth.triggerOn(1)
  synth.triggerOff(2)
  synth.triggerOn(3)
  synth.triggerOff(4)
  synth.triggerOn(5)
  synth.triggerOff(7)
}, 0.2)

Included nodes

Sources

  • oscillator
  • sample
  • granular
  • noise

Processors

  • bitcrusher
  • delay
  • dipper
  • filter
  • freeverb
  • gain
  • overdrive
  • pitchshift
  • reverb

Params

  • chromatic-scale
  • envelope
  • lfo
  • link-modulator
  • trigger-value