From 1a56c6365867c9939625916dae8c2f6c8fee7610 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 5 Feb 2022 21:03:45 +0100 Subject: [PATCH] cooler example --- repl/src/App.tsx | 37 +++++++++++++------------------------ repl/src/tunes.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 24 deletions(-) create mode 100644 repl/src/tunes.ts diff --git a/repl/src/App.tsx b/repl/src/App.tsx index 5daa68aa..c2770173 100644 --- a/repl/src/App.tsx +++ b/repl/src/App.tsx @@ -5,6 +5,7 @@ import cx from './cx'; import * as Tone from 'tone'; import useCycle from './useCycle'; import type { Hap, Pattern } from './types'; +import { tetris } from './tunes'; const { Fraction, TimeSpan } = strudel; @@ -24,29 +25,7 @@ synth.set({ }); function App() { - const [code, setCode] = useState( - // "sequence('c3', 'eb3', sequence('g3', 'f3'))" // - /* `sequence( - stack('c4','eb4','g4'), - stack('bb3','d4','f4'), - stack('ab3','c4','eb4'), - stack('g3','b3','d4') - )._slow(4)`, */ // - `slowcat( - stack('c4','eb4','g4'), - stack('bb3','d4','f4'), - stack('ab3','c4','eb4'), - stack('g3','b3','d4') - )` - /* `fastcat( - stack('c4','eb4','g4'), - stack('bb3','d4','f4'), - stack('ab3','c4','eb4'), - stack('g3','b3','d4') - )._slow(4)` */ // - // "slow(sequence('c3', 'eb3', sequence('g3', 'f3')), 'g3')" // - // "sequence('c3', 'eb3')._fast(2)" // - ); + const [code, setCode] = useState(tetris); const [log, setLog] = useState(''); const logBox = useRef(); const [error, setError] = useState(); @@ -63,7 +42,17 @@ function App() { // console.log('event', event, time); synth.triggerAttackRelease(event.value, event.duration, time); }, []), - onQuery: useCallback((span) => pattern?.query(span) || [], [pattern]), + onQuery: useCallback( + (span) => { + try { + return pattern?.query(span) || []; + } catch (err: any) { + setError(err); + return []; + } + }, + [pattern] + ), onSchedule: useCallback( (_events, cycle) => { // console.log('schedule', _events, cycle); diff --git a/repl/src/tunes.ts b/repl/src/tunes.ts new file mode 100644 index 00000000..252b5a71 --- /dev/null +++ b/repl/src/tunes.ts @@ -0,0 +1,42 @@ +export const tetris = `stack(sequence( + 'e5', sequence('b4', 'c5'), 'd5', sequence('c5', 'b4'), + 'a4', sequence('a4', 'c5'), 'e5', sequence('d5', 'c5'), + 'b4', sequence(silence(), 'c5'), 'd5', 'e5', + 'c5', 'a4', 'a4', silence(), + sequence(silence(), 'd5'), sequence(silence(), 'f5'), 'a5', sequence('g5', 'f5'), + 'e5', sequence(silence(), 'c5'), 'e5', sequence('d5', 'c5'), + 'b4', sequence('b4', 'c5'), 'd5', 'e5', + 'c5', 'a4', 'a4', silence()), + sequence( + 'e2', 'e3', 'e2', 'e3', 'e2', 'e3', 'e2', 'e3', + 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', + 'g#2', 'g#3', 'g#2', 'g#3', 'e2', 'e3', 'e2', 'e3', + 'a2', 'a3', 'a2', 'a3', 'a2', 'a3', 'b1', 'c2', + 'd2', 'd3', 'd2', 'd3', 'd2', 'd3', 'd2', 'd3', + 'c2', 'c3', 'c2', 'c3', 'c2', 'c3', 'c2', 'c3', + 'b1', 'b2', 'b1', 'b2', 'e2', 'e3', 'e2', 'e3', + 'a1', 'a2', 'a1', 'a2', 'a1', 'a2', 'a1', 'a2', + ) +)._slow(16)`; + +// "sequence('c3', 'eb3', sequence('g3', 'f3'))" // +/* `sequence( + stack('c4','eb4','g4'), + stack('bb3','d4','f4'), + stack('ab3','c4','eb4'), + stack('g3','b3','d4') + )._slow(4)`, */ // +export const spanish = `slowcat( + stack('c4','eb4','g4'), + stack('bb3','d4','f4'), + stack('ab3','c4','eb4'), + stack('g3','b3','d4') + )`; +/* `fastcat( + stack('c4','eb4','g4'), + stack('bb3','d4','f4'), + stack('ab3','c4','eb4'), + stack('g3','b3','d4') + )._slow(4)` */ // +// "slow(sequence('c3', 'eb3', sequence('g3', 'f3')), 'g3')" // +// "sequence('c3', 'eb3')._fast(2)" //