audio-slot
August 5, 2015 ยท View on GitHub
Web Audio API FRP wrapper for creating, routing, and triggering AudioNodes.
This module serves as the audio engine for Loop Drop.
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
