mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
remove onLog callbacks
This commit is contained in:
parent
0b9d59bf0e
commit
27fb2d2d5b
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
42
packages/react/dist/index.cjs.js
vendored
42
packages/react/dist/index.cjs.js
vendored
File diff suppressed because one or more lines are too long
3191
packages/react/dist/index.es.js
vendored
3191
packages/react/dist/index.es.js
vendored
File diff suppressed because one or more lines are too long
@ -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) => {
|
||||||
|
|||||||
@ -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(); */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user