Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: ee4a320611
Fetching contributors…

Cannot retrieve contributors at this time

34 lines (24 sloc) 1.348 kb
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 the Mozilla Audio Data API, with 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> - @westdotcodottt - http://matt.west.co.tt/
Jump to Line
Something went wrong with that request. Please try again.