add play function

This commit is contained in:
Felix Roos 2023-10-26 13:06:58 +02:00
parent 05095805f1
commit 9009eccc8e

View File

@ -24,6 +24,7 @@ export function repl({
getTime, getTime,
onToggle, onToggle,
}); });
let playPatterns = [];
const setPattern = (pattern, autostart = true) => { const setPattern = (pattern, autostart = true) => {
pattern = editPattern?.(pattern) || pattern; pattern = editPattern?.(pattern) || pattern;
scheduler.setPattern(pattern, autostart); scheduler.setPattern(pattern, autostart);
@ -35,7 +36,11 @@ export function repl({
} }
try { try {
await beforeEval?.({ code }); await beforeEval?.({ code });
playPatterns = [];
let { pattern, meta } = await _evaluate(code, transpiler); let { pattern, meta } = await _evaluate(code, transpiler);
if (playPatterns.length) {
pattern = pattern.stack(...playPatterns);
}
logger(`[eval] code updated`); logger(`[eval] code updated`);
setPattern(pattern, autostart); setPattern(pattern, autostart);
afterEval?.({ code, pattern, meta }); afterEval?.({ code, pattern, meta });
@ -57,6 +62,10 @@ export function repl({
return pat.loopAtCps(cycles, scheduler.cps); return pat.loopAtCps(cycles, scheduler.cps);
}); });
const play = register('play', (pat) => {
playPatterns.push(pat);
});
const fit = register('fit', (pat) => const fit = register('fit', (pat) =>
pat.withHap((hap) => pat.withHap((hap) =>
hap.withValue((v) => ({ hap.withValue((v) => ({
@ -70,6 +79,7 @@ export function repl({
evalScope({ evalScope({
loopAt, loopAt,
fit, fit,
play,
setCps, setCps,
setcps: setCps, setcps: setCps,
setCpm, setCpm,