diff --git a/packages/core/cyclist.mjs b/packages/core/cyclist.mjs index c54887dd..711903ed 100644 --- a/packages/core/cyclist.mjs +++ b/packages/core/cyclist.mjs @@ -38,7 +38,7 @@ export class Cyclist { } }); } catch (e) { - console.warn('scheduler error', e); + console.warn('scheduler error: ', e.message); onError?.(e); } }, // called slightly before each cycle diff --git a/packages/core/util.mjs b/packages/core/util.mjs index 85b11b90..7b8a72d1 100644 --- a/packages/core/util.mjs +++ b/packages/core/util.mjs @@ -55,9 +55,13 @@ export const midi2note = (n) => { export const mod = (n, m) => ((n % m) + m) % m; export const getPlayableNoteValue = (hap) => { - let { value: note, context } = hap; + let { value, context } = hap; + let note = value; if (typeof note === 'object' && !Array.isArray(note)) { note = note.note || note.n || note.value; + if (note === undefined) { + throw new Error(`cannot find a playable note for ${JSON.stringify(value)}`); + } } // if value is number => interpret as midi number as long as its not marked as frequency if (typeof note === 'number' && context.type !== 'frequency') { diff --git a/packages/react/src/hooks/useStrudel.mjs b/packages/react/src/hooks/useStrudel.mjs index 833cc4cd..8fb0eafa 100644 --- a/packages/react/src/hooks/useStrudel.mjs +++ b/packages/react/src/hooks/useStrudel.mjs @@ -30,6 +30,7 @@ function useStrudel({ defaultOutput, interval, getTime, evalOnMount = false, ini setActiveCode(code); setPattern(_pattern); setEvalError(); + setSchedulerError(); if (autolink) { window.location.hash = '#' + encodeURIComponent(btoa(code)); }