arduino_midi_player/Midi/arduino-midi-player-master/jasmid/README
2025-03-24 14:30:56 +08:00

52 lines
1.9 KiB
Plaintext

# Midifile.js
This module parses the Standard Midi File.
The code was modified to adapt to the 'require' way of nodejs. Irrelevant code have been removed.
The SMF parser part of the jasmid project is used. See jasmid's README and LICENSE for more info
Jasmid's original repository: https://github.com/gasman/jasmid
# JASMID Original Readme
```
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/
```