diff options
Diffstat (limited to 'client/lib/kalimba.js')
| -rw-r--r-- | client/lib/kalimba.js | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/client/lib/kalimba.js b/client/lib/kalimba.js index 11fb155..ceb19dd 100644 --- a/client/lib/kalimba.js +++ b/client/lib/kalimba.js @@ -1,13 +1,13 @@ import Tone from "tone"; import { choice } from "./util"; -const player_count = 8; +const player_count = 3; const samples = [ - { root: 226, fn: "samples/380737__cabled-mess__sansula-01-a-raw.wav" }, - { root: 267, fn: "samples/380736__cabled-mess__sansula-02-c-raw.wav" }, - { root: 340, fn: "samples/380735__cabled-mess__sansula-03-e-raw.wav" }, - { root: 452, fn: "samples/380733__cabled-mess__sansula-06-a-02-raw.wav" }, + { root: 219.5, fn: "samples/380737__cabled-mess__sansula-01-a-raw.wav" }, + { root: 260.9, fn: "samples/380736__cabled-mess__sansula-02-c-raw.wav" }, + { root: 330.2, fn: "samples/380735__cabled-mess__sansula-03-e-raw.wav" }, + // { root: 440.9, fn: "samples/380733__cabled-mess__sansula-06-a-02-raw.wav" }, // { root: 507, fn: 'samples/380734__cabled-mess__sansula-07-b-h-raw.wav', }, // { root: 535, fn: 'samples/380731__cabled-mess__sansula-08-c-raw.wav', }, // { root: 671, fn: 'samples/380732__cabled-mess__sansula-09-e-raw.wav', }, @@ -27,18 +27,29 @@ function load(output) { retrigger: true, playbackRate: 1, }); - player.connect(output); + player.name = fn; + const gain = new Tone.Gain(1.6); + player.connect(gain); + gain.connect(output); sample.players.push(player); } }); + console.log( + "+ Voices:", + samples.reduce((count, sample) => count + sample.players.length, 0), + ); } +let last = 440; + function play(freq) { + last = freq; const best = choice(samples); best.index = (best.index + 1) % player_count; const player = best.players[best.index]; player.playbackRate = freq / best.root; + console.log(player.name); player.start(); } @@ -47,3 +58,24 @@ function pause() { } export default { load, play, pause }; + +function keydown(e) { + // console.log(e.keyCode) + if (e.metaKey && last) { + let step = e.shiftKey ? (e.ctrlKey ? 0.01 : 0.1) : 1; + switch (e.keyCode) { + case 38: // up + e.preventDefault(); + samples[0].root -= step; + play(last); + break; + case 40: // down + e.preventDefault(); + samples[0].root += step; + play(last); + break; + } + console.log(samples[0].root); + } +} +window.addEventListener("keydown", keydown, true); |
