From 42922a0d755edcf5c14f235ff5a7e49a6ee66949 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 9 Sep 2022 21:56:07 +0200 Subject: [PATCH 1/2] fix: support numbers in piano / sampler --- packages/webaudio/webaudio.mjs | 7 +++---- repl/src/prebake.mjs | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/webaudio/webaudio.mjs b/packages/webaudio/webaudio.mjs index e177d0fd..5b21eec0 100644 --- a/packages/webaudio/webaudio.mjs +++ b/packages/webaudio/webaudio.mjs @@ -70,9 +70,8 @@ const getSoundfontKey = (s) => { const getSampleBufferSource = async (s, n, note) => { let transpose = 0; - if (note) { - transpose = toMidi(note) - 36; // C3 is middle C - } + const midi = typeof note === 'string' ? toMidi(note) : note; + transpose = midi - 36; // C3 is middle C const ac = getAudioContext(); // is sample from loaded samples(..) const samples = getLoadedSamples(); @@ -93,7 +92,7 @@ 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 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 }; }); }; From 59e16642233a807f13f7eaf90aaa74b69bba35c0 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 9 Sep 2022 22:02:24 +0200 Subject: [PATCH 2/2] pull in midi logic --- packages/webaudio/webaudio.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webaudio/webaudio.mjs b/packages/webaudio/webaudio.mjs index 5b21eec0..bfb6f9a3 100644 --- a/packages/webaudio/webaudio.mjs +++ b/packages/webaudio/webaudio.mjs @@ -70,8 +70,6 @@ const getSoundfontKey = (s) => { const getSampleBufferSource = async (s, n, note) => { let transpose = 0; - const midi = typeof note === 'string' ? toMidi(note) : note; - transpose = midi - 36; // C3 is middle C const ac = getAudioContext(); // is sample from loaded samples(..) const samples = getLoadedSamples(); @@ -92,6 +90,8 @@ const getSampleBufferSource = async (s, n, note) => { if (!note) { throw new Error('no note(...) set for sound', s); } + 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)