Skip to content
This repository was archived by the owner on Jun 19, 2025. It is now read-only.

Commit e3b6884

Browse files
fnordomatfnordomat
authored andcommitted
make soundfont base url configurable
1 parent 7839d6b commit e3b6884

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

packages/soundfonts/fontloader.mjs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { persistentMap } from '@nanostores/persistent';
12
import { noteToMidi, freqToMidi, getSoundIndex } from '@strudel/core';
23
import {
34
getAudioContext,
@@ -9,14 +10,28 @@ import {
910
} from '@strudel/webaudio';
1011
import gm from './gm.mjs';
1112

13+
export const defaultFontloaderConfig = {
14+
soundfontUrl: 'https://felixroos.github.io/webaudiofontdata/sound'
15+
}
16+
17+
export const fontloaderConfigMap = persistentMap('strudel-config-fontloader', defaultFontloaderConfig);
18+
19+
export function setSoundfontUrl(obj) {
20+
fontloaderConfigMap.setKey('soundfontUrl', JSON.stringify(obj));
21+
}
22+
23+
export function getSoundfontUrl() {
24+
return JSON.parse(fontloaderConfigMap.get().soundfontUrl);
25+
}
26+
1227
let loadCache = {};
1328
async function loadFont(name) {
1429
if (loadCache[name]) {
1530
return loadCache[name];
1631
}
1732
const load = async () => {
1833
// TODO: make soundfont source configurable
19-
const url = `https://felixroos.github.io/webaudiofontdata/sound/${name}.js`;
34+
const url = `${getSoundfontUrl()}/${name}.js`;
2035
const preset = await fetch(url).then((res) => res.text());
2136
let [_, data] = preset.split('={');
2237
return eval('{' + data);

packages/soundfonts/index.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { getFontBufferSource, registerSoundfonts } from './fontloader.mjs';
1+
import { getFontBufferSource, registerSoundfonts, setSoundfontUrl } from './fontloader.mjs';
22
import * as soundfontList from './list.mjs';
33
import { startPresetNote } from 'sfumato';
44
import { loadSoundfont } from './sfumato.mjs';
55

6-
export { loadSoundfont, startPresetNote, getFontBufferSource, soundfontList, registerSoundfonts };
6+
export { loadSoundfont, startPresetNote, getFontBufferSource, soundfontList, registerSoundfonts, setSoundfontUrl };

0 commit comments

Comments
 (0)