Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gasman/jasmid
UNMAINTAINED. A MIDI file reader and synthesiser in Javascript
https://github.com/gasman/jasmid
Last synced: 10 days ago
JSON representation
UNMAINTAINED. A MIDI file reader and synthesiser in Javascript
- Host: GitHub
- URL: https://github.com/gasman/jasmid
- Owner: gasman
- License: other
- Created: 2010-11-14T09:05:35.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2022-07-27T15:02:53.000Z (over 2 years ago)
- Last Synced: 2024-10-14T10:29:47.318Z (29 days ago)
- Language: JavaScript
- Homepage: http://matt.west.co.tt/music/jasmid-midi-synthesis-with-javascript-and-html5-audio/
- Size: 126 KB
- Stars: 416
- Watchers: 19
- Forks: 89
- Open Issues: 14
-
Metadata Files:
- Readme: README
- License: LICENSE
Awesome Lists containing this project
README
THIS PROJECT IS NO LONGER MAINTAINED. http://unmaintained.tech/
===============================================================see jasmid.ts fork: https://github.com/pravdomil/jasmid.ts
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
* Web Audio API
* a Flash fallback originally taken from dynamicaudio.js by Ben Firshman
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 - @gasmanic - http://matt.west.co.tt/