From 49906e98b740561f84e441fc16837050c3c66d68 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 14 Dec 2023 14:50:26 +0100 Subject: [PATCH] get rid of duplication --- .../examples/strudelmirror/main_repl.js | 252 ------------------ 1 file changed, 252 deletions(-) delete mode 100644 packages/codemirror/examples/strudelmirror/main_repl.js diff --git a/packages/codemirror/examples/strudelmirror/main_repl.js b/packages/codemirror/examples/strudelmirror/main_repl.js deleted file mode 100644 index ad61b807..00000000 --- a/packages/codemirror/examples/strudelmirror/main_repl.js +++ /dev/null @@ -1,252 +0,0 @@ -// this file is unused, but still contains the commented parts of the main repl - -import { - /* logger, */ getDrawContext, - silence, - controls, - evalScope /* , hash2code, code2hash */, -} from '@strudel.cycles/core'; -import { StrudelMirror } from '@strudel/codemirror'; -import { getAudioContext, webaudioOutput /* , resetLoadedSounds */ } from '@strudel.cycles/webaudio'; -import { transpiler } from '@strudel.cycles/transpiler'; -import { registerSynthSounds, registerZZFXSounds, samples } from '@strudel.cycles/webaudio'; -import './style.css'; - -//import { prebake, resetSounds } from './prebake.mjs'; -//import { settingsMap } from '@src/settings.mjs'; -//import { setLatestCode } from '../settings.mjs'; -//import { createClient } from '@supabase/supabase-js'; -//import { getRandomTune } from './helpers.mjs'; - -/* const supabase = createClient( - 'https://pidxdsxphlhzjnzmifth.supabase.co', - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBpZHhkc3hwaGxoempuem1pZnRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTYyMzA1NTYsImV4cCI6MTk3MTgwNjU1Nn0.bqlw7802fsWRnqU5BLYtmXk_k-D1VFmbkHMywWc15NM', -); */ - -/* async function initCodeFromUrl() { - // await new Promise((resolve) => setTimeout(resolve, 2000)); - // load code from url hash (either short hash from database or decode long hash) - try { - const initialUrl = window.location.href; - const hash = initialUrl.split('?')[1]?.split('#')?.[0]; - const codeParam = window.location.href.split('#')[1] || ''; - // looking like https://strudel.cc/?J01s5i1J0200 (fixed hash length) - if (codeParam) { - // looking like https://strudel.cc/#ImMzIGUzIg%3D%3D (hash length depends on code length) - return hash2code(codeParam); - } else if (hash) { - return supabase - .from('code') - .select('code') - .eq('hash', hash) - .then(({ data, error }) => { - if (error) { - console.warn('failed to load hash', error); - } - if (data.length) { - //console.log('load hash from database', hash); - return data[0].code; - } - }); - } - } catch (err) { - console.warn('failed to decode', err); - } -} -const initialCode = initCodeFromUrl(); -*/ - -async function run() { - const container = document.getElementById('code'); - if (!container) { - console.warn('could not init: no container found'); - return; - } - - // Create a single supabase client for interacting with your database - - // const settings = settingsMap.get(); - // defaultSettings from settings.mjs - const settings = { - activeFooter: 'intro', - keybindings: 'codemirror', - isLineNumbersDisplayed: true, - isActiveLineHighlighted: true, - isAutoCompletionEnabled: false, - isPatternHighlightingEnabled: true, - isFlashEnabled: true, - isTooltipEnabled: false, - isLineWrappingEnabled: false, - theme: 'strudelTheme', - fontFamily: 'monospace', - fontSize: 18, - latestCode: '', - isZen: false, - soundsFilter: 'all', - panelPosition: 'bottom', - userPatterns: '{}', - }; - - const drawContext = getDrawContext(); - const drawTime = [-2, 2]; - const editor = new StrudelMirror({ - defaultOutput: webaudioOutput, - getTime: () => getAudioContext().currentTime, - transpiler, - root: container, - initialCode: '// LOADING', - pattern: silence, - settings, - drawTime, - onDraw: (haps, time, frame, painters) => { - painters.length && drawContext.clearRect(0, 0, drawContext.canvas.width * 2, drawContext.canvas.height * 2); - painters?.forEach((painter) => { - // ctx time haps drawTime paintOptions - painter(drawContext, time, haps, drawTime, { clear: false }); - }); - }, - prebake: async () => { - // prebake() - - // "old" style prebake copied from Repl.jsx - let modules = [ - import('@strudel.cycles/core'), - import('@strudel.cycles/tonal'), - import('@strudel.cycles/mini'), - import('@strudel.cycles/xen'), - import('@strudel.cycles/webaudio'), - import('@strudel/codemirror'), - import('@strudel/hydra'), - import('@strudel.cycles/serial'), - import('@strudel.cycles/soundfonts'), - import('@strudel.cycles/csound'), - ]; - /* if (isTauri()) { - modules = modules.concat([ - import('@strudel/desktopbridge/loggerbridge.mjs'), - import('@strudel/desktopbridge/midibridge.mjs'), - import('@strudel/desktopbridge/oscbridge.mjs'), - ]); - } else { */ - modules = modules.concat([import('@strudel.cycles/midi'), import('@strudel.cycles/osc')]); - //} - const modulesLoading = evalScope( - controls, // sadly, this cannot be exported from core direclty - // settingPatterns, - ...modules, - ); - const ds = 'https://raw.githubusercontent.com/felixroos/dough-samples/main/'; - await Promise.all([ - modulesLoading, - registerSynthSounds(), - registerZZFXSounds(), - samples(`${ds}/tidal-drum-machines.json`), - samples(`${ds}/piano.json`), - samples(`${ds}/Dirt-Samples.json`), - samples(`${ds}/EmuSP12.json`), - samples(`${ds}/vcsl.json`), - ]); - }, - afterEval: ({ code }) => { - // setLatestCode(code); - // window.location.hash = '#' + code2hash(code); - }, - }); - - // init settings - editor.updateSettings(settings); - - /* const decoded = await initialCode; - let msg; - if (decoded) { - editor.setCode(decoded); - msg = `I have loaded the code from the URL.`; - } else if (settings.latestCode) { - editor.setCode(settings.latestCode); - msg = `Your last session has been loaded!`; - } else { - const { code: randomTune, name } = getRandomTune(); - editor.setCode(randomTune); - msg = `A random code snippet named "${name}" has been loaded!`; - } - logger(`Welcome to Strudel! ${msg} Press play or hit ctrl+enter to run it!`, 'highlight'); */ - // setPending(false); - - const initialCode = `// @date 23-11-30 -// "teigrührgerät" @by froos - -stack( - stack( - s("bd(<3!3 5>,6)/2").bank('RolandTR707') - , - s("~ sd:<0 1>").bank('RolandTR707').room("<0 .5>") - .lastOf(8, x=>x.segment("12").end(.2).gain(isaw)) - , - s("[tb ~ tb]").bank('RolandTR707') - .clip(0).release(.08).room(.2) - ).off(-1/6, x=>x.speed(.7).gain(.2).degrade()) - , - stack( - note(",6) ~!2 [f1?]*2>") - .s("sawtooth").lpf(perlin.range(400,1000)) - .lpa(.1).lpenv(-3).room(.2) - .lpq(8).noise(.2) - .add(note("0,.1")) - , - chord("<~ Gm9 ~!2>") - .dict('ireal').voicing() - .s("sawtooth").vib("2:.1") - .lpf(1000).lpa(.1).lpenv(-4) - .room(.5) - , - n(run(3)).chord("/8") - .dict('ireal-ext') - .off(1/2, add(n(4))) - .voicing() - .clip(.1).release(.05) - .s("sine").jux(rev) - .sometimesBy(sine.slow(16), add(note(12))) - .room(.75) - .lpf(sine.range(200,2000).slow(16)) - .gain(saw.slow(4).div(2)) - ).add(note(perlin.range(0,.5))) -)`; - - editor.setCode(initialCode); // simpler alternative to above init - - // settingsMap.listen((settings, key) => editor.changeSetting(key, settings[key])); - - onEvent('strudel-toggle-play', () => editor.toggle()); - /* onEvent('strudel-shuffle', async () => { - const { code, name } = getRandomTune(); - logger(`[repl] ✨ loading random tune "${name}"`); - console.log(code); - editor.setCode(code); - // await resetSounds(); // <-- "new" style - // old style - resetLoadedSounds(); - editor.repl.setCps(1); - editor.repl.evaluate(code, false); - }); */ - - // const isEmbedded = embedded || window.location !== window.parent.location; -} - -/* let inited = false; -onEvent('strudel-container', () => { - if (!inited) { - inited = true; - run(); - } -}); */ -run(); - -function onEvent(key, callback) { - const listener = (e) => { - if (e.data === key) { - callback(); - } - }; - window.addEventListener('message', listener); - return () => window.removeEventListener('message', listener); -}