From 34c44a29c643a6db653d933808d8d4677b89512d Mon Sep 17 00:00:00 2001 From: Jade Rowland Date: Mon, 4 Dec 2023 19:11:38 -0500 Subject: [PATCH] style input --- packages/superdough/sampler.mjs | 7 +-- website/src/repl/FileUpload.jsx | 35 --------------- website/src/repl/Footer.jsx | 6 +-- website/src/repl/ImportSoundsButton.jsx | 58 +++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 41 deletions(-) delete mode 100644 website/src/repl/FileUpload.jsx create mode 100644 website/src/repl/ImportSoundsButton.jsx diff --git a/packages/superdough/sampler.mjs b/packages/superdough/sampler.mjs index b8f10d5d..d3e6a5a4 100644 --- a/packages/superdough/sampler.mjs +++ b/packages/superdough/sampler.mjs @@ -209,14 +209,15 @@ export const samples = async (sampleMap, baseUrl = sampleMap._base || '', option const { prebake, tag } = options; processSampleMap( sampleMap, - (key, value) => - registerSound(key, (t, hapValue, onended) => onTriggerSample(t, hapValue, onended, value), { + (key, value) => { + return registerSound(key, (t, hapValue, onended) => onTriggerSample(t, hapValue, onended, value), { type: 'sample', samples: value, baseUrl, prebake, tag, - }), + }); + }, baseUrl, ); }; diff --git a/website/src/repl/FileUpload.jsx b/website/src/repl/FileUpload.jsx deleted file mode 100644 index ab606657..00000000 --- a/website/src/repl/FileUpload.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; - -export default function FileUpload({ onUpload }) { - let fileUploadRef = React.createRef(); - function mapFiles(soundFiles) { - const files = Array.from(soundFiles).map((soundFile) => { - const file = { name: soundFile.name, path: URL.createObjectURL(soundFile) }; - return file; - }); - onUpload(files); - } - return ( - <> - { - mapFiles(fileUploadRef.current.files); - }} - /> - fileUploadRef.current.click()} - /> - - ); -} diff --git a/website/src/repl/Footer.jsx b/website/src/repl/Footer.jsx index 833a7a75..7854d25e 100644 --- a/website/src/repl/Footer.jsx +++ b/website/src/repl/Footer.jsx @@ -10,7 +10,7 @@ import { useSettings, settingsMap, setActiveFooter, defaultSettings } from '../s import { getAudioContext, soundMap } from '@strudel.cycles/webaudio'; import { useStore } from '@nanostores/react'; import { FilesTab } from './FilesTab'; -import FileUpload from './FileUpload'; +import ImportSoundsButton from './ImportSoundsButton'; const TAURI = window.__TAURI__; @@ -243,7 +243,7 @@ function SoundsTab() { }); return (
-
+
settingsMap.setKey('soundsFilter', value)} @@ -254,6 +254,7 @@ function SoundsTab() { user: 'User', }} > + settingsMap.setKey('soundsFilter', 'user')} />
{soundEntries.map(([name, { data, onTrigger }]) => ( @@ -425,7 +426,6 @@ function SettingsTab({ scheduler }) { onChange={(fontFamily) => settingsMap.setKey('fontFamily', fontFamily)} /> - console.log(files)} /> a.name.localeCompare(b.name, undefined, { numeric: true, sensitivity: 'base' })) + .forEach((soundFile) => { + const name = soundFile.name; + if (!isAudioFile(name)) { + return; + } + const splitRelativePath = soundFile.webkitRelativePath?.split('/'); + const parentDirectory = splitRelativePath[splitRelativePath.length - 2]; + const soundPath = URL.createObjectURL(soundFile); + const soundPaths = sounds.get(parentDirectory) ?? new Set(); + soundPaths.add(soundPath); + + sounds.set(parentDirectory, soundPaths); + }); + sounds.forEach((soundPaths, key) => { + const value = Array.from(soundPaths); + registerSound(key, (t, hapValue, onended) => onTriggerSample(t, hapValue, onended, value), { + type: 'sample', + samples: value, + baseUrl: undefined, + prebake: false, + tag: undefined, + }); + }); + onComplete(); + } + + return ( + + ); +}