webaudio-instruments
v0.4.1
Published
MIDI-like instruments from webaudio
Downloads
3,735
Readme
webaudio-instruments
This is a simple wrapper for a subset of the functionality in webaudio-tinysynth. It lets you play tones from MIDI-like instruments, but without any sound fonts or audio files - the tones are generated purely from WebAudio oscillators.
Installation:
npm install --save webaudio-instruments
Usage
var Instruments = require('webaudio-instruments')
var player = new Instruments()
player.play(
24, // instrument: 24 is "Acoustic Guitar (nylon)"
72, // note: midi number or frequency in Hz (if > 127)
0.5, // velocity: 0..1
0, // delay in seconds
0.5, // duration in seconds
0, // (optional - specify channel for tinysynth to use)
0.05 // (optional - override envelope "attack" parameter)
)
API
var player = new Instruments(audioContext, destinationNode)
Both parameters are optional.player.names
Array of instrument namesplayer.play(inst, note, vel, delay, duration, channel, attack)
See above. Note that instruments numbers over 127 are percussion, so thenote
parameter is ignored.channel
,attack
params are optional.player.getCurrentTime()
Time value (from the audio context)player.setQuality(q)
Set the quality to1
(high) or0
(low). Low version uses fewer oscillators, see original repo for details.player._synth
For anything else, access the underlying tinysynth.
Credit
All the interesting magic here (the implementation of MIDI instruments using webaudio oscillators) is from webaudio-tinysynth! See that repo for further info and more features.
All I've done is to abstract away the MIDI-related stuff, add CommonJS support, etc.
My additions here are MIT license. Original source is Apache 2.0.