ditty
Schedule a looped sequence of Web Audio events using bopper clock source.
You can pipe the output through soundbank-trigger if you want to use with soundbank.
BREAKING CHANGES: The API has changed significantly in the version 2 release. Now supports multiple loop channels with differing lengths.
npm
Install via$ npm install ditty
API
var Ditty = require('ditty')
var ditty = Ditty()
Ditty()
Creates a realtime-transform stream. Pipe in schedule events and stream out the looped events added to the input schedule.time
.
var Bopper = var audioContext = var scheduler = schedule
Input:
from: 0 to: 10 time: audioContextcurrentTime beatLength: tempo / 60
Output:
id: 'C' position: 05 // preserved from ditty.set event: 'start' // or 'stop' for the off note time: scheduletime + delta
ditty.set(id, events[, loopLength=8])
Schedule a set of start/stop events
for the given id
. This will override any loop already set on this id
.
events
is an array of arrays:
beatPosition length args... beatPosition length args... ...
// schedule a C -> F -> G -> F midi sequence ditty ditty ditty
ditty.get(id)
Returns the event sequence as set
.
ditty.getLength(id)
Returns the loopLength
as specified for set
.
ditty.getDescriptors()
Returns an array of objects describing the state of all loops.
ditty.update(descriptor)
Push a loop descriptor in to restore the state of the given loop at descriptor.id
.
ditty.on('change', function(descriptor))
Whenever a loop is updated, the 'change'
event is emitted with the new loop descriptor (id
, events
, length
).
Example
To run the example npm install && npm install --global beefy
then beefy example.js
and navigate to http://localhost:9966/