mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-11 13:48:34 +00:00
- @strudel.cycles/core@0.2.0 - @strudel.cycles/eval@0.2.0 - @strudel.cycles/midi@0.2.0 - @strudel.cycles/mini@0.2.0 - @strudel.cycles/react@0.2.0 - @strudel.cycles/soundfonts@0.2.0 - @strudel.cycles/tonal@0.2.0 - @strudel.cycles/tone@0.2.0 - @strudel.cycles/webaudio@0.2.0 - @strudel.cycles/webdirt@0.2.0 - @strudel.cycles/xen@0.2.0
@strudel.cycles/eval
This package contains the strudel code transformer and evaluator. It allows creating strudel patterns from input code that is optimized for minimal keystrokes and human readability.
Install
npm i @strudel.cycles/eval --save
Example
import { evaluate, extend } from '@strudel.cycles/eval';
evalScope(
import('@strudel.cycles/core'),
// import other strudel packages here
); // add strudel to eval scope
async function run(code) {
const { pattern } = await evaluate(code);
const events = pattern.firstCycle();
console.log(events.map((e) => e.show()).join('\n'));
}
run('sequence([a3, [b3, c4]])');
yields:
(0/1 -> 1/2, 0/1 -> 1/2, a3)
(1/2 -> 3/4, 1/2 -> 3/4, b3)
(3/4 -> 1/1, 3/4 -> 1/1, c4)
play with @strudel.cycles/eval on codesandbox
Dev Notes
shift-traverser is currently monkey patched because its package.json uses estraverse@^4.2.0, which does not support the spread operator (Error: Unknown node type SpreadProperty.). By monkey patched, I mean I copied the source of shift-traverser to a subfolder and installed the dependencies (shift-spec + estraverse@^5.3.0)