UNPKG

abcjs

Version:

Renderer for abc music notation

45 lines (39 loc) 1.31 kB
var SynthSequence = require('./synth-sequence'); var CreateSynth = require('./create-synth'); var activeAudioContext = require("./active-audio-context"); function playEvent(midiPitches, midiGracePitches, millisecondsPerMeasure) { var sequence = new SynthSequence(); for (var i = 0; i < midiPitches.length; i++) { var note = midiPitches[i]; var trackNum = sequence.addTrack(); sequence.setInstrument(trackNum, note.instrument); if (i === 0 && midiGracePitches) { for (var j = 0; j < midiGracePitches.length; j++) { var grace = midiGracePitches[j]; sequence.appendNote(trackNum, grace.pitch, 1 / 64, grace.volume, grace.cents); } } sequence.appendNote(trackNum, note.pitch, note.duration, note.volume, note.cents); } var ac = activeAudioContext(); if (ac.state === "suspended") { return ac.resume().then(function () { return doPlay(sequence, millisecondsPerMeasure); }); } else { return doPlay(sequence, millisecondsPerMeasure); } } function doPlay(sequence, millisecondsPerMeasure) { var buffer = new CreateSynth(); return buffer.init({ sequence: sequence, millisecondsPerMeasure: millisecondsPerMeasure }).then(function () { return buffer.prime(); }).then(function () { buffer.start(); return Promise.resolve(); }); } module.exports = playEvent;