forked from gasman/jasmid
-
Notifications
You must be signed in to change notification settings - Fork 1
A MIDI file reader and synthesiser in Javascript
License
jhohertz/jasmid
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 <[email protected]> - @gasmanic - http://matt.west.co.tt/
About
A MIDI file reader and synthesiser in Javascript
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- JavaScript 85.0%
- ActionScript 13.7%
- Ruby 1.3%