MMLEmitter

MMLEmitter is a MML(Music Macro Language) event sequencer based on Web Audio API.

{{ isPlaying ? 'Stop' : 'Start' }}
function noteEventHandler(e) {
  var osc = audioContext.createOscillator();
  var amp = audioContext.createGain();
  var playbackTime = e.playbackTime;

  osc.frequency.value = e.frequency;
  osc.type = this.wave || "triangle";
  amp.gain.setValueAtTime(0.25 * (e.volume / 16), playbackTime);
  amp.gain.linearRampToValueAtTime(0.00, playbackTime + e.duration);

  osc.start(playbackTime);
  osc.connect(amp);
  amp.connect(audioContext.destination);

  e.noteOff(function() {
    amp.disconnect();
  });
}

Examples

Fork me on GitHub