diff --git a/package.json b/package.json index 9d363230..a4265cb4 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "format-check": "prettier --check .", "report-undocumented": "npm run jsdoc-json && node jsdoc/undocumented.mjs > undocumented.json", "check": "npm run format-check && npm run lint && npm run test", + "sampler": "cd packages/sampler && node sample-server.mjs", "iclc": "cd paper && pandoc --template=pandoc/iclc.html --citeproc --number-sections iclc2023.md -o iclc2023.html && pandoc --template=pandoc/iclc.latex --citeproc --number-sections iclc2023.md -o iclc2023.pdf" }, "repository": { diff --git a/packages/sampler/.gitignore b/packages/sampler/.gitignore new file mode 100644 index 00000000..e8cbbaa2 --- /dev/null +++ b/packages/sampler/.gitignore @@ -0,0 +1,2 @@ +samples/* +!samples/README.md \ No newline at end of file diff --git a/packages/sampler/sample-server.mjs b/packages/sampler/sample-server.mjs index d77ece83..e54101d8 100644 --- a/packages/sampler/sample-server.mjs +++ b/packages/sampler/sample-server.mjs @@ -42,7 +42,7 @@ async function getBanks(directory) { banks[bank].push(url); return url; }); - banks._base = `http:localhost:5432`; + banks._base = `http://localhost:5432`; return { banks, files }; } diff --git a/packages/sampler/samples/README.md b/packages/sampler/samples/README.md new file mode 100644 index 00000000..d20e1753 --- /dev/null +++ b/packages/sampler/samples/README.md @@ -0,0 +1,5 @@ +# samples folder + +1. copy any samples to this folder +2. run `npm run sampler` +3. add `samples('local:')` to your code diff --git a/packages/superdough/sampler.mjs b/packages/superdough/sampler.mjs index cdf7dbf2..10087fc6 100644 --- a/packages/superdough/sampler.mjs +++ b/packages/superdough/sampler.mjs @@ -195,7 +195,7 @@ export const samples = async (sampleMap, baseUrl = sampleMap._base || '', option sampleMap = githubPath(sampleMap, 'strudel.json'); } if (sampleMap.startsWith('local:')) { - sampleMap = `/strudel.json`; + sampleMap = `http://localhost:5432`; } if (sampleMap.startsWith('shabda:')) { let [_, path] = sampleMap.split('shabda:'); diff --git a/website/.gitignore b/website/.gitignore index 3bb2282e..02f6e50b 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -17,6 +17,3 @@ pnpm-debug.log* # macOS-specific files .DS_Store - -public/samples/** -public/samples/!README.md \ No newline at end of file diff --git a/website/src/pages/strudel.json.js b/website/src/pages/strudel.json.js deleted file mode 100644 index 5e81e672..00000000 --- a/website/src/pages/strudel.json.js +++ /dev/null @@ -1,45 +0,0 @@ -import { readdir } from 'fs/promises'; -import { dirname, join, resolve } from 'path'; -import { fileURLToPath } from 'url'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -async function getFilesInDirectory(directory) { - let files = []; - const dirents = await readdir(directory, { withFileTypes: true }); - for (const dirent of dirents) { - const fullPath = join(directory, dirent.name); - if (dirent.isDirectory()) { - const subFiles = await getFilesInDirectory(fullPath); - files = files.concat(subFiles); - } else { - files.push(fullPath); - } - } - return files; -} - -export async function GET() { - let dir; - if (import.meta.env.MODE === 'production') { - // in prod (pnpm build), the path is "/website/dist/chunks/pages" - dir = '../../../public/samples'; - } else { - // in dev (pnpm dev), the path is "/website/src/pages" - dir = '../../public/samples'; - } - const directory = resolve(__dirname, dir); - const files = await getFilesInDirectory(directory); - let banks = {}; - files - .filter((f) => ['wav', 'mp3', 'ogg'].includes(f.split('.').slice(-1)[0].toLowerCase())) - .forEach((url) => { - const [bank] = url.split('/').slice(-2); - banks[bank] = banks[bank] || []; - const rel = url.split('/public/samples/')[1]; - banks[bank].push(rel); - }); - banks._base = '/samples/'; - return new Response(JSON.stringify(banks)); -}