mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 13:48:40 +00:00
- @strudel.cycles/eval@0.1.1 - @strudel.cycles/midi@0.1.1 - @strudel.cycles/mini@0.1.1 - @strudel.cycles/react@0.1.2 - @strudel.cycles/tonal@0.1.1 - @strudel.cycles/tone@0.1.1 - @strudel.cycles/webaudio@0.1.1 - @strudel.cycles/xen@0.1.1
@strudel.cycles/tone
This package adds Tone.js functions to strudel Patterns.
Install
npm i @strudel.cycles/tone --save
Example
The following example will create a pattern and play it back with tone.js:
import { sequence, stack, State, TimeSpan } from '@strudel.cycles/core';
import { Tone, polysynth, osc, out } from '@strudel.cycles/tone';
const pattern = sequence('c3', ['eb3', stack('g3', 'bb3')]).tone(polysynth().set(osc('sawtooth4')).chain(out()));
document.getElementById('play').addEventListener('click', async () => {
await Tone.start();
Tone.getTransport().stop();
const events = pattern.query(new State(new TimeSpan(0, 4))).filter((e) => e.whole.begin.equals(e.part.begin));
events.forEach((event) =>
Tone.getTransport().schedule((time) => event.context.onTrigger(time, event), event.whole.begin.valueOf()),
);
Tone.getTransport().start('+0.1');
});
API
See "Tone API" in the Strudel Tutorial
Dev Notes
@tonejs/pianohas peer dependency onwebmidi@^2.5.1! A newer version of webmidi will break.- If you use Tone in another package, make sure to
import { Tone } from '@strudel.cycles/tone, to ensure you get the same AudioContext.