1.2.0 • Published 10 years ago
seq-emitter v1.2.0
seq-emitter
EventEmitter for Web Audio API sequencer
Installation
$ npm install seq-emitterAPI
SeqEmitter
constructor(tracks: Iterator[], config = {})- configuration for WebAudioScheduler
config.context: AudioContextconfig.interval: numberconfig.aheadTime: numberconfig.timerAPI: global
- configuration for WebAudioScheduler
Instance attribute
scheduler: WebAudioSchedulerstate: string"suspended""running""closed"
Instance methods
Also implements methods from the interface EventEmitter.
start([ t0: number ]): voidstop([ t0: number ]): void
Events
*/ Emitted when a scheduled item.type: stringplaybackTime: numbertrackNumber: number- assign properties that defined on an iterator
end:all/ Emitted when all iterators will be no more data to read.type: "end:all"playbackTime: number
statechange/ Emitted when state changed.type: "statechange"playbackTime: numberstate: string
Examples
import SeqEmitter from "seq-emitter";
let musicIterator = [
{ type: "note", time: 0.00, noteNumber: 88 },
{ type: "note", time: 0.15, noteNumber: 91 },
{ type: "note", time: 0.30, noteNumber: 100 },
{ type: "note", time: 0.45, noteNumber: 96 },
{ type: "note", time: 0.60, noteNumber: 98 },
{ type: "note", time: 0.75, noteNumber: 103 },
{ type: "end", time: 0.9 },
][Symbol.iterator]();
let audioContext = new AudioContext();
let sequencer = new SeqEmitter([ musicIterator ], { context: audioContext });
sequencer.on("note", (e) => {
console.log(JSON.stringify(e, null, 2));
});
sequencer.start(audioContext.currentTime);License
MIT