export * from '@strudel/soundfonts';
4export * from '@strudel/transpiler'; 5export * from '@strudel/mini'; 6export * from '@strudel/edo'; 7export * from '@strudel/tonal'; 8export * from '@strudel/webaudio'; 9import { Pattern, evalScope, setTime } from '@strudel/core'; 10import { initAudioOnFirstClick, registerSynthSounds, webaudioRepl } from '@strudel/webaudio';
import { registerSoundfonts } from '@strudel/soundfonts';
init logic
16export async function defaultPrebake() { 17 const loadModules = evalScope( 18 evalScope, 19 import('@strudel/core'), 20 import('@strudel/mini'), 21 import('@strudel/edo'), 22 import('@strudel/tonal'), 23 import('@strudel/webaudio'), 24 { hush, evaluate }, 25 ); 26 await Promise.all([loadModules, registerSynthSounds() /* , registerSoundfonts() */]); 27}
when this function finishes, everything is initialized
30let initDone;
32let repl; 33export function initStrudel(options = {}) { 34 initAudioOnFirstClick(); 35 options.miniAllStrings !== false && miniAllStrings(); 36 const { prebake, ...replOptions } = options; 37 repl = webaudioRepl({ ...replOptions, transpiler }); 38 initDone = (async () => { 39 await defaultPrebake(); 40 await prebake?.(); 41 return repl; 42 })(); 43 setTime(() => repl.scheduler.now()); 44 return initDone; 45} 46 47window.initStrudel = initStrudel;
this method will play the pattern on the default scheduler