summaryrefslogtreecommitdiff
path: root/client/lib/kalimba.js
diff options
context:
space:
mode:
authorjulian laplace <julescarbon@gmail.com>2025-06-30 23:35:13 +0200
committerjulian laplace <julescarbon@gmail.com>2025-06-30 23:35:13 +0200
commite5ec8893d18aa21f771ab56fc5ded42602125f94 (patch)
treef9b95619cfa86ff6ea72302defbee5367f2d3307 /client/lib/kalimba.js
parentdfcdf790e3879678d8b3a9b729cca03174b32d55 (diff)
fixes
Diffstat (limited to 'client/lib/kalimba.js')
-rw-r--r--client/lib/kalimba.js90
1 files changed, 44 insertions, 46 deletions
diff --git a/client/lib/kalimba.js b/client/lib/kalimba.js
index ec224c0..e79e5f7 100644
--- a/client/lib/kalimba.js
+++ b/client/lib/kalimba.js
@@ -1,57 +1,55 @@
-import Tone from 'tone'
-import { choice } from './util'
-import output from './output'
+import Tone from "tone";
+import { choice } from "./util";
+import { getOutput } from "./output";
-const player_count = 4
+const player_count = 4;
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: 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', },
-]
+ { 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: 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: 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', },
+];
-samples.forEach((sample) => {
- sample.players = []
- sample.index = -1
- for (let i = 0; i < player_count; i++) {
- let fn = sample.fn
- if (window.location.href.match(/asdf.us/)) {
- fn = '//asdf.us/kalimba/' + fn.replace('wav','mp3')
+function load() {
+ const output = getOutput();
+ samples.forEach((sample) => {
+ sample.players = [];
+ sample.index = -1;
+ for (let i = 0; i < player_count; i++) {
+ let fn = sample.fn;
+ if (window.location.href.match(/asdf.us/)) {
+ fn = "//asdf.us/kalimba/" + fn.replace("wav", "mp3");
+ }
+ let player = new Tone.Player({
+ url: fn,
+ retrigger: true,
+ playbackRate: 1,
+ });
+ player.connect(output);
+ sample.players.push(player);
}
- let player = new Tone.Player({
- url: fn,
- retrigger: true,
- playbackRate: 1,
- })
- player.connect(output)
- sample.players.push(player)
- }
-})
+ });
+}
+
+function play(freq) {
+ const best = choice(samples);
+ best.index = (best.index + 1) % player_count;
-function play (freq) {
-/*
- while (freq < 440) {
- freq *= 2
- }
- while (freq > 880) {
- freq /= 2
- }
- freq /= 2
-*/
- const best = { sample: choice(samples) }
- best.sample.index = (best.sample.index + 1) % player_count
+ const player = best.players[best.index];
+ player.playbackRate = freq / best.root;
- const player = best.sample.players[ best.sample.index ]
- player.playbackRate = freq / best.sample.root
- player.start()
+ player.start();
}
-function pause () {
+function pause() {
// no-op
}
-export default { play, pause }
-
+export default { load, play, pause };