diff --git a/src/InstrumentPlayer.js b/src/InstrumentPlayer.js index 81dbacb..718fad5 100644 --- a/src/InstrumentPlayer.js +++ b/src/InstrumentPlayer.js @@ -34,12 +34,17 @@ function InstrumentPlayer (outputNode) { * @param {number} note - a MIDI note number * @param {number} sec - a duration in seconds * @param {number} instrumentNum - an instrument number (0-indexed) + * @param {number} vol - a volume level (0-100%) */ -InstrumentPlayer.prototype.playNoteForSecWithInst = function (note, sec, instrumentNum) { +InstrumentPlayer.prototype.playNoteForSecWithInstAndVol = function (note, sec, instrumentNum, vol) { + var gain = vol / 100; this.loadInstrument(instrumentNum) .then(() => { this.instruments[instrumentNum].play( - note, Tone.context.currentTime, {duration : sec} + note, Tone.context.currentTime, { + duration : sec, + gain : gain + } ); }); }; diff --git a/src/index.js b/src/index.js index bb6fa7c..047d83b 100644 --- a/src/index.js +++ b/src/index.js @@ -91,15 +91,16 @@ AudioEngine.prototype.loadSounds = function (sounds) { }; /** - * Play a note for a duration on an instrument + * Play a note for a duration on an instrument with a volume * @param {number} note - a MIDI note number * @param {number} beats - a duration in beats * @param {number} inst - an instrument number (0-indexed) + * @param {number} vol - a volume level (0-100%) * @return {Promise} a Promise that resolves after the duration has elapsed */ -AudioEngine.prototype.playNoteForBeatsWithInst = function (note, beats, inst) { +AudioEngine.prototype.playNoteForBeatsWithInstAndVol = function (note, beats, inst, vol) { var sec = this.beatsToSec(beats); - this.instrumentPlayer.playNoteForSecWithInst(note, sec, inst); + this.instrumentPlayer.playNoteForSecWithInstAndVol(note, sec, inst, vol); return this.waitForBeats(beats); };