From cf7c734778f608e0b41bbf529ef90cd70287dfa1 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 2 Nov 2022 12:29:34 +0100 Subject: [PATCH 1/2] feat: can now load samples via url --- packages/webaudio/sampler.mjs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/webaudio/sampler.mjs b/packages/webaudio/sampler.mjs index d3905c5b..c5f7e6b3 100644 --- a/packages/webaudio/sampler.mjs +++ b/packages/webaudio/sampler.mjs @@ -102,7 +102,13 @@ export const loadGithubSamples = async (path, nameFn) => { * */ -export const samples = (sampleMap, baseUrl = sampleMap._base || '') => { +export const samples = async (sampleMap, baseUrl = sampleMap._base || '') => { + if (typeof sampleMap === 'string') { + const base = sampleMap.split('/').slice(0, -1).join('/'); + return fetch(sampleMap) + .then((res) => res.json()) + .then((json) => samples(json, json._base || base)); + } sampleCache.current = { ...sampleCache.current, ...Object.fromEntries( From d8843e60571489a78d891fe7382451aa57941faf Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 2 Nov 2022 21:07:47 +0100 Subject: [PATCH 2/2] refactor prebake --- packages/webaudio/sampler.mjs | 2 +- repl/src/prebake.mjs | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/webaudio/sampler.mjs b/packages/webaudio/sampler.mjs index c5f7e6b3..68561dbe 100644 --- a/packages/webaudio/sampler.mjs +++ b/packages/webaudio/sampler.mjs @@ -107,7 +107,7 @@ export const samples = async (sampleMap, baseUrl = sampleMap._base || '') => { const base = sampleMap.split('/').slice(0, -1).join('/'); return fetch(sampleMap) .then((res) => res.json()) - .then((json) => samples(json, json._base || base)); + .then((json) => samples(json, baseUrl || json._base || base)); } sampleCache.current = { ...sampleCache.current, diff --git a/repl/src/prebake.mjs b/repl/src/prebake.mjs index 4442010f..0e5bb0d9 100644 --- a/repl/src/prebake.mjs +++ b/repl/src/prebake.mjs @@ -1,23 +1,17 @@ import { Pattern, toMidi } from '@strudel.cycles/core'; import { samples } from '@strudel.cycles/webaudio'; -const loadSamples = async (url, baseDir = '') => { - await fetch(url) - .then((res) => res.json()) - .then((json) => samples(json, baseDir)); -}; - export async function prebake({ isMock = false, baseDir = '.' } = {}) { if (!isMock) { // https://archive.org/details/SalamanderGrandPianoV3 // License: CC-by http://creativecommons.org/licenses/by/3.0/ Author: Alexander Holm - loadSamples('piano.json', `${baseDir}/piano/`); + samples('piano.json', `${baseDir}/piano/`); // https://github.com/sgossner/VCSL/ // https://api.github.com/repositories/126427031/contents/ // LICENSE: CC0 general-purpose - loadSamples('vcsl.json', 'github:sgossner/VCSL/master/'); - loadSamples('tidal-drum-machines.json', 'github:ritchse/tidal-drum-machines/main/machines/'); - loadSamples('EmuSP12.json', `${baseDir}/EmuSP12/`); + samples('vcsl.json', 'github:sgossner/VCSL/master/'); + samples('tidal-drum-machines.json', 'github:ritchse/tidal-drum-machines/main/machines/'); + samples('EmuSP12.json', `${baseDir}/EmuSP12/`); } }