remove onLog callbacks

This commit is contained in:
Felix Roos 2022-11-12 12:07:02 +01:00
parent 0b9d59bf0e
commit 27fb2d2d5b
6 changed files with 1635 additions and 1628 deletions

View File

@ -5,6 +5,7 @@ This program is free software: you can redistribute it and/or modify it under th
*/ */
import createClock from './zyklus.mjs'; import createClock from './zyklus.mjs';
import { logger } from './logger.mjs';
export class Cyclist { export class Cyclist {
worker; worker;
@ -13,10 +14,9 @@ export class Cyclist {
cps = 1; // TODO cps = 1; // TODO
getTime; getTime;
phase = 0; phase = 0;
constructor({ interval, onTrigger, onToggle, onError, getTime, latency = 0.1, onLog }) { constructor({ interval, onTrigger, onToggle, onError, getTime, latency = 0.1 }) {
this.getTime = getTime; this.getTime = getTime;
this.onToggle = onToggle; this.onToggle = onToggle;
this.onLog = onLog;
this.latency = latency; this.latency = latency;
const round = (x) => Math.round(x * 1000) / 1000; const round = (x) => Math.round(x * 1000) / 1000;
this.clock = createClock( this.clock = createClock(
@ -39,7 +39,7 @@ export class Cyclist {
} }
}); });
} catch (e) { } catch (e) {
onLog(`error: ${e.message}`); logger(`[cyclist] error: ${e.message}`);
onError?.(e); onError?.(e);
} }
}, // called slightly before each cycle }, // called slightly before each cycle
@ -57,17 +57,17 @@ export class Cyclist {
if (!this.pattern) { if (!this.pattern) {
throw new Error('Scheduler: no pattern set! call .setPattern first.'); throw new Error('Scheduler: no pattern set! call .setPattern first.');
} }
this.onLog?.('start'); logger('[cyclist] start');
this.clock.start(); this.clock.start();
this.setStarted(true); this.setStarted(true);
} }
pause() { pause() {
this.onLog?.('pause'); logger('[cyclist] pause');
this.clock.pause(); this.clock.pause();
this.setStarted(false); this.setStarted(false);
} }
stop() { stop() {
this.onLog?.('stop'); logger('[cyclist] stop');
this.clock.stop(); this.clock.stop();
this.setStarted(false); this.setStarted(false);
} }

View File

@ -1,5 +1,6 @@
import { Cyclist } from './cyclist.mjs'; import { Cyclist } from './cyclist.mjs';
import { evaluate as _evaluate } from './evaluate.mjs'; import { evaluate as _evaluate } from './evaluate.mjs';
import { logger } from './logger.mjs';
export function repl({ export function repl({
interval, interval,
@ -11,7 +12,6 @@ export function repl({
getTime, getTime,
transpiler, transpiler,
onToggle, onToggle,
onLog,
}) { }) {
const scheduler = new Cyclist({ const scheduler = new Cyclist({
interval, interval,
@ -24,13 +24,12 @@ export function repl({
// call signature of output / onTrigger is different... // call signature of output / onTrigger is different...
return await hap.context.onTrigger(getTime() + deadline, hap, getTime(), cps); return await hap.context.onTrigger(getTime() + deadline, hap, getTime(), cps);
} catch (err) { } catch (err) {
onLog?.(`[cyclist] error: ${err.message}`, 'error'); logger(`[cyclist] error: ${err.message}`, 'error');
} }
}, },
onError: onSchedulerError, onError: onSchedulerError,
getTime, getTime,
onToggle, onToggle,
onLog: (message, type) => onLog?.(`[cyclist] ${message}`, type),
}); });
const evaluate = async (code, autostart = true) => { const evaluate = async (code, autostart = true) => {
if (!code) { if (!code) {
@ -39,13 +38,13 @@ export function repl({
try { try {
beforeEval({ code }); beforeEval({ code });
const { pattern } = await _evaluate(code, transpiler); const { pattern } = await _evaluate(code, transpiler);
onLog?.(`[eval] code updated`); logger(`[eval] code updated`);
scheduler.setPattern(pattern, autostart); scheduler.setPattern(pattern, autostart);
afterEval({ code, pattern }); afterEval({ code, pattern });
return pattern; return pattern;
} catch (err) { } catch (err) {
// console.warn(`[repl] eval error: ${err.message}`); // console.warn(`[repl] eval error: ${err.message}`);
onLog?.(`[eval] error: ${err.message}`, 'error'); logger(`[eval] error: ${err.message}`, 'error');
onEvalError?.(err); onEvalError?.(err);
} }
}; };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,6 @@ function useStrudel({
autolink = false, autolink = false,
afterEval, afterEval,
onEvalError, onEvalError,
onLog,
}) { }) {
// scheduler // scheduler
const [schedulerError, setSchedulerError] = useState(); const [schedulerError, setSchedulerError] = useState();
@ -27,7 +26,6 @@ function useStrudel({
() => () =>
repl({ repl({
interval, interval,
onLog,
defaultOutput, defaultOutput,
onSchedulerError: setSchedulerError, onSchedulerError: setSchedulerError,
onEvalError: (err) => { onEvalError: (err) => {

View File

@ -107,7 +107,9 @@ function App() {
setLog((l) => { setLog((l) => {
const lastLog = l.length ? l[l.length - 1] : undefined; const lastLog = l.length ? l[l.length - 1] : undefined;
const id = nanoid(12); const id = nanoid(12);
// if (type === 'loaded-sample' && lastLog.type === 'load-sample' && lastLog.url === data.url) {
if (type === 'loaded-sample') { if (type === 'loaded-sample') {
// const loadIndex = l.length - 1;
const loadIndex = l.findIndex(({ data: { url }, type }) => type === 'load-sample' && url === data.url); const loadIndex = l.findIndex(({ data: { url }, type }) => type === 'load-sample' && url === data.url);
l[loadIndex] = { message, type, id, data }; l[loadIndex] = { message, type, id, data };
} else if (lastLog && lastLog.message === message) { } else if (lastLog && lastLog.message === message) {
@ -132,8 +134,7 @@ function App() {
initialCode: '// LOADING', initialCode: '// LOADING',
defaultOutput: webaudioOutput, defaultOutput: webaudioOutput,
getTime, getTime,
autolink: true, autolink: true
onLog: logger,
}); });
// init code // init code
@ -193,7 +194,7 @@ function App() {
const handleShuffle = async () => { const handleShuffle = async () => {
const { code, name } = getRandomTune(); const { code, name } = getRandomTune();
logger(`✨ loading random tune "${name}"`); logger(`[repl] ✨ loading random tune "${name}"`);
/* /*
cleanupDraw(); cleanupDraw();
cleanupUi(); */ cleanupUi(); */