From 5d3778fb278266f9929be8745e6deb34cc280637 Mon Sep 17 00:00:00 2001 From: "Lu[ke] Wilson" Date: Sun, 26 Jan 2025 16:37:51 +0000 Subject: [PATCH] allow aliasing via a path --- packages/superdough/superdough.mjs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs index e5e38f73..d17cd8f7 100644 --- a/packages/superdough/superdough.mjs +++ b/packages/superdough/superdough.mjs @@ -20,7 +20,7 @@ export function registerSound(key, onTrigger, data = {}) { soundMap.setKey(key.toLowerCase(), { onTrigger, data }); } -export function aliasBankMap(aliasMap) { +function aliasBankMap(aliasMap) { // Make all bank keys lower case for case insensitivity for (const key in aliasMap) { aliasMap[key.toLowerCase()] = aliasMap[key]; @@ -53,15 +53,27 @@ export function aliasBankMap(aliasMap) { soundMap.set({ ...soundDictionary }); } +async function aliasBankPath(path) { + const response = await fetch(path); + const aliasMap = await response.json(); + aliasBankMap(aliasMap); +} + /** - * Register an alias for a bank of sounds. Optionally accepts a map of banks to aliases. + * Register an alias for a bank of sounds. + * Optionally accepts a single argument map of bank aliases. + * Optionally accepts a single argument string of a path to a JSON file containing bank aliases. * @param {string} bank - The bank to alias * @param {string} alias - The alias to use for the bank */ -export function aliasBank(...args) { +export async function aliasBank(...args) { switch (args.length) { case 1: - return aliasBankMap(args[0]); + if (typeof args[0] === 'string') { + return aliasBankPath(args[0]); + } else { + return aliasBankMap(args[0]); + } case 2: return aliasBankMap({ [args[0]]: args[1] }); default: