From 9497c99e9e4c57b1c196f133b9ae5b5340799b99 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 21 Aug 2022 11:21:19 +0200 Subject: [PATCH] merge evaluator and scheduler hooks + use getTime --- packages/react/examples/nano-repl/src/App.jsx | 22 ++++++---- packages/react/src/hooks/useEvaluator.jsx | 36 --------------- packages/react/src/hooks/useScheduler.jsx | 18 -------- packages/react/src/hooks/useStrudel.mjs | 44 +++++++++++++++++++ 4 files changed, 57 insertions(+), 63 deletions(-) delete mode 100644 packages/react/src/hooks/useEvaluator.jsx delete mode 100644 packages/react/src/hooks/useScheduler.jsx create mode 100644 packages/react/src/hooks/useStrudel.mjs diff --git a/packages/react/examples/nano-repl/src/App.jsx b/packages/react/examples/nano-repl/src/App.jsx index 95c590cb..e1ca3e42 100644 --- a/packages/react/examples/nano-repl/src/App.jsx +++ b/packages/react/examples/nano-repl/src/App.jsx @@ -2,10 +2,9 @@ import controls from '@strudel.cycles/core/controls.mjs'; import { evalScope } from '@strudel.cycles/eval'; import { getAudioContext, panic, webaudioOutput } from '@strudel.cycles/webaudio'; import { useCallback, useState } from 'react'; -import useScheduler from '../../../src/hooks/useScheduler'; -import useEvaluator from '../../../src/hooks/useEvaluator'; -import useKeydown from '../../../src/hooks/useKeydown.mjs'; import CodeMirror, { flash } from '../../../src/components/CodeMirror6'; +import useKeydown from '../../../src/hooks/useKeydown.mjs'; +import useStrudel from '../../../src/hooks/useStrudel'; import './style.css'; // import { prebake } from '../../../../../repl/src/prebake.mjs'; @@ -63,16 +62,21 @@ stack( .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes //.hush() ) -.cps(2/3)`; +.fast(2/3)`; // await prebake(); +const ctx = getAudioContext(); + function App() { const [code, setCode] = useState(defaultTune); - const { evaluate, pattern, isDirty, error: evaluatorError } = useEvaluator({ code }); - const { scheduler, error: schedulerError } = useScheduler(pattern, webaudioOutput); + const { scheduler, evaluate, schedulerError, evalError, isDirty } = useStrudel({ + code, + defaultOutput: webaudioOutput, + getTime: () => ctx.currentTime, + }); const [view, setView] = useState(); - const error = evaluatorError || schedulerError; + const error = evalError || schedulerError; useKeydown( useCallback( (e) => { @@ -105,8 +109,8 @@ function App() {