diff options
| author | pepper <pepper@chimecrisis.com> | 2014-05-15 19:06:59 -0700 |
|---|---|---|
| committer | pepper <pepper@chimecrisis.com> | 2014-05-15 19:06:59 -0700 |
| commit | 93e654a02cef3d5913a2088d4c397418dc0cee2f (patch) | |
| tree | bfad328857e5bcc10906a594470ccc12875d936b /README | |
doing this
Diffstat (limited to 'README')
| -rw-r--r-- | README | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -0,0 +1,37 @@ +jasmid - A Javascript MIDI file reader and synthesiser + +Originally presented at BarCamp London 8, 13-14 November 2010 + +Instructions: +Open index.html in browser. Turn up volume. Click on link. + +Sound output is via one of the following mechanisms, according to what your +browser supports: +* Mozilla Audio Data API <https://wiki.mozilla.org/Audio_Data_API> +* Web Audio API + <https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html> +* a Flash fallback originally taken from dynamicaudio.js by Ben Firshman + <https://github.com/bfirsh/dynamicaudio.js> and hacked around by me. + + +The code: +stream.js - helper library for reading a string as a stream of typed data +midifile.js - parses the MIDI file format into a header and a list of tracks, + each consisting of a list of event objects +replayer.js - steps over the data structure generated by midifile.js and calls + the appropriate operations on the synthesiser +synth.js - audio synthesiser; generates waveforms according to tweakable + parameters +audio.js - passes the generated waveform to either the Audio Data API or the + Flash fallback widget (da.swf) + + +Limitations: +* The only event types supported by replayer.js are note on, note off, tempo + change and program change +* There are currently only two instrument presets defined in synth.js - one for + strings and a 'piano' one for everything else - and neither of them are + particularly good (just a single volume-modulated sine wave). + + +Matt Westcott <matt@west.co.tt> - @gasmanic - http://matt.west.co.tt/ |
