diff --git a/packages/webaudio/webaudio.mjs b/packages/webaudio/webaudio.mjs index e177d0fd..bfb6f9a3 100644 --- a/packages/webaudio/webaudio.mjs +++ b/packages/webaudio/webaudio.mjs @@ -70,9 +70,6 @@ const getSoundfontKey = (s) => { const getSampleBufferSource = async (s, n, note) => { let transpose = 0; - if (note) { - transpose = toMidi(note) - 36; // C3 is middle C - } const ac = getAudioContext(); // is sample from loaded samples(..) const samples = getLoadedSamples(); @@ -93,7 +90,9 @@ const getSampleBufferSource = async (s, n, note) => { if (!note) { throw new Error('no note(...) set for sound', s); } - const midiDiff = (noteA) => toMidi(noteA) - toMidi(note); + const midi = typeof note === 'string' ? toMidi(note) : note; + transpose = midi - 36; // C3 is middle C + const midiDiff = (noteA) => toMidi(noteA) - midi; // object format will expect keys as notes const closest = Object.keys(bank) .filter((k) => !k.startsWith('_')) diff --git a/repl/src/prebake.mjs b/repl/src/prebake.mjs index 49fc4a64..c30403e3 100644 --- a/repl/src/prebake.mjs +++ b/repl/src/prebake.mjs @@ -55,8 +55,9 @@ Pattern.prototype.piano = function () { return this.clip(1) .s('piano') .fmap((value) => { + const midi = typeof value.note === 'string' ? toMidi(value.note) : value.note; // pan by pitch - const pan = panwidth(Math.min(toMidi(value.note) / maxPan, 1), 0.5); + const pan = panwidth(Math.min(midi / maxPan, 1), 0.5); return { ...value, pan: (value.pan || 1) * pan }; }); };