diff --git a/README.md b/README.md
index dd857537..7743bcab 100644
--- a/README.md
+++ b/README.md
@@ -15,25 +15,15 @@ An experiment in making a [Tidal](https://github.com/tidalcycles/tidal/) using w
After cloning the project, you can run the REPL locally:
```bash
-pnpm run setup
-pnpm run repl
+pnpm i
+pnpm dev
```
## Using Strudel In Your Project
-There are multiple npm packages you can use to use strudel, or only parts of it, in your project:
+This project is organized into many [packages](./packages), which are also available on [npm](https://www.npmjs.com/search?q=%40strudel).
-- [`core`](./packages/core/): tidal pattern engine
-- [`mini`](./packages/mini): mini notation parser + core binding
-- [`transpiler`](./packages/transpiler): user code transpiler
-- [`webaudio`](./packages/webaudio): webaudio output
-- [`osc`](./packages/osc): bindings to communicate via OSC
-- [`midi`](./packages/midi): webmidi bindings
-- [`serial`](./packages/serial): webserial bindings
-- [`tonal`](./packages/tonal): tonal functions
-- ... [and there are more](./packages/)
-
-Click on the package names to find out more about each one.
+Read more about how to use these in your own project [here](https://strudel.cc/technical-manual/project-start).
## Contributing
diff --git a/examples/buildless/headless-simple.html b/examples/buildless/headless-simple.html
index 013cc87b..15a56161 100644
--- a/examples/buildless/headless-simple.html
+++ b/examples/buildless/headless-simple.html
@@ -1,10 +1,9 @@
+
play
stop
-
diff --git a/examples/buildless/headless-with-samples.html b/examples/buildless/headless-with-samples.html
index 2ac7aa71..18b5e379 100644
--- a/examples/buildless/headless-with-samples.html
+++ b/examples/buildless/headless-with-samples.html
@@ -1,10 +1,10 @@
+
A
B
C
stop
-
+setcps(1)
+n("<0 1 2 3 4>*8").scale('G4 minor')
+.s("gm_lead_6_voice")
+.clip(sine.range(.2,.8).slow(8))
+.jux(rev)
+.room(2)
+.sometimes(add(note("12")))
+.lpf(perlin.range(200,20000).slow(4))
+-->
```
-Note that the Code is placed inside HTML comments to prevent the browser from treating it as HTML.
+This will load the strudel website in an iframe, using the code provided within the HTML comments ``.
+The HTML comments are needed to make sure the browser won't interpret it as HTML.
+
+Alternatively you can create a REPL from JavaScript like this:
+
+```html
+
+
+
+```
+
+When you're using JSX, you could also use the `code` attribute in your markup:
+
+```html
+
+*8").scale('G4 minor')
+.s("gm_lead_6_voice")
+.clip(sine.range(.2,.8).slow(8))
+.jux(rev)
+.room(2)
+.sometimes(add(note("12")))
+.lpf(perlin.range(200,20000).slow(4))
+`}>
+```
diff --git a/packages/embed/embed.js b/packages/embed/embed.js
index ce2e3b2a..6cf8a3b8 100644
--- a/packages/embed/embed.js
+++ b/packages/embed/embed.js
@@ -4,7 +4,7 @@ class Strudel extends HTMLElement {
}
connectedCallback() {
setTimeout(() => {
- const code = (this.innerHTML + '').replace('', '').trim();
+ const code = this.getAttribute('code') || (this.innerHTML + '').replace('', '').trim();
const iframe = document.createElement('iframe');
const src = `https://strudel.cc/#${encodeURIComponent(btoa(code))}`;
// const src = `http://localhost:3000/#${encodeURIComponent(btoa(code))}`;
diff --git a/packages/repl/README.md b/packages/repl/README.md
index b4cbf37c..b82f3434 100644
--- a/packages/repl/README.md
+++ b/packages/repl/README.md
@@ -2,4 +2,95 @@
The Strudel REPL as a web component.
-[Usage example](https://github.com/tidalcycles/strudel/blob/main/examples/buildless/web-component-no-iframe.html)
+## Add Script Tag
+
+First place this script tag once in your HTML:
+
+```html
+
+```
+
+You can also pin the version like this:
+
+```html
+
+```
+
+This has the advantage that your code will always work, regardless of potential breaking changes in the strudel codebase.
+See [releases](https://github.com/tidalcycles/strudel/releases) for the latest versions.
+
+## Use Web Component
+
+When you've added the script tag, you can use the `strudel-editor` web component:
+
+```html
+
+
+
+```
+
+This will load the Strudel REPL using the code provided within the HTML comments ``.
+The HTML comments are needed to make sure the browser won't interpret it as HTML.
+
+Alternatively you can create a REPL from JavaScript like this:
+
+```html
+
+
+
+```
+
+## Interacting with the REPL
+
+If you get a hold of the `strudel-editor` element, you can interact with the strudel REPL from Javascript:
+
+```html
+
+
+
+
+
+```
+
+or
+
+```html
+
+
+
+```
+
+The `.editor` property on the `strudel-editor` web component gives you the instance of [StrudelMirror](https://github.com/tidalcycles/strudel/blob/a46bd9b36ea7d31c9f1d3fca484297c7da86893f/packages/codemirror/codemirror.mjs#L124) that runs the REPL.
+
+For example, you could use `setCode` to change the code from the outside, `start` / `stop` to toggle playback or `evaluate` to evaluate the code.
diff --git a/packages/superdough/helpers.mjs b/packages/superdough/helpers.mjs
index 39e9977a..f5f3ad68 100644
--- a/packages/superdough/helpers.mjs
+++ b/packages/superdough/helpers.mjs
@@ -186,3 +186,76 @@ export function getVibratoOscillator(param, value, t) {
return vibratoOscillator;
}
}
+// ConstantSource inherits AudioScheduledSourceNode, which has scheduling abilities
+// a bit of a hack, but it works very well :)
+export function webAudioTimeout(audioContext, onComplete, startTime, stopTime) {
+ const constantNode = audioContext.createConstantSource();
+ constantNode.start(startTime);
+ constantNode.stop(stopTime);
+ constantNode.onended = () => {
+ onComplete();
+ };
+}
+const mod = (freq, range = 1, type = 'sine') => {
+ const ctx = getAudioContext();
+ const osc = ctx.createOscillator();
+ osc.type = type;
+ osc.frequency.value = freq;
+ osc.start();
+ const g = new GainNode(ctx, { gain: range });
+ osc.connect(g); // -range, range
+ return { node: g, stop: (t) => osc.stop(t) };
+};
+const fm = (frequencyparam, harmonicityRatio, modulationIndex, wave = 'sine') => {
+ const carrfreq = frequencyparam.value;
+ const modfreq = carrfreq * harmonicityRatio;
+ const modgain = modfreq * modulationIndex;
+ return mod(modfreq, modgain, wave);
+};
+export function applyFM(param, value, begin) {
+ const {
+ fmh: fmHarmonicity = 1,
+ fmi: fmModulationIndex,
+ fmenv: fmEnvelopeType = 'exp',
+ fmattack: fmAttack,
+ fmdecay: fmDecay,
+ fmsustain: fmSustain,
+ fmrelease: fmRelease,
+ fmvelocity: fmVelocity,
+ fmwave: fmWaveform = 'sine',
+ duration,
+ } = value;
+ let modulator;
+ let stop = () => {};
+
+ if (fmModulationIndex) {
+ const ac = getAudioContext();
+ const envGain = ac.createGain();
+ const fmmod = fm(param, fmHarmonicity, fmModulationIndex, fmWaveform);
+
+ modulator = fmmod.node;
+ stop = fmmod.stop;
+ if (![fmAttack, fmDecay, fmSustain, fmRelease, fmVelocity].find((v) => v !== undefined)) {
+ // no envelope by default
+ modulator.connect(param);
+ } else {
+ const [attack, decay, sustain, release] = getADSRValues([fmAttack, fmDecay, fmSustain, fmRelease]);
+ const holdEnd = begin + duration;
+ getParamADSR(
+ envGain.gain,
+ attack,
+ decay,
+ sustain,
+ release,
+ 0,
+ 1,
+ begin,
+ holdEnd,
+ fmEnvelopeType === 'exp' ? 'exponential' : 'linear',
+ );
+ modulator.connect(envGain);
+ envGain.connect(param);
+ }
+ }
+ return { stop };
+}
diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs
index cf9bd181..2fbc5294 100644
--- a/packages/superdough/superdough.mjs
+++ b/packages/superdough/superdough.mjs
@@ -50,8 +50,8 @@ function loadWorklets() {
return workletsLoading;
}
-function getWorklet(ac, processor, params) {
- const node = new AudioWorkletNode(ac, processor);
+export function getWorklet(ac, processor, params, config) {
+ const node = new AudioWorkletNode(ac, processor, config);
Object.entries(params).forEach(([key, value]) => {
node.parameters.get(key).value = value;
});
diff --git a/packages/superdough/synth.mjs b/packages/superdough/synth.mjs
index 6d646862..55ecc83f 100644
--- a/packages/superdough/synth.mjs
+++ b/packages/superdough/synth.mjs
@@ -1,31 +1,138 @@
-import { midiToFreq, noteToMidi } from './util.mjs';
-import { registerSound, getAudioContext } from './superdough.mjs';
-import { gainNode, getADSRValues, getParamADSR, getPitchEnvelope, getVibratoOscillator } from './helpers.mjs';
+import { clamp, midiToFreq, noteToMidi } from './util.mjs';
+import { registerSound, getAudioContext, getWorklet } from './superdough.mjs';
+import {
+ applyFM,
+ gainNode,
+ getADSRValues,
+ getParamADSR,
+ getPitchEnvelope,
+ getVibratoOscillator,
+ webAudioTimeout,
+} from './helpers.mjs';
import { getNoiseMix, getNoiseOscillator } from './noise.mjs';
-const mod = (freq, range = 1, type = 'sine') => {
- const ctx = getAudioContext();
- const osc = ctx.createOscillator();
- osc.type = type;
- osc.frequency.value = freq;
- osc.start();
- const g = new GainNode(ctx, { gain: range });
- osc.connect(g); // -range, range
- return { node: g, stop: (t) => osc.stop(t) };
+const getFrequencyFromValue = (value) => {
+ let { note, freq } = value;
+ note = note || 36;
+ if (typeof note === 'string') {
+ note = noteToMidi(note); // e.g. c3 => 48
+ }
+ // get frequency
+ if (!freq && typeof note === 'number') {
+ freq = midiToFreq(note); // + 48);
+ }
+
+ return Number(freq);
};
-const fm = (osc, harmonicityRatio, modulationIndex, wave = 'sine') => {
- const carrfreq = osc.frequency.value;
- const modfreq = carrfreq * harmonicityRatio;
- const modgain = modfreq * modulationIndex;
- return mod(modfreq, modgain, wave);
-};
-
-const waveforms = ['sine', 'square', 'triangle', 'sawtooth'];
+const waveforms = ['triangle', 'square', 'sawtooth', 'sine'];
const noises = ['pink', 'white', 'brown', 'crackle'];
export function registerSynthSounds() {
- [...waveforms, ...noises].forEach((s) => {
+ [...waveforms].forEach((s) => {
+ registerSound(
+ s,
+ (t, value, onended) => {
+ const [attack, decay, sustain, release] = getADSRValues(
+ [value.attack, value.decay, value.sustain, value.release],
+ 'linear',
+ [0.001, 0.05, 0.6, 0.01],
+ );
+
+ let sound = getOscillator(s, t, value);
+ let { node: o, stop, triggerRelease } = sound;
+
+ // turn down
+ const g = gainNode(0.3);
+
+ const { duration } = value;
+
+ o.onended = () => {
+ o.disconnect();
+ g.disconnect();
+ onended();
+ };
+
+ const envGain = gainNode(1);
+ let node = o.connect(g).connect(envGain);
+ const holdEnd = t + duration;
+ getParamADSR(node.gain, attack, decay, sustain, release, 0, 1, t, holdEnd, 'linear');
+ const envEnd = holdEnd + release + 0.01;
+ triggerRelease?.(envEnd);
+ stop(envEnd);
+ return {
+ node,
+ stop: (releaseTime) => {},
+ };
+ },
+ { type: 'synth', prebake: true },
+ );
+ });
+ registerSound(
+ 'supersaw',
+ (begin, value, onended) => {
+ const ac = getAudioContext();
+ let { duration, n, unison = 5, spread = 0.6, detune } = value;
+ detune = detune ?? n ?? 0.18;
+ const frequency = getFrequencyFromValue(value);
+
+ const [attack, decay, sustain, release] = getADSRValues(
+ [value.attack, value.decay, value.sustain, value.release],
+ 'linear',
+ [0.001, 0.05, 0.6, 0.01],
+ );
+
+ const holdend = begin + duration;
+ const end = holdend + release + 0.01;
+ const voices = clamp(unison, 1, 100);
+ let panspread = voices > 1 ? clamp(spread, 0, 1) : 0;
+ let o = getWorklet(
+ ac,
+ 'supersaw-oscillator',
+ {
+ frequency,
+ begin,
+ end,
+ freqspread: detune,
+ voices,
+ panspread,
+ },
+ {
+ outputChannelCount: [2],
+ },
+ );
+
+ const gainAdjustment = 1 / Math.sqrt(voices);
+ getPitchEnvelope(o.parameters.get('detune'), value, begin, holdend);
+ const vibratoOscillator = getVibratoOscillator(o.parameters.get('detune'), value, begin);
+ const fm = applyFM(o.parameters.get('frequency'), value, begin);
+ let envGain = gainNode(1);
+ envGain = o.connect(envGain);
+
+ webAudioTimeout(
+ ac,
+ () => {
+ o.disconnect();
+ envGain.disconnect();
+ onended();
+ fm?.stop();
+ vibratoOscillator?.stop();
+ },
+ begin,
+ end,
+ );
+
+ getParamADSR(envGain.gain, attack, decay, sustain, release, 0, 0.3 * gainAdjustment, begin, holdend, 'linear');
+
+ return {
+ node: envGain,
+ stop: (time) => {},
+ };
+ },
+ { prebake: true, type: 'synth' },
+ );
+
+ [...noises].forEach((s) => {
registerSound(
s,
(t, value, onended) => {
@@ -36,12 +143,9 @@ export function registerSynthSounds() {
);
let sound;
- if (waveforms.includes(s)) {
- sound = getOscillator(s, t, value);
- } else {
- let { density } = value;
- sound = getNoiseOscillator(s, t, density);
- }
+
+ let { density } = value;
+ sound = getNoiseOscillator(s, t, density);
let { node: o, stop, triggerRelease } = sound;
@@ -106,24 +210,7 @@ export function waveformN(partials, type) {
// expects one of waveforms as s
export function getOscillator(s, t, value) {
- let {
- n: partials,
- note,
- freq,
- noise = 0,
- // fm
- fmh: fmHarmonicity = 1,
- fmi: fmModulationIndex,
- fmenv: fmEnvelopeType = 'exp',
- fmattack: fmAttack,
- fmdecay: fmDecay,
- fmsustain: fmSustain,
- fmrelease: fmRelease,
- fmvelocity: fmVelocity,
- fmwave: fmWaveform = 'sine',
- duration,
- } = value;
- let ac = getAudioContext();
+ let { n: partials, duration, noise = 0 } = value;
let o;
// If no partials are given, use stock waveforms
if (!partials || s === 'sine') {
@@ -134,55 +221,15 @@ export function getOscillator(s, t, value) {
else {
o = waveformN(partials, s);
}
-
- // get frequency from note...
- note = note || 36;
- if (typeof note === 'string') {
- note = noteToMidi(note); // e.g. c3 => 48
- }
- // get frequency
- if (!freq && typeof note === 'number') {
- freq = midiToFreq(note); // + 48);
- }
-
// set frequency
- o.frequency.value = Number(freq);
+ o.frequency.value = getFrequencyFromValue(value);
o.start(t);
- // FM
- let stopFm;
- let envGain = ac.createGain();
- if (fmModulationIndex) {
- const { node: modulator, stop } = fm(o, fmHarmonicity, fmModulationIndex, fmWaveform);
- if (![fmAttack, fmDecay, fmSustain, fmRelease, fmVelocity].find((v) => v !== undefined)) {
- // no envelope by default
- modulator.connect(o.frequency);
- } else {
- const [attack, decay, sustain, release] = getADSRValues([fmAttack, fmDecay, fmSustain, fmRelease]);
- const holdEnd = t + duration;
- getParamADSR(
- envGain.gain,
- attack,
- decay,
- sustain,
- release,
- 0,
- 1,
- t,
- holdEnd,
- fmEnvelopeType === 'exp' ? 'exponential' : 'linear',
- );
- modulator.connect(envGain);
- envGain.connect(o.frequency);
- }
- stopFm = stop;
- }
-
- // Additional oscillator for vibrato effect
let vibratoOscillator = getVibratoOscillator(o.detune, value, t);
// pitch envelope
getPitchEnvelope(o.detune, value, t, t + duration);
+ const fmModulator = applyFM(o.frequency, value, t);
let noiseMix;
if (noise) {
@@ -192,9 +239,9 @@ export function getOscillator(s, t, value) {
return {
node: noiseMix?.node || o,
stop: (time) => {
+ fmModulator.stop(time);
vibratoOscillator?.stop(time);
noiseMix?.stop(time);
- stopFm?.(time);
o.stop(time);
},
triggerRelease: (time) => {
diff --git a/packages/superdough/worklets.mjs b/packages/superdough/worklets.mjs
index 4f2965ee..bab28987 100644
--- a/packages/superdough/worklets.mjs
+++ b/packages/superdough/worklets.mjs
@@ -129,3 +129,148 @@ class DistortProcessor extends AudioWorkletProcessor {
}
}
registerProcessor('distort-processor', DistortProcessor);
+
+// adjust waveshape to remove frequencies above nyquist to prevent aliasing
+// referenced from https://www.kvraudio.com/forum/viewtopic.php?t=375517
+const polyBlep = (phase, dt) => {
+ // 0 <= phase < 1
+ if (phase < dt) {
+ phase /= dt;
+ // 2 * (phase - phase^2/2 - 0.5)
+ return phase + phase - phase * phase - 1;
+ }
+
+ // -1 < phase < 0
+ else if (phase > 1 - dt) {
+ phase = (phase - 1) / dt;
+ // 2 * (phase^2/2 + phase + 0.5)
+ return phase * phase + phase + phase + 1;
+ }
+
+ // 0 otherwise
+ else {
+ return 0;
+ }
+};
+
+const saw = (phase, dt) => {
+ const v = 2 * phase - 1;
+ return v - polyBlep(phase, dt);
+};
+
+function lerp(a, b, n) {
+ return n * (b - a) + a;
+}
+
+function getUnisonDetune(unison, detune, voiceIndex) {
+ if (unison < 2) {
+ return 0;
+ }
+ return lerp(-detune * 0.5, detune * 0.5, voiceIndex / (unison - 1));
+}
+class SuperSawOscillatorProcessor extends AudioWorkletProcessor {
+ constructor() {
+ super();
+ this.phase = [];
+ }
+ static get parameterDescriptors() {
+ return [
+ {
+ name: 'begin',
+ defaultValue: 0,
+ max: Number.POSITIVE_INFINITY,
+ min: 0,
+ },
+
+ {
+ name: 'end',
+ defaultValue: 0,
+ max: Number.POSITIVE_INFINITY,
+ min: 0,
+ },
+
+ {
+ name: 'frequency',
+ defaultValue: 440,
+ min: Number.EPSILON,
+ },
+
+ {
+ name: 'panspread',
+ defaultValue: 0.4,
+ min: 0,
+ max: 1,
+ },
+ {
+ name: 'freqspread',
+ defaultValue: 0.2,
+ min: 0,
+ },
+ {
+ name: 'detune',
+ defaultValue: 0,
+ min: 0,
+ },
+
+ {
+ name: 'voices',
+ defaultValue: 5,
+ min: 1,
+ },
+ ];
+ }
+ process(input, outputs, params) {
+ // eslint-disable-next-line no-undef
+ if (currentTime <= params.begin[0]) {
+ return true;
+ }
+ // eslint-disable-next-line no-undef
+ if (currentTime >= params.end[0]) {
+ // this.port.postMessage({ type: 'onended' });
+ return false;
+ }
+ let frequency = params.frequency[0];
+ //apply detune in cents
+ frequency = frequency * Math.pow(2, params.detune[0] / 1200);
+
+ const output = outputs[0];
+ const voices = params.voices[0];
+ const freqspread = params.freqspread[0];
+ const panspread = params.panspread[0] * 0.5 + 0.5;
+ const gain1 = Math.sqrt(1 - panspread);
+ const gain2 = Math.sqrt(panspread);
+
+ for (let n = 0; n < voices; n++) {
+ const isOdd = (n & 1) == 1;
+
+ //applies unison "spread" detune in semitones
+ const freq = frequency * Math.pow(2, getUnisonDetune(voices, freqspread, n) / 12);
+ let gainL = gain1;
+ let gainR = gain2;
+ // invert right and left gain
+ if (isOdd) {
+ gainL = gain2;
+ gainR = gain1;
+ }
+ // eslint-disable-next-line no-undef
+ const dt = freq / sampleRate;
+
+ for (let i = 0; i < output[0].length; i++) {
+ this.phase[n] = this.phase[n] ?? Math.random();
+ const v = saw(this.phase[n], dt);
+
+ output[0][i] = output[0][i] + v * gainL;
+ output[1][i] = output[1][i] + v * gainR;
+
+ this.phase[n] += dt;
+
+ if (this.phase[n] > 1.0) {
+ this.phase[n] = this.phase[n] - 1;
+ }
+ }
+ }
+ return true;
+ }
+}
+
+registerProcessor('supersaw-oscillator', SuperSawOscillatorProcessor);
diff --git a/packages/tonal/tonal.mjs b/packages/tonal/tonal.mjs
index 78ec1101..16e8fe1c 100644
--- a/packages/tonal/tonal.mjs
+++ b/packages/tonal/tonal.mjs
@@ -186,18 +186,35 @@ export const scale = register('scale', function (scale, pat) {
// legacy..
return pure(step);
}
- const asNumber = Number(step);
+ let asNumber = Number(step);
+ let semitones = 0;
if (isNaN(asNumber)) {
- logger(`[tonal] invalid scale step "${step}", expected number`, 'error');
- return silence;
+ step = String(step);
+ if (!/^[-+]?\d+(#*|b*){1}$/.test(step)) {
+ logger(
+ `[tonal] invalid scale step "${step}", expected number or integer with optional # b suffixes`,
+ 'error',
+ );
+ return silence;
+ }
+ const isharp = step.indexOf('#');
+ if (isharp >= 0) {
+ asNumber = Number(step.substring(0, isharp));
+ semitones = step.length - isharp;
+ } else {
+ const iflat = step.indexOf('b');
+ asNumber = Number(step.substring(0, iflat));
+ semitones = iflat - step.length;
+ }
}
try {
let note;
- if (value.anchor) {
+ if (isObject && value.anchor) {
note = stepInNamedScale(asNumber, scale, value.anchor);
} else {
note = scaleStep(asNumber, scale);
}
+ if (semitones != 0) note = Note.transpose(note, Interval.fromSemitones(semitones));
value = pure(isObject ? { ...value, note } : note);
} catch (err) {
logger(`[tonal] ${err.message}`, 'error');
diff --git a/packages/web/README.md b/packages/web/README.md
index b3d2f6fe..8b567729 100644
--- a/packages/web/README.md
+++ b/packages/web/README.md
@@ -7,20 +7,17 @@ This package provides an easy to use bundle of multiple strudel packages for the
Save this code as a `.html` file and double click it:
```html
-
+
+
play
stop
-
```
-With the help of [skypack](https://www.skypack.dev/), you don't need a bundler nor a server.
-
As soon as you call `initStrudel()`, all strudel functions are made available.
In this case, we are using the `note` function to create a pattern.
To actually play the pattern, you have to append `.play()` to the end.
@@ -79,4 +76,4 @@ There will probably be an escapte hatch for that in the future.
## More Examples
-Check out the examples folder for more examples, both using plain html and vite!
\ No newline at end of file
+Check out the examples folder for more examples, both using plain html and vite!
diff --git a/packages/web/package.json b/packages/web/package.json
index 45946398..d70e84c8 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -37,10 +37,10 @@
"@strudel/mini": "workspace:*",
"@strudel/tonal": "workspace:*",
"@strudel/transpiler": "workspace:*",
- "@strudel/webaudio": "workspace:*",
- "@rollup/plugin-replace": "^5.0.5"
+ "@strudel/webaudio": "workspace:*"
},
"devDependencies": {
- "vite": "^5.0.10"
+ "vite": "^5.0.10",
+ "@rollup/plugin-replace": "^5.0.5"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 033c6a7e..96bd1dc9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -33,9 +33,6 @@ importers:
'@vitest/ui':
specifier: ^1.1.0
version: 1.1.0(vitest@1.1.0)
- canvas:
- specifier: ^2.11.2
- version: 2.11.2
dependency-tree:
specifier: ^10.0.9
version: 10.0.9
@@ -452,9 +449,6 @@ importers:
packages/web:
dependencies:
- '@rollup/plugin-replace':
- specifier: ^5.0.5
- version: 5.0.5
'@strudel/core':
specifier: workspace:*
version: link:../core
@@ -471,6 +465,9 @@ importers:
specifier: workspace:*
version: link:../webaudio
devDependencies:
+ '@rollup/plugin-replace':
+ specifier: ^5.0.5
+ version: 5.0.5
vite:
specifier: ^5.0.10
version: 5.0.10
@@ -520,7 +517,7 @@ importers:
version: 0.4.4(astro@4.0.8)
'@astrojs/mdx':
specifier: ^2.0.3
- version: 2.0.3(astro@4.0.8)
+ version: 2.2.1(astro@4.0.8)
'@astrojs/react':
specifier: ^3.0.9
version: 3.0.9(@types/react-dom@18.2.18)(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(vite@5.0.11)
@@ -575,9 +572,6 @@ importers:
'@strudel/osc':
specifier: workspace:*
version: link:../packages/osc
- '@strudel/repl':
- specifier: workspace:*
- version: link:../packages/repl
'@strudel/serial':
specifier: workspace:*
version: link:../packages/serial
@@ -620,9 +614,6 @@ importers:
astro:
specifier: ^4.0.8
version: 4.0.8(@types/node@20.10.6)(typescript@5.3.3)
- canvas:
- specifier: ^2.11.2
- version: 2.11.2
claviature:
specifier: ^0.1.0
version: 0.1.0
@@ -878,13 +869,38 @@ packages:
transitivePeerDependencies:
- supports-color
- /@astrojs/mdx@2.0.3(astro@4.0.8):
- resolution: {integrity: sha512-wFjQX5CihU5B4UAQNwc2R48ph0flpc6/yvDCFANE0agtgI2+BaVcAjuW0EhGOQCZ65dQDqnFKE0lvGs7EADYpg==}
+ /@astrojs/markdown-remark@4.3.1:
+ resolution: {integrity: sha512-eJFi600tkRjTFiwzY9oD8AgCgB7gFqyWCKWuZ33dATVBgLiROD+zlMZ8STZzU7+ZALvmiUAun/K7umTmP5YfVQ==}
+ dependencies:
+ '@astrojs/prism': 3.0.0
+ github-slugger: 2.0.0
+ hast-util-from-html: 2.0.1
+ hast-util-to-text: 4.0.0
+ import-meta-resolve: 4.0.0
+ mdast-util-definitions: 6.0.0
+ rehype-raw: 7.0.0
+ rehype-stringify: 10.0.0
+ remark-gfm: 4.0.0
+ remark-parse: 11.0.0
+ remark-rehype: 11.0.0
+ remark-smartypants: 2.0.0
+ shiki: 1.2.0
+ unified: 11.0.4
+ unist-util-remove-position: 5.0.0
+ unist-util-visit: 5.0.0
+ unist-util-visit-parents: 6.0.1
+ vfile: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@astrojs/mdx@2.2.1(astro@4.0.8):
+ resolution: {integrity: sha512-bSr/AkvGieD9Pc5ZzMnAk7IHnw0vyt/aOujuYUmYT+NHiWahAUy/+ywNNMhTMmea0irdMYnBVC1AEKMQ/oXxow==}
engines: {node: '>=18.14.1'}
peerDependencies:
astro: ^4.0.0
dependencies:
- '@astrojs/markdown-remark': 4.0.1
+ '@astrojs/markdown-remark': 4.3.1
'@mdx-js/mdx': 3.0.0
acorn: 8.11.3
astro: 4.0.8(@types/node@20.10.6)(typescript@5.3.3)
@@ -3206,23 +3222,6 @@ packages:
'@lezer/common': 1.2.0
dev: false
- /@mapbox/node-pre-gyp@1.0.10:
- resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==}
- hasBin: true
- dependencies:
- detect-libc: 2.0.1
- https-proxy-agent: 5.0.1
- make-dir: 3.1.0
- node-fetch: 2.6.8
- nopt: 5.0.0
- npmlog: 5.0.1
- rimraf: 3.0.2
- semver: 7.3.8
- tar: 6.1.13
- transitivePeerDependencies:
- - encoding
- - supports-color
-
/@mdx-js/mdx@3.0.0:
resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
dependencies:
@@ -3742,6 +3741,7 @@ packages:
dependencies:
'@rollup/pluginutils': 5.1.0
magic-string: 0.30.5
+ dev: true
/@rollup/pluginutils@3.1.0(rollup@2.79.1):
resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
@@ -3767,6 +3767,7 @@ packages:
'@types/estree': 1.0.0
estree-walker: 2.0.2
picomatch: 2.3.1
+ dev: true
/@rollup/rollup-android-arm-eabi@4.9.2:
resolution: {integrity: sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==}
@@ -3859,6 +3860,10 @@ packages:
requiresBuild: true
optional: true
+ /@shikijs/core@1.2.0:
+ resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==}
+ dev: false
+
/@sigstore/bundle@2.1.0:
resolution: {integrity: sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -4993,9 +4998,6 @@ packages:
through: 2.3.8
dev: true
- /abbrev@1.1.1:
- resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
-
/abbrev@2.0.0:
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -5029,6 +5031,7 @@ packages:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
+ dev: true
/agent-base@7.1.0:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
@@ -5121,6 +5124,7 @@ packages:
/ansi-regex@2.1.1:
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
engines: {node: '>=0.10.0'}
+ dev: true
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -5168,13 +5172,7 @@ packages:
/aproba@2.0.0:
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
-
- /are-we-there-yet@2.0.0:
- resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
- engines: {node: '>=10'}
- dependencies:
- delegates: 1.0.0
- readable-stream: 3.6.0
+ dev: true
/are-we-there-yet@3.0.1:
resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
@@ -5751,18 +5749,6 @@ packages:
/caniuse-lite@1.0.30001572:
resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==}
- /canvas@2.11.2:
- resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==}
- engines: {node: '>=6'}
- requiresBuild: true
- dependencies:
- '@mapbox/node-pre-gyp': 1.0.10
- nan: 2.17.0
- simple-get: 3.1.1
- transitivePeerDependencies:
- - encoding
- - supports-color
-
/catharsis@0.9.0:
resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==}
engines: {node: '>= 10'}
@@ -5863,6 +5849,7 @@ packages:
/chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
engines: {node: '>=10'}
+ dev: true
/ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
@@ -5981,6 +5968,7 @@ packages:
/code-point-at@1.1.0:
resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
engines: {node: '>=0.10.0'}
+ dev: true
/collapse-white-space@2.1.0:
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
@@ -6021,6 +6009,7 @@ packages:
/color-support@1.1.3:
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
hasBin: true
+ dev: true
/color@4.2.3:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
@@ -6138,6 +6127,7 @@ packages:
/console-control-strings@1.1.0:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+ dev: true
/conventional-changelog-angular@7.0.0:
resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
@@ -6372,12 +6362,6 @@ packages:
dependencies:
character-entities: 2.0.2
- /decompress-response@4.2.1:
- resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==}
- engines: {node: '>=8'}
- dependencies:
- mimic-response: 2.1.0
-
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
@@ -6445,6 +6429,7 @@ packages:
/delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+ dev: true
/depd@1.1.2:
resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
@@ -6480,6 +6465,7 @@ packages:
/detect-libc@2.0.1:
resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
engines: {node: '>=8'}
+ dev: true
/detect-libc@2.0.2:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
@@ -7168,6 +7154,7 @@ packages:
/estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
/estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
@@ -7483,6 +7470,7 @@ packages:
engines: {node: '>= 8'}
dependencies:
minipass: 3.3.6
+ dev: true
/fs-minipass@3.0.2:
resolution: {integrity: sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==}
@@ -7526,20 +7514,6 @@ packages:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
- /gauge@3.0.2:
- resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
- engines: {node: '>=10'}
- dependencies:
- aproba: 2.0.0
- color-support: 1.1.3
- console-control-strings: 1.1.0
- has-unicode: 2.0.1
- object-assign: 4.1.1
- signal-exit: 3.0.7
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wide-align: 1.1.5
-
/gauge@4.0.4:
resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@@ -7937,6 +7911,7 @@ packages:
/has-unicode@2.0.1:
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+ dev: true
/has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
@@ -8088,6 +8063,15 @@ packages:
'@types/hast': 3.0.2
dev: false
+ /hast-util-to-text@4.0.0:
+ resolution: {integrity: sha512-EWiE1FSArNBPUo1cKWtzqgnuRQwEeQbQtnFJRYV1hb1BWDgrAlBU0ExptvZMM/KSA82cDpm2sFGf3Dmc5Mza3w==}
+ dependencies:
+ '@types/hast': 3.0.2
+ '@types/unist': 3.0.1
+ hast-util-is-element: 3.0.0
+ unist-util-find-after: 5.0.0
+ dev: false
+
/hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
dependencies:
@@ -8172,6 +8156,7 @@ packages:
debug: 4.3.4
transitivePeerDependencies:
- supports-color
+ dev: true
/https-proxy-agent@7.0.2:
resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==}
@@ -8465,6 +8450,7 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
number-is-nan: 1.0.1
+ dev: true
/is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
@@ -9299,12 +9285,6 @@ packages:
semver: 5.7.1
dev: true
- /make-dir@3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
- dependencies:
- semver: 6.3.0
-
/make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
@@ -9979,10 +9959,6 @@ packages:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
- /mimic-response@2.1.0:
- resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==}
- engines: {node: '>=8'}
-
/mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
@@ -10114,12 +10090,14 @@ packages:
engines: {node: '>=8'}
dependencies:
yallist: 4.0.0
+ dev: true
/minipass@4.0.0:
resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==}
engines: {node: '>=8'}
dependencies:
yallist: 4.0.0
+ dev: true
/minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
@@ -10142,6 +10120,7 @@ packages:
dependencies:
minipass: 3.3.6
yallist: 4.0.0
+ dev: true
/mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
@@ -10155,6 +10134,7 @@ packages:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
hasBin: true
+ dev: true
/mlly@1.4.0:
resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==}
@@ -10248,9 +10228,6 @@ packages:
thenify-all: 1.6.0
dev: false
- /nan@2.17.0:
- resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==}
-
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -10333,6 +10310,7 @@ packages:
optional: true
dependencies:
whatwg-url: 5.0.0
+ dev: true
/node-fetch@3.3.2:
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
@@ -10385,13 +10363,6 @@ packages:
'@babel/parser': 7.23.6
dev: true
- /nopt@5.0.0:
- resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
- engines: {node: '>=6'}
- hasBin: true
- dependencies:
- abbrev: 1.1.1
-
/nopt@7.1.0:
resolution: {integrity: sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -10578,14 +10549,6 @@ packages:
dependencies:
path-key: 4.0.0
- /npmlog@5.0.1:
- resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
- dependencies:
- are-we-there-yet: 2.0.0
- console-control-strings: 1.1.0
- gauge: 3.0.2
- set-blocking: 2.0.0
-
/npmlog@6.0.2:
resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@@ -10599,6 +10562,7 @@ packages:
/number-is-nan@1.0.1:
resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
engines: {node: '>=0.10.0'}
+ dev: true
/nx@17.2.8:
resolution: {integrity: sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==}
@@ -10665,6 +10629,7 @@ packages:
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
+ dev: false
/object-get@2.1.1:
resolution: {integrity: sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==}
@@ -12151,10 +12116,6 @@ packages:
hasBin: true
dev: true
- /semver@6.3.0:
- resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
- hasBin: true
-
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -12192,6 +12153,7 @@ packages:
/set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+ dev: true
/set-function-length@1.1.1:
resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
@@ -12264,6 +12226,12 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
+ /shiki@1.2.0:
+ resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==}
+ dependencies:
+ '@shikijs/core': 1.2.0
+ dev: false
+
/shikiji@0.6.13:
resolution: {integrity: sha512-4T7X39csvhT0p7GDnq9vysWddf2b6BeioiN3Ymhnt3xcy9tXmDcnsEFVxX18Z4YcQgEE/w48dLJ4pPPUcG9KkA==}
dependencies:
@@ -12315,13 +12283,7 @@ packages:
/simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
-
- /simple-get@3.1.1:
- resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==}
- dependencies:
- decompress-response: 4.2.1
- once: 1.4.0
- simple-concat: 1.0.1
+ dev: true
/simple-get@4.0.1:
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
@@ -12567,6 +12529,7 @@ packages:
code-point-at: 1.1.0
is-fullwidth-code-point: 1.0.0
strip-ansi: 3.0.1
+ dev: true
/string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
@@ -12673,6 +12636,7 @@ packages:
engines: {node: '>=0.10.0'}
dependencies:
ansi-regex: 2.1.1
+ dev: true
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
@@ -12896,6 +12860,7 @@ packages:
minizlib: 2.1.2
mkdirp: 1.0.4
yallist: 4.0.0
+ dev: true
/temp-dir@1.0.0:
resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
@@ -13358,6 +13323,13 @@ packages:
crypto-random-string: 2.0.0
dev: true
+ /unist-util-find-after@5.0.0:
+ resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
+ dependencies:
+ '@types/unist': 3.0.1
+ unist-util-is: 6.0.0
+ dev: false
+
/unist-util-is@3.0.0:
resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==}
dev: false
@@ -13894,6 +13866,7 @@ packages:
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
dependencies:
string-width: 1.0.2
+ dev: true
/widest-line@4.0.1:
resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap
index 3c96b6bd..7a4b52a7 100644
--- a/test/__snapshots__/examples.test.mjs.snap
+++ b/test/__snapshots__/examples.test.mjs.snap
@@ -1939,18 +1939,54 @@ exports[`runs examples > example "delaytime" example index 0 1`] = `
exports[`runs examples > example "detune" example index 0 1`] = `
[
- "[ 0/1 → 1/3 | n:0 s:superzow octave:3 detune:0 ]",
- "[ 1/3 → 2/3 | n:3 s:superzow octave:3 detune:0 ]",
- "[ 2/3 → 1/1 | n:7 s:superzow octave:3 detune:0 ]",
- "[ 1/1 → 4/3 | n:0 s:superzow octave:3 detune:0.25 ]",
- "[ 4/3 → 5/3 | n:3 s:superzow octave:3 detune:0.25 ]",
- "[ 5/3 → 2/1 | n:7 s:superzow octave:3 detune:0.25 ]",
- "[ 2/1 → 7/3 | n:0 s:superzow octave:3 detune:0.5 ]",
- "[ 7/3 → 8/3 | n:3 s:superzow octave:3 detune:0.5 ]",
- "[ 8/3 → 3/1 | n:7 s:superzow octave:3 detune:0.5 ]",
- "[ 3/1 → 10/3 | n:0 s:superzow octave:3 detune:1 ]",
- "[ 10/3 → 11/3 | n:3 s:superzow octave:3 detune:1 ]",
- "[ 11/3 → 4/1 | n:7 s:superzow octave:3 detune:1 ]",
+ "[ 0/1 → 1/12 | note:d s:supersaw detune:0.1 ]",
+ "[ 1/12 → 1/6 | note:f s:supersaw detune:0.1 ]",
+ "[ 1/6 → 1/4 | note:a s:supersaw detune:0.1 ]",
+ "[ 1/4 → 1/3 | note:a# s:supersaw detune:0.1 ]",
+ "[ 1/3 → 5/12 | note:a s:supersaw detune:0.1 ]",
+ "[ 5/12 → 1/2 | note:d3 s:supersaw detune:0.1 ]",
+ "[ 1/2 → 7/12 | note:d s:supersaw detune:0.1 ]",
+ "[ 7/12 → 2/3 | note:f s:supersaw detune:0.1 ]",
+ "[ 2/3 → 3/4 | note:a s:supersaw detune:0.1 ]",
+ "[ 3/4 → 5/6 | note:a# s:supersaw detune:0.1 ]",
+ "[ 5/6 → 11/12 | note:a s:supersaw detune:0.1 ]",
+ "[ 11/12 → 1/1 | note:d3 s:supersaw detune:0.1 ]",
+ "[ 1/1 → 13/12 | note:d s:supersaw detune:0.2 ]",
+ "[ 13/12 → 7/6 | note:f s:supersaw detune:0.2 ]",
+ "[ 7/6 → 5/4 | note:a s:supersaw detune:0.2 ]",
+ "[ 5/4 → 4/3 | note:a# s:supersaw detune:0.2 ]",
+ "[ 4/3 → 17/12 | note:a s:supersaw detune:0.2 ]",
+ "[ 17/12 → 3/2 | note:d3 s:supersaw detune:0.2 ]",
+ "[ 3/2 → 19/12 | note:d s:supersaw detune:0.2 ]",
+ "[ 19/12 → 5/3 | note:f s:supersaw detune:0.2 ]",
+ "[ 5/3 → 7/4 | note:a s:supersaw detune:0.2 ]",
+ "[ 7/4 → 11/6 | note:a# s:supersaw detune:0.2 ]",
+ "[ 11/6 → 23/12 | note:a s:supersaw detune:0.2 ]",
+ "[ 23/12 → 2/1 | note:d3 s:supersaw detune:0.2 ]",
+ "[ 2/1 → 25/12 | note:d s:supersaw detune:0.5 ]",
+ "[ 25/12 → 13/6 | note:f s:supersaw detune:0.5 ]",
+ "[ 13/6 → 9/4 | note:a s:supersaw detune:0.5 ]",
+ "[ 9/4 → 7/3 | note:a# s:supersaw detune:0.5 ]",
+ "[ 7/3 → 29/12 | note:a s:supersaw detune:0.5 ]",
+ "[ 29/12 → 5/2 | note:d3 s:supersaw detune:0.5 ]",
+ "[ 5/2 → 31/12 | note:d s:supersaw detune:0.5 ]",
+ "[ 31/12 → 8/3 | note:f s:supersaw detune:0.5 ]",
+ "[ 8/3 → 11/4 | note:a s:supersaw detune:0.5 ]",
+ "[ 11/4 → 17/6 | note:a# s:supersaw detune:0.5 ]",
+ "[ 17/6 → 35/12 | note:a s:supersaw detune:0.5 ]",
+ "[ 35/12 → 3/1 | note:d3 s:supersaw detune:0.5 ]",
+ "[ 3/1 → 37/12 | note:d s:supersaw detune:24.1 ]",
+ "[ 37/12 → 19/6 | note:f s:supersaw detune:24.1 ]",
+ "[ 19/6 → 13/4 | note:a s:supersaw detune:24.1 ]",
+ "[ 13/4 → 10/3 | note:a# s:supersaw detune:24.1 ]",
+ "[ 10/3 → 41/12 | note:a s:supersaw detune:24.1 ]",
+ "[ 41/12 → 7/2 | note:d3 s:supersaw detune:24.1 ]",
+ "[ 7/2 → 43/12 | note:d s:supersaw detune:24.1 ]",
+ "[ 43/12 → 11/3 | note:f s:supersaw detune:24.1 ]",
+ "[ 11/3 → 15/4 | note:a s:supersaw detune:24.1 ]",
+ "[ 15/4 → 23/6 | note:a# s:supersaw detune:24.1 ]",
+ "[ 23/6 → 47/12 | note:a s:supersaw detune:24.1 ]",
+ "[ 47/12 → 4/1 | note:d3 s:supersaw detune:24.1 ]",
]
`;
@@ -6806,6 +6842,59 @@ exports[`runs examples > example "splice" example index 0 1`] = `
]
`;
+exports[`runs examples > example "spread" example index 0 1`] = `
+[
+ "[ 0/1 → 1/12 | note:d s:supersaw spread:0 ]",
+ "[ 1/12 → 1/6 | note:f s:supersaw spread:0 ]",
+ "[ 1/6 → 1/4 | note:a s:supersaw spread:0 ]",
+ "[ 1/4 → 1/3 | note:a# s:supersaw spread:0 ]",
+ "[ 1/3 → 5/12 | note:a s:supersaw spread:0 ]",
+ "[ 5/12 → 1/2 | note:d3 s:supersaw spread:0 ]",
+ "[ 1/2 → 7/12 | note:d s:supersaw spread:0 ]",
+ "[ 7/12 → 2/3 | note:f s:supersaw spread:0 ]",
+ "[ 2/3 → 3/4 | note:a s:supersaw spread:0 ]",
+ "[ 3/4 → 5/6 | note:a# s:supersaw spread:0 ]",
+ "[ 5/6 → 11/12 | note:a s:supersaw spread:0 ]",
+ "[ 11/12 → 1/1 | note:d3 s:supersaw spread:0 ]",
+ "[ 1/1 → 13/12 | note:d s:supersaw spread:0.3 ]",
+ "[ 13/12 → 7/6 | note:f s:supersaw spread:0.3 ]",
+ "[ 7/6 → 5/4 | note:a s:supersaw spread:0.3 ]",
+ "[ 5/4 → 4/3 | note:a# s:supersaw spread:0.3 ]",
+ "[ 4/3 → 17/12 | note:a s:supersaw spread:0.3 ]",
+ "[ 17/12 → 3/2 | note:d3 s:supersaw spread:0.3 ]",
+ "[ 3/2 → 19/12 | note:d s:supersaw spread:0.3 ]",
+ "[ 19/12 → 5/3 | note:f s:supersaw spread:0.3 ]",
+ "[ 5/3 → 7/4 | note:a s:supersaw spread:0.3 ]",
+ "[ 7/4 → 11/6 | note:a# s:supersaw spread:0.3 ]",
+ "[ 11/6 → 23/12 | note:a s:supersaw spread:0.3 ]",
+ "[ 23/12 → 2/1 | note:d3 s:supersaw spread:0.3 ]",
+ "[ 2/1 → 25/12 | note:d s:supersaw spread:1 ]",
+ "[ 25/12 → 13/6 | note:f s:supersaw spread:1 ]",
+ "[ 13/6 → 9/4 | note:a s:supersaw spread:1 ]",
+ "[ 9/4 → 7/3 | note:a# s:supersaw spread:1 ]",
+ "[ 7/3 → 29/12 | note:a s:supersaw spread:1 ]",
+ "[ 29/12 → 5/2 | note:d3 s:supersaw spread:1 ]",
+ "[ 5/2 → 31/12 | note:d s:supersaw spread:1 ]",
+ "[ 31/12 → 8/3 | note:f s:supersaw spread:1 ]",
+ "[ 8/3 → 11/4 | note:a s:supersaw spread:1 ]",
+ "[ 11/4 → 17/6 | note:a# s:supersaw spread:1 ]",
+ "[ 17/6 → 35/12 | note:a s:supersaw spread:1 ]",
+ "[ 35/12 → 3/1 | note:d3 s:supersaw spread:1 ]",
+ "[ 3/1 → 37/12 | note:d s:supersaw spread:0 ]",
+ "[ 37/12 → 19/6 | note:f s:supersaw spread:0 ]",
+ "[ 19/6 → 13/4 | note:a s:supersaw spread:0 ]",
+ "[ 13/4 → 10/3 | note:a# s:supersaw spread:0 ]",
+ "[ 10/3 → 41/12 | note:a s:supersaw spread:0 ]",
+ "[ 41/12 → 7/2 | note:d3 s:supersaw spread:0 ]",
+ "[ 7/2 → 43/12 | note:d s:supersaw spread:0 ]",
+ "[ 43/12 → 11/3 | note:f s:supersaw spread:0 ]",
+ "[ 11/3 → 15/4 | note:a s:supersaw spread:0 ]",
+ "[ 15/4 → 23/6 | note:a# s:supersaw spread:0 ]",
+ "[ 23/6 → 47/12 | note:a s:supersaw spread:0 ]",
+ "[ 47/12 → 4/1 | note:d3 s:supersaw spread:0 ]",
+]
+`;
+
exports[`runs examples > example "square" example index 0 1`] = `
[
"[ 0/1 → 1/4 | note:C3 ]",
@@ -7267,6 +7356,59 @@ exports[`runs examples > example "undegradeBy" example index 0 1`] = `
]
`;
+exports[`runs examples > example "unison" example index 0 1`] = `
+[
+ "[ 0/1 → 1/12 | note:d s:supersaw unison:1 ]",
+ "[ 1/12 → 1/6 | note:f s:supersaw unison:1 ]",
+ "[ 1/6 → 1/4 | note:a s:supersaw unison:1 ]",
+ "[ 1/4 → 1/3 | note:a# s:supersaw unison:1 ]",
+ "[ 1/3 → 5/12 | note:a s:supersaw unison:1 ]",
+ "[ 5/12 → 1/2 | note:d3 s:supersaw unison:1 ]",
+ "[ 1/2 → 7/12 | note:d s:supersaw unison:1 ]",
+ "[ 7/12 → 2/3 | note:f s:supersaw unison:1 ]",
+ "[ 2/3 → 3/4 | note:a s:supersaw unison:1 ]",
+ "[ 3/4 → 5/6 | note:a# s:supersaw unison:1 ]",
+ "[ 5/6 → 11/12 | note:a s:supersaw unison:1 ]",
+ "[ 11/12 → 1/1 | note:d3 s:supersaw unison:1 ]",
+ "[ 1/1 → 13/12 | note:d s:supersaw unison:2 ]",
+ "[ 13/12 → 7/6 | note:f s:supersaw unison:2 ]",
+ "[ 7/6 → 5/4 | note:a s:supersaw unison:2 ]",
+ "[ 5/4 → 4/3 | note:a# s:supersaw unison:2 ]",
+ "[ 4/3 → 17/12 | note:a s:supersaw unison:2 ]",
+ "[ 17/12 → 3/2 | note:d3 s:supersaw unison:2 ]",
+ "[ 3/2 → 19/12 | note:d s:supersaw unison:2 ]",
+ "[ 19/12 → 5/3 | note:f s:supersaw unison:2 ]",
+ "[ 5/3 → 7/4 | note:a s:supersaw unison:2 ]",
+ "[ 7/4 → 11/6 | note:a# s:supersaw unison:2 ]",
+ "[ 11/6 → 23/12 | note:a s:supersaw unison:2 ]",
+ "[ 23/12 → 2/1 | note:d3 s:supersaw unison:2 ]",
+ "[ 2/1 → 25/12 | note:d s:supersaw unison:7 ]",
+ "[ 25/12 → 13/6 | note:f s:supersaw unison:7 ]",
+ "[ 13/6 → 9/4 | note:a s:supersaw unison:7 ]",
+ "[ 9/4 → 7/3 | note:a# s:supersaw unison:7 ]",
+ "[ 7/3 → 29/12 | note:a s:supersaw unison:7 ]",
+ "[ 29/12 → 5/2 | note:d3 s:supersaw unison:7 ]",
+ "[ 5/2 → 31/12 | note:d s:supersaw unison:7 ]",
+ "[ 31/12 → 8/3 | note:f s:supersaw unison:7 ]",
+ "[ 8/3 → 11/4 | note:a s:supersaw unison:7 ]",
+ "[ 11/4 → 17/6 | note:a# s:supersaw unison:7 ]",
+ "[ 17/6 → 35/12 | note:a s:supersaw unison:7 ]",
+ "[ 35/12 → 3/1 | note:d3 s:supersaw unison:7 ]",
+ "[ 3/1 → 37/12 | note:d s:supersaw unison:1 ]",
+ "[ 37/12 → 19/6 | note:f s:supersaw unison:1 ]",
+ "[ 19/6 → 13/4 | note:a s:supersaw unison:1 ]",
+ "[ 13/4 → 10/3 | note:a# s:supersaw unison:1 ]",
+ "[ 10/3 → 41/12 | note:a s:supersaw unison:1 ]",
+ "[ 41/12 → 7/2 | note:d3 s:supersaw unison:1 ]",
+ "[ 7/2 → 43/12 | note:d s:supersaw unison:1 ]",
+ "[ 43/12 → 11/3 | note:f s:supersaw unison:1 ]",
+ "[ 11/3 → 15/4 | note:a s:supersaw unison:1 ]",
+ "[ 15/4 → 23/6 | note:a# s:supersaw unison:1 ]",
+ "[ 23/6 → 47/12 | note:a s:supersaw unison:1 ]",
+ "[ 47/12 → 4/1 | note:d3 s:supersaw unison:1 ]",
+]
+`;
+
exports[`runs examples > example "unit" example index 0 1`] = `
[
"[ 0/1 → 1/4 | speed:1 s:bd unit:c ]",
diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap
index d929b84a..5740d0c5 100644
--- a/test/__snapshots__/tunes.test.mjs.snap
+++ b/test/__snapshots__/tunes.test.mjs.snap
@@ -7208,653 +7208,6 @@ exports[`renders tunes > tune: holyflute 1`] = `
]
`;
-exports[`renders tunes > tune: hyperpop 1`] = `
-[
- "[ -1/4 ⇜ (0/1 → 1/12) ⇝ 1/8 | gain:0.00024394233952886464 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -1/4 ⇜ (0/1 → 1/12) ⇝ 1/8 | gain:0.00024394233952886464 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -3/8 ⇜ (0/1 → 1/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1616.8693414940683 ]",
- "[ -3/8 ⇜ (0/1 → 1/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1616.8693414940683 ]",
- "[ -1/8 ⇜ (0/1 → 1/6) ⇝ 1/4 | gain:0.00031404209523161047 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -1/8 ⇜ (0/1 → 1/6) ⇝ 1/4 | gain:0.00031404209523161047 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -1/4 ⇜ (0/1 → 1/4) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1650 ]",
- "[ -1/4 ⇜ (0/1 → 1/4) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1650 ]",
- "[ 0/1 → 1/4 | gain:0.00039824554453003064 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.143312438893 cutoff:4000 ]",
- "[ 0/1 → 1/4 | gain:0.00039824554453003064 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.143312438893 cutoff:4000 ]",
- "[ 0/1 → 1/4 | s:bd gain:0.7 ]",
- "[ (0/1 → 1/3) ⇝ 3/8 | gain:0.26103468453995016 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5998.072590601808 cutoff:4000 ]",
- "[ (0/1 → 1/3) ⇝ 3/8 | gain:0.26103468453995016 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5998.072590601808 cutoff:4000 ]",
- "[ -1/8 ⇜ (0/1 → 3/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1683.1306585059317 ]",
- "[ -1/8 ⇜ (0/1 → 3/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:1683.1306585059317 ]",
- "[ -1/4 ⇜ (1/12 → 1/8) | gain:0.00024394233952886464 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -1/4 ⇜ (1/12 → 1/8) | gain:0.00024394233952886464 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ 1/8 → 1/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1699.6897509708342 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 1/8 → 1/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1699.6897509708342 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (1/8 → 5/12) ⇝ 1/2 | gain:0.0002657724569848846 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5994.647308096509 cutoff:4000 ]",
- "[ (1/8 → 5/12) ⇝ 1/2 | gain:0.0002657724569848846 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5994.647308096509 cutoff:4000 ]",
- "[ -1/8 ⇜ (1/6 → 1/4) | gain:0.00031404209523161047 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ -1/8 ⇜ (1/6 → 1/4) | gain:0.00031404209523161047 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5999.785818935017 cutoff:4000 ]",
- "[ 1/4 → 1/2 | gain:0.0003367315392180906 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5992.29333433282 cutoff:4000 ]",
- "[ 1/4 → 1/2 | gain:0.0003367315392180906 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5992.29333433282 cutoff:4000 ]",
- "[ 1/4 → 1/2 | s:hh3 gain:0.7 ]",
- "[ (1/4 → 7/12) ⇝ 5/8 | gain:0.2205154266512362 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5989.512318936654 cutoff:4000 ]",
- "[ (1/4 → 7/12) ⇝ 5/8 | gain:0.2205154266512362 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5989.512318936654 cutoff:4000 ]",
- "[ 0/1 ⇜ (1/3 → 3/8) | gain:0.26103468453995016 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5998.072590601808 cutoff:4000 ]",
- "[ 0/1 ⇜ (1/3 → 3/8) | gain:0.26103468453995016 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5998.072590601808 cutoff:4000 ]",
- "[ 3/8 → 1/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1765.826371664994 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 3/8 → 1/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1765.826371664994 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (3/8 → 2/3) ⇝ 3/4 | gain:0.2828651860235305 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5982.671142387316 cutoff:4000 ]",
- "[ (3/8 → 2/3) ⇝ 3/4 | gain:0.2828651860235305 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5982.671142387316 cutoff:4000 ]",
- "[ 1/8 ⇜ (5/12 → 1/2) | gain:0.0002657724569848846 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5994.647308096509 cutoff:4000 ]",
- "[ 1/8 ⇜ (5/12 → 1/2) | gain:0.0002657724569848846 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5994.647308096509 cutoff:4000 ]",
- "[ 1/2 → 5/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1798.799979846742 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 1/2 → 5/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1798.799979846742 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 1/2 → 3/4 | gain:0.0002836833950716784 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5978.612153434527 cutoff:4000 ]",
- "[ 1/2 → 3/4 | gain:0.0002836833950716784 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5978.612153434527 cutoff:4000 ]",
- "[ 1/2 → 3/4 | s:bd gain:0.7 ]",
- "[ (1/2 → 5/6) ⇝ 7/8 | gain:0.18560442471759028 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5974.128467049176 cutoff:4000 ]",
- "[ (1/2 → 5/6) ⇝ 7/8 | gain:0.18560442471759028 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5974.128467049176 cutoff:4000 ]",
- "[ 1/2 → 1/1 | s:sn gain:0.7 ]",
- "[ 1/4 ⇜ (7/12 → 5/8) | gain:0.2205154266512362 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5989.512318936654 cutoff:4000 ]",
- "[ 1/4 ⇜ (7/12 → 5/8) | gain:0.2205154266512362 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5989.512318936654 cutoff:4000 ]",
- "[ (5/8 → 11/12) ⇝ 1/1 | gain:0.237641808847867 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5963.890147645195 cutoff:4000 ]",
- "[ (5/8 → 11/12) ⇝ 1/1 | gain:0.237641808847867 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5963.890147645195 cutoff:4000 ]",
- "[ 3/8 ⇜ (2/3 → 3/4) | gain:0.2828651860235305 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5982.671142387316 cutoff:4000 ]",
- "[ 3/8 ⇜ (2/3 → 3/4) | gain:0.2828651860235305 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5982.671142387316 cutoff:4000 ]",
- "[ 3/4 → 7/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1864.4584935007128 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 3/4 → 7/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1864.4584935007128 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 3/4 → 1/1 | gain:0.300533478008833 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5958.137268909887 cutoff:4000 ]",
- "[ 3/4 → 1/1 | gain:0.300533478008833 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5958.137268909887 cutoff:4000 ]",
- "[ 3/4 → 1/1 | s:hh3 gain:0.7 ]",
- "[ (3/4 → 13/12) ⇝ 9/8 | gain:0.15563993880588714 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5951.963201008076 cutoff:4000 ]",
- "[ (3/4 → 13/12) ⇝ 9/8 | gain:0.15563993880588714 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5951.963201008076 cutoff:4000 ]",
- "[ 1/2 ⇜ (5/6 → 7/8) | gain:0.18560442471759028 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5974.128467049176 cutoff:4000 ]",
- "[ 1/2 ⇜ (5/6 → 7/8) | gain:0.18560442471759028 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5974.128467049176 cutoff:4000 ]",
- "[ 7/8 → 1/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1897.1038487394403 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 7/8 → 1/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1897.1038487394403 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (7/8 → 7/6) ⇝ 5/4 | gain:0.1989031661444791 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5938.355801271282 cutoff:4000 ]",
- "[ (7/8 → 7/6) ⇝ 5/4 | gain:0.1989031661444791 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5938.355801271282 cutoff:4000 ]",
- "[ 5/8 ⇜ (11/12 → 1/1) | gain:0.237641808847867 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5963.890147645195 cutoff:4000 ]",
- "[ 5/8 ⇜ (11/12 → 1/1) | gain:0.237641808847867 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5963.890147645195 cutoff:4000 ]",
- "[ 1/1 → 5/4 | gain:0.2513066112116339 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5930.924800994192 cutoff:4000 ]",
- "[ 1/1 → 5/4 | gain:0.2513066112116339 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5930.924800994192 cutoff:4000 ]",
- "[ 1/1 → 5/4 | s:bd gain:0.7 ]",
- "[ (1/1 → 4/3) ⇝ 11/8 | gain:0.13002412009397907 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5923.077274266886 cutoff:4000 ]",
- "[ (1/1 → 4/3) ⇝ 11/8 | gain:0.13002412009397907 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5923.077274266886 cutoff:4000 ]",
- "[ 3/4 ⇜ (13/12 → 9/8) | gain:0.15563993880588714 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5951.963201008076 cutoff:4000 ]",
- "[ 3/4 ⇜ (13/12 → 9/8) | gain:0.15563993880588714 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5951.963201008076 cutoff:4000 ]",
- "[ 9/8 → 5/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1961.928446178906 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 9/8 → 5/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:1961.928446178906 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (9/8 → 17/12) ⇝ 3/2 | gain:0.16585458116324744 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5906.1380911341175 cutoff:4000 ]",
- "[ (9/8 → 17/12) ⇝ 3/2 | gain:0.16585458116324744 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5906.1380911341175 cutoff:4000 ]",
- "[ 7/8 ⇜ (7/6 → 5/4) | gain:0.1989031661444791 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5938.355801271282 cutoff:4000 ]",
- "[ 7/8 ⇜ (7/6 → 5/4) | gain:0.1989031661444791 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5938.355801271282 cutoff:4000 ]",
- "[ 5/4 → 3/2 | gain:0.20935386344254933 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5897.049337170482 cutoff:4000 ]",
- "[ 5/4 → 3/2 | gain:0.20935386344254933 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5897.049337170482 cutoff:4000 ]",
- "[ 5/4 → 3/2 | s:hh3 gain:0.7 ]",
- "[ (5/4 → 19/12) ⇝ 13/8 | gain:0.10821620301269062 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5887.549861142967 cutoff:4000 ]",
- "[ (5/4 → 19/12) ⇝ 13/8 | gain:0.10821620301269062 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5887.549861142967 cutoff:4000 ]",
- "[ 1/1 ⇜ (4/3 → 11/8) | gain:0.13002412009397907 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5923.077274266886 cutoff:4000 ]",
- "[ 1/1 ⇜ (4/3 → 11/8) | gain:0.13002412009397907 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5923.077274266886 cutoff:4000 ]",
- "[ 11/8 → 3/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2026.0015806698216 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 11/8 → 3/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2026.0015806698216 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (11/8 → 5/3) ⇝ 7/4 | gain:0.13777765528071248 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5867.325323737765 cutoff:4000 ]",
- "[ (11/8 → 5/3) ⇝ 7/4 | gain:0.13777765528071248 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5867.325323737765 cutoff:4000 ]",
- "[ 9/8 ⇜ (17/12 → 3/2) | gain:0.16585458116324744 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5906.1380911341175 cutoff:4000 ]",
- "[ 9/8 ⇜ (17/12 → 3/2) | gain:0.16585458116324744 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5906.1380911341175 cutoff:4000 ]",
- "[ 3/2 → 13/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2057.708031580958 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 3/2 → 13/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2057.708031580958 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 3/2 → 7/4 | gain:0.17374970658501893 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5856.603727730447 cutoff:4000 ]",
- "[ 3/2 → 7/4 | gain:0.17374970658501893 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5856.603727730447 cutoff:4000 ]",
- "[ 3/2 → 7/4 | s:bd gain:0.7 ]",
- "[ (3/2 → 11/6) ⇝ 15/8 | gain:0.08972789051217522 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5845.47833980621 cutoff:4000 ]",
- "[ (3/2 → 11/6) ⇝ 15/8 | gain:0.08972789051217522 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5845.47833980621 cutoff:4000 ]",
- "[ 3/2 → 2/1 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2104.801302079497 ]",
- "[ 3/2 → 2/1 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2104.801302079497 ]",
- "[ 3/2 → 2/1 | s:sn gain:0.7 ]",
- "[ 5/4 ⇜ (19/12 → 13/8) | gain:0.10821620301269062 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5887.549861142967 cutoff:4000 ]",
- "[ 5/4 ⇜ (19/12 → 13/8) | gain:0.10821620301269062 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5887.549861142967 cutoff:4000 ]",
- "[ (13/8 → 23/12) ⇝ 2/1 | gain:0.11402475157686406 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5822.02388217981 cutoff:4000 ]",
- "[ (13/8 → 23/12) ⇝ 2/1 | gain:0.11402475157686406 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5822.02388217981 cutoff:4000 ]",
- "[ (13/8 → 2/1) ⇝ 17/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2135.8582993222344 ]",
- "[ (13/8 → 2/1) ⇝ 17/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2135.8582993222344 ]",
- "[ 11/8 ⇜ (5/3 → 7/4) | gain:0.13777765528071248 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5867.325323737765 cutoff:4000 ]",
- "[ 11/8 ⇜ (5/3 → 7/4) | gain:0.13777765528071248 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5867.325323737765 cutoff:4000 ]",
- "[ 7/4 → 15/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2120.3652183367367 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 7/4 → 15/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2120.3652183367367 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 7/4 → 2/1 | gain:0.14366058218580086 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5809.698831278217 cutoff:4000 ]",
- "[ 7/4 → 2/1 | gain:0.14366058218580086 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5809.698831278217 cutoff:4000 ]",
- "[ 7/4 → 2/1 | s:hh3 gain:0.7 ]",
- "[ (7/4 → 2/1) ⇝ 17/8 | gain:0.07411986998714647 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ (7/4 → 2/1) ⇝ 17/8 | gain:0.07411986998714647 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ (7/4 → 2/1) ⇝ 9/4 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2166.622633692871 ]",
- "[ (7/4 → 2/1) ⇝ 9/4 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2166.622633692871 ]",
- "[ 3/2 ⇜ (11/6 → 15/8) | gain:0.08972789051217522 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5845.47833980621 cutoff:4000 ]",
- "[ 3/2 ⇜ (11/6 → 15/8) | gain:0.08972789051217522 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5845.47833980621 cutoff:4000 ]",
- "[ 15/8 → 2/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2151.2782118349805 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 15/8 → 2/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2151.2782118349805 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (15/8 → 2/1) ⇝ 9/4 | gain:0.09401455409698445 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ (15/8 → 2/1) ⇝ 9/4 | gain:0.09401455409698445 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ (15/8 → 2/1) ⇝ 19/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2197.0757739067362 ]",
- "[ (15/8 → 2/1) ⇝ 19/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2197.0757739067362 ]",
- "[ 13/8 ⇜ (23/12 → 2/1) | gain:0.11402475157686406 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5822.02388217981 cutoff:4000 ]",
- "[ 13/8 ⇜ (23/12 → 2/1) | gain:0.11402475157686406 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5822.02388217981 cutoff:4000 ]",
- "[ 7/4 ⇜ (2/1 → 25/12) ⇝ 17/8 | gain:0.07411986998714647 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ 7/4 ⇜ (2/1 → 25/12) ⇝ 17/8 | gain:0.07411986998714647 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ 13/8 ⇜ (2/1 → 17/8) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2135.8582993222344 ]",
- "[ 13/8 ⇜ (2/1 → 17/8) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2135.8582993222344 ]",
- "[ 15/8 ⇜ (2/1 → 13/6) ⇝ 9/4 | gain:0.09401455409698445 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ 15/8 ⇜ (2/1 → 13/6) ⇝ 9/4 | gain:0.09401455409698445 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ 7/4 ⇜ (2/1 → 9/4) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2166.622633692871 ]",
- "[ 7/4 ⇜ (2/1 → 9/4) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2166.622633692871 ]",
- "[ 2/1 → 9/4 | gain:0.11833922971344701 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5756.463210874651 cutoff:4000 ]",
- "[ 2/1 → 9/4 | gain:0.11833922971344701 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5756.463210874651 cutoff:4000 ]",
- "[ 2/1 → 9/4 | s:bd gain:0.7 ]",
- "[ (2/1 → 7/3) ⇝ 19/8 | gain:0.06099882456242525 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5742.18185383172 cutoff:4000 ]",
- "[ (2/1 → 7/3) ⇝ 19/8 | gain:0.06099882456242525 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5742.18185383172 cutoff:4000 ]",
- "[ 15/8 ⇜ (2/1 → 19/8) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2197.0757739067362 ]",
- "[ 15/8 ⇜ (2/1 → 19/8) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2197.0757739067362 ]",
- "[ 7/4 ⇜ (25/12 → 17/8) | gain:0.07411986998714647 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ 7/4 ⇜ (25/12 → 17/8) | gain:0.07411986998714647 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5796.978025372246 cutoff:4000 ]",
- "[ 17/8 → 9/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2212.17990613181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 17/8 → 9/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2212.17990613181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (17/8 → 29/12) ⇝ 5/2 | gain:0.07722803431084992 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5712.469093657604 cutoff:4000 ]",
- "[ (17/8 → 29/12) ⇝ 5/2 | gain:0.07722803431084992 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5712.469093657604 cutoff:4000 ]",
- "[ 15/8 ⇜ (13/6 → 9/4) | gain:0.09401455409698445 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ 15/8 ⇜ (13/6 → 9/4) | gain:0.09401455409698445 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5770.357934562703 cutoff:4000 ]",
- "[ 9/4 → 5/2 | gain:0.09711940526986938 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5697.042781654914 cutoff:4000 ]",
- "[ 9/4 → 5/2 | gain:0.09711940526986938 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5697.042781654914 cutoff:4000 ]",
- "[ 9/4 → 5/2 | s:hh3 gain:0.7 ]",
- "[ (9/4 → 31/12) ⇝ 21/8 | gain:0.05001458841027654 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5681.240017681994 cutoff:4000 ]",
- "[ (9/4 → 31/12) ⇝ 21/8 | gain:0.05001458841027654 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5681.240017681994 cutoff:4000 ]",
- "[ 2/1 ⇜ (7/3 → 19/8) | gain:0.06099882456242525 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5742.18185383172 cutoff:4000 ]",
- "[ 2/1 ⇜ (7/3 → 19/8) | gain:0.06099882456242525 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5742.18185383172 cutoff:4000 ]",
- "[ 19/8 → 5/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2271.727259793624 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 19/8 → 5/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2271.727259793624 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (19/8 → 8/3) ⇝ 11/4 | gain:0.06320447612884668 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5648.516028753632 cutoff:4000 ]",
- "[ (19/8 → 8/3) ⇝ 11/4 | gain:0.06320447612884668 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5648.516028753632 cutoff:4000 ]",
- "[ 17/8 ⇜ (29/12 → 5/2) | gain:0.07722803431084992 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5712.469093657604 cutoff:4000 ]",
- "[ 17/8 ⇜ (29/12 → 5/2) | gain:0.07722803431084992 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5712.469093657604 cutoff:4000 ]",
- "[ 5/2 → 21/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2300.948092306816 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 5/2 → 21/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2300.948092306816 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 5/2 → 11/4 | gain:0.0794106090487894 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5631.60041088523 cutoff:4000 ]",
- "[ 5/2 → 11/4 | gain:0.0794106090487894 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5631.60041088523 cutoff:4000 ]",
- "[ 5/2 → 11/4 | s:bd gain:0.7 ]",
- "[ (5/2 → 17/6) ⇝ 23/8 | gain:0.04085727749307612 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5614.319554259933 cutoff:4000 ]",
- "[ (5/2 → 17/6) ⇝ 23/8 | gain:0.04085727749307612 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5614.319554259933 cutoff:4000 ]",
- "[ 5/2 → 3/1 | s:sn gain:0.7 ]",
- "[ 9/4 ⇜ (31/12 → 21/8) | gain:0.05001458841027654 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5681.240017681994 cutoff:4000 ]",
- "[ 9/4 ⇜ (31/12 → 21/8) | gain:0.05001458841027654 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5681.240017681994 cutoff:4000 ]",
- "[ (21/8 → 35/12) ⇝ 3/1 | gain:0.051537412445127495 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5578.674030756363 cutoff:4000 ]",
- "[ (21/8 → 35/12) ⇝ 3/1 | gain:0.051537412445127495 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5578.674030756363 cutoff:4000 ]",
- "[ 19/8 ⇜ (8/3 → 11/4) | gain:0.06320447612884668 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5648.516028753632 cutoff:4000 ]",
- "[ 19/8 ⇜ (8/3 → 11/4) | gain:0.06320447612884668 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5648.516028753632 cutoff:4000 ]",
- "[ 11/4 → 23/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2358.1960716159333 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 11/4 → 23/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2358.1960716159333 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 11/4 → 3/1 | gain:0.06469267544862903 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5560.31547155504 cutoff:4000 ]",
- "[ 11/4 → 3/1 | gain:0.06469267544862903 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5560.31547155504 cutoff:4000 ]",
- "[ 11/4 → 3/1 | s:hh3 gain:0.7 ]",
- "[ (11/4 → 37/12) ⇝ 25/8 | gain:0.033254339487292464 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5541.603887904197 cutoff:4000 ]",
- "[ (11/4 → 37/12) ⇝ 25/8 | gain:0.033254339487292464 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5541.603887904197 cutoff:4000 ]",
- "[ 5/2 ⇜ (17/6 → 23/8) | gain:0.04085727749307612 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5614.319554259933 cutoff:4000 ]",
- "[ 5/2 ⇜ (17/6 → 23/8) | gain:0.04085727749307612 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5614.319554259933 cutoff:4000 ]",
- "[ 23/8 → 3/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2386.1887343697626 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 23/8 → 3/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2386.1887343697626 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (23/8 → 19/6) ⇝ 13/4 | gain:0.041870446443995187 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5503.134531727652 cutoff:4000 ]",
- "[ (23/8 → 19/6) ⇝ 13/4 | gain:0.041870446443995187 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5503.134531727652 cutoff:4000 ]",
- "[ 21/8 ⇜ (35/12 → 3/1) | gain:0.051537412445127495 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5578.674030756363 cutoff:4000 ]",
- "[ 21/8 ⇜ (35/12 → 3/1) | gain:0.051537412445127495 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5578.674030756363 cutoff:4000 ]",
- "[ 3/1 → 13/4 | gain:0.05251021778611238 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5483.383350728088 cutoff:4000 ]",
- "[ 3/1 → 13/4 | gain:0.05251021778611238 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5483.383350728088 cutoff:4000 ]",
- "[ 3/1 → 13/4 | s:bd gain:0.7 ]",
- "[ (3/1 → 10/3) ⇝ 27/8 | gain:0.026967531141465956 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5463.2923272018625 cutoff:4000 ]",
- "[ (3/1 → 10/3) ⇝ 27/8 | gain:0.026967531141465956 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5463.2923272018625 cutoff:4000 ]",
- "[ 11/4 ⇜ (37/12 → 25/8) | gain:0.033254339487292464 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5541.603887904197 cutoff:4000 ]",
- "[ 11/4 ⇜ (37/12 → 25/8) | gain:0.033254339487292464 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5541.603887904197 cutoff:4000 ]",
- "[ 25/8 → 13/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2440.8271075661924 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 25/8 → 13/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2440.8271075661924 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (25/8 → 41/12) ⇝ 7/2 | gain:0.0338929965297769 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5422.104580183649 cutoff:4000 ]",
- "[ (25/8 → 41/12) ⇝ 7/2 | gain:0.0338929965297769 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5422.104580183649 cutoff:4000 ]",
- "[ 23/8 ⇜ (19/6 → 13/4) | gain:0.041870446443995187 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5503.134531727652 cutoff:4000 ]",
- "[ 23/8 ⇜ (19/6 → 13/4) | gain:0.041870446443995187 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5503.134531727652 cutoff:4000 ]",
- "[ 13/4 → 7/2 | gain:0.04246699250713177 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5401.014914000078 cutoff:4000 ]",
- "[ 13/4 → 7/2 | gain:0.04246699250713177 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5401.014914000078 cutoff:4000 ]",
- "[ 13/4 → 7/2 | s:hh3 gain:0.7 ]",
- "[ (13/4 → 43/12) ⇝ 29/8 | gain:0.021789864126373813 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5379.599518697443 cutoff:4000 ]",
- "[ (13/4 → 43/12) ⇝ 29/8 | gain:0.021789864126373813 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5379.599518697443 cutoff:4000 ]",
- "[ 3/1 ⇜ (10/3 → 27/8) | gain:0.026967531141465956 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5463.2923272018625 cutoff:4000 ]",
- "[ 3/1 ⇜ (10/3 → 27/8) | gain:0.026967531141465956 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5463.2923272018625 cutoff:4000 ]",
- "[ 27/8 → 7/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2493.5603089922215 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 27/8 → 7/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2493.5603089922215 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (27/8 → 11/3) ⇝ 15/4 | gain:0.02733603378769718 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5335.806273589214 cutoff:4000 ]",
- "[ (27/8 → 11/3) ⇝ 15/4 | gain:0.02733603378769718 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5335.806273589214 cutoff:4000 ]",
- "[ 25/8 ⇜ (41/12 → 7/2) | gain:0.0338929965297769 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5422.104580183649 cutoff:4000 ]",
- "[ 25/8 ⇜ (41/12 → 7/2) | gain:0.0338929965297769 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5422.104580183649 cutoff:4000 ]",
- "[ 7/2 → 29/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2519.1725829012184 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 7/2 → 29/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2519.1725829012184 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 7/2 → 15/4 | gain:0.034220278760810484 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5313.435927530719 cutoff:4000 ]",
- "[ 7/2 → 15/4 | gain:0.034220278760810484 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5313.435927530719 cutoff:4000 ]",
- "[ 7/2 → 15/4 | s:bd gain:0.7 ]",
- "[ (7/2 → 23/6) ⇝ 31/8 | gain:0.017542573009485987 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5290.754858561636 cutoff:4000 ]",
- "[ (7/2 → 23/6) ⇝ 31/8 | gain:0.017542573009485987 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5290.754858561636 cutoff:4000 ]",
- "[ 7/2 → 4/1 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2556.604589043475 ]",
- "[ 7/2 → 4/1 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2556.604589043475 ]",
- "[ 7/2 → 4/1 | s:sn gain:0.7 ]",
- "[ 13/4 ⇜ (43/12 → 29/8) | gain:0.021789864126373813 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5379.599518697443 cutoff:4000 ]",
- "[ 13/4 ⇜ (43/12 → 29/8) | gain:0.021789864126373813 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5379.599518697443 cutoff:4000 ]",
- "[ (29/8 → 47/12) ⇝ 4/1 | gain:0.02196788874761195 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5244.4761496042 cutoff:4000 ]",
- "[ (29/8 → 47/12) ⇝ 4/1 | gain:0.02196788874761195 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5244.4761496042 cutoff:4000 ]",
- "[ (29/8 → 4/1) ⇝ 33/8 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2580.8797353950404 ]",
- "[ (29/8 → 4/1) ⇝ 33/8 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2580.8797353950404 ]",
- "[ 27/8 ⇜ (11/3 → 15/4) | gain:0.02733603378769718 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5335.806273589214 cutoff:4000 ]",
- "[ 27/8 ⇜ (11/3 → 15/4) | gain:0.02733603378769718 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5335.806273589214 cutoff:4000 ]",
- "[ 15/4 → 31/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2568.811347023862 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 15/4 → 31/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2568.811347023862 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 15/4 → 4/1 | gain:0.027475374351507095 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5220.886439234386 cutoff:4000 ]",
- "[ 15/4 → 4/1 | gain:0.027475374351507095 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5220.886439234386 cutoff:4000 ]",
- "[ 15/4 → 4/1 | s:hh3 gain:0.7 ]",
- "[ (15/4 → 4/1) ⇝ 33/8 | gain:0.01407215930427397 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ (15/4 → 4/1) ⇝ 33/8 | gain:0.01407215930427397 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ (15/4 → 4/1) ⇝ 17/4 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2604.594154601839 ]",
- "[ (15/4 → 4/1) ⇝ 17/4 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2604.594154601839 ]",
- "[ 7/2 ⇜ (23/6 → 31/8) | gain:0.017542573009485987 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5290.754858561636 cutoff:4000 ]",
- "[ 7/2 ⇜ (23/6 → 31/8) | gain:0.017542573009485987 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5290.754858561636 cutoff:4000 ]",
- "[ 31/8 → 4/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2592.8079367021132 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 31/8 → 4/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2592.8079367021132 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 31/8 → 4/1 | s:bd gain:0.7 ]",
- "[ (31/8 → 4/1) ⇝ 17/4 | gain:0.01759019913034246 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ (31/8 → 4/1) ⇝ 17/4 | gain:0.01759019913034246 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ (31/8 → 4/1) ⇝ 35/8 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2627.7335619844803 ]",
- "[ (31/8 → 4/1) ⇝ 35/8 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2627.7335619844803 ]",
- "[ 29/8 ⇜ (47/12 → 4/1) | gain:0.02196788874761195 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5244.4761496042 cutoff:4000 ]",
- "[ 29/8 ⇜ (47/12 → 4/1) | gain:0.02196788874761195 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5244.4761496042 cutoff:4000 ]",
- "[ 15/4 ⇜ (4/1 → 49/12) ⇝ 33/8 | gain:0.01407215930427397 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ 15/4 ⇜ (4/1 → 49/12) ⇝ 33/8 | gain:0.01407215930427397 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ 29/8 ⇜ (4/1 → 33/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2580.8797353950404 ]",
- "[ 29/8 ⇜ (4/1 → 33/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2580.8797353950404 ]",
- "[ 31/8 ⇜ (4/1 → 25/6) ⇝ 17/4 | gain:0.01759019913034246 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ 31/8 ⇜ (4/1 → 25/6) ⇝ 17/4 | gain:0.01759019913034246 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ 15/4 ⇜ (4/1 → 17/4) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2604.594154601839 ]",
- "[ 15/4 ⇜ (4/1 → 17/4) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2604.594154601839 ]",
- "[ 4/1 → 17/4 | gain:0.02198029948120568 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5123.62012082546 cutoff:4000 ]",
- "[ 4/1 → 17/4 | gain:0.02198029948120568 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5123.62012082546 cutoff:4000 ]",
- "[ 4/1 → 17/4 | s:bd gain:0.7 ]",
- "[ (4/1 → 13/3) ⇝ 35/8 | gain:0.011247559038777319 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5098.597504951462 cutoff:4000 ]",
- "[ (4/1 → 13/3) ⇝ 35/8 | gain:0.011247559038777319 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5098.597504951462 cutoff:4000 ]",
- "[ 31/8 ⇜ (4/1 → 35/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2627.7335619844803 ]",
- "[ 31/8 ⇜ (4/1 → 35/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2627.7335619844803 ]",
- "[ 15/4 ⇜ (49/12 → 33/8) | gain:0.01407215930427397 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ 15/4 ⇜ (49/12 → 33/8) | gain:0.01407215930427397 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5197.0018638323545 cutoff:4000 ]",
- "[ 33/8 → 17/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2639.083266757757 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 33/8 → 17/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2639.083266757757 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (33/8 → 53/12) ⇝ 9/2 | gain:0.01403405840758879 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5047.734873274585 cutoff:4000 ]",
- "[ (33/8 → 53/12) ⇝ 9/2 | gain:0.01403405840758879 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5047.734873274585 cutoff:4000 ]",
- "[ 31/8 ⇜ (25/6 → 17/4) | gain:0.01759019913034246 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ 31/8 ⇜ (25/6 → 17/4) | gain:0.01759019913034246 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5148.3645377501725 cutoff:4000 ]",
- "[ 17/4 → 9/2 | gain:0.01752078272553497 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5021.903572521802 cutoff:4000 ]",
- "[ 17/4 → 9/2 | gain:0.01752078272553497 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5021.903572521802 cutoff:4000 ]",
- "[ 17/4 → 9/2 | s:hh3 gain:0.7 ]",
- "[ (17/4 → 55/12) ⇝ 37/8 | gain:0.008957471551552614 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4995.811501426648 cutoff:4000 ]",
- "[ (17/4 → 55/12) ⇝ 37/8 | gain:0.008957471551552614 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4995.811501426648 cutoff:4000 ]",
- "[ 4/1 ⇜ (13/3 → 35/8) | gain:0.011247559038777319 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5098.597504951462 cutoff:4000 ]",
- "[ 4/1 ⇜ (13/3 → 35/8) | gain:0.011247559038777319 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5098.597504951462 cutoff:4000 ]",
- "[ 35/8 → 9/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2682.97580859032 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 35/8 → 9/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2682.97580859032 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (35/8 → 14/3) ⇝ 19/4 | gain:0.011156410432703394 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4942.862975093085 cutoff:4000 ]",
- "[ (35/8 → 14/3) ⇝ 19/4 | gain:0.011156410432703394 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4942.862975093085 cutoff:4000 ]",
- "[ 33/8 ⇜ (53/12 → 9/2) | gain:0.01403405840758879 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5047.734873274585 cutoff:4000 ]",
- "[ 33/8 ⇜ (53/12 → 9/2) | gain:0.01403405840758879 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:5047.734873274585 cutoff:4000 ]",
- "[ 9/2 → 37/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2703.995258572327 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 9/2 → 37/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2703.995258572327 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 9/2 → 19/4 | gain:0.013915584104736941 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4916.015592312082 cutoff:4000 ]",
- "[ 9/2 → 19/4 | gain:0.013915584104736941 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4916.015592312082 cutoff:4000 ]",
- "[ 9/2 → 19/4 | s:bd gain:0.7 ]",
- "[ (9/2 → 29/6) ⇝ 39/8 | gain:0.007107876545841471 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4888.925582549005 cutoff:4000 ]",
- "[ (9/2 → 29/6) ⇝ 39/8 | gain:0.007107876545841471 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4888.925582549005 cutoff:4000 ]",
- "[ 9/2 → 5/1 | s:sn gain:0.7 ]",
- "[ 17/4 ⇜ (55/12 → 37/8) | gain:0.008957471551552614 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4995.811501426648 cutoff:4000 ]",
- "[ 17/4 ⇜ (55/12 → 37/8) | gain:0.008957471551552614 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4995.811501426648 cutoff:4000 ]",
- "[ (37/8 → 59/12) ⇝ 5/1 | gain:0.008836720604435567 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4834.036289789029 cutoff:4000 ]",
- "[ (37/8 → 59/12) ⇝ 5/1 | gain:0.008836720604435567 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4834.036289789029 cutoff:4000 ]",
- "[ 35/8 ⇜ (14/3 → 19/4) | gain:0.011156410432703394 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4942.862975093085 cutoff:4000 ]",
- "[ 35/8 ⇜ (14/3 → 19/4) | gain:0.011156410432703394 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4942.862975093085 cutoff:4000 ]",
- "[ 19/4 → 39/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2744.1172176410028 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 19/4 → 39/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2744.1172176410028 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 19/4 → 5/1 | gain:0.011012190825058119 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4806.246411789873 cutoff:4000 ]",
- "[ 19/4 → 5/1 | gain:0.011012190825058119 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4806.246411789873 cutoff:4000 ]",
- "[ 19/4 → 5/1 | s:hh3 gain:0.7 ]",
- "[ (19/4 → 61/12) ⇝ 41/8 | gain:0.005619756192058716 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4778.23271519263 cutoff:4000 ]",
- "[ (19/4 → 61/12) ⇝ 41/8 | gain:0.005619756192058716 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4778.23271519263 cutoff:4000 ]",
- "[ 9/2 ⇜ (29/6 → 39/8) | gain:0.007107876545841471 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4888.925582549005 cutoff:4000 ]",
- "[ 9/2 ⇜ (29/6 → 39/8) | gain:0.007107876545841471 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4888.925582549005 cutoff:4000 ]",
- "[ 39/8 → 5/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2763.195558759784 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 39/8 → 5/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2763.195558759784 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (39/8 → 31/6) ⇝ 21/4 | gain:0.006973940456445439 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4721.553103742387 cutoff:4000 ]",
- "[ (39/8 → 31/6) ⇝ 21/4 | gain:0.006973940456445439 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4721.553103742387 cutoff:4000 ]",
- "[ 37/8 ⇜ (59/12 → 5/1) | gain:0.008836720604435567 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4834.036289789029 cutoff:4000 ]",
- "[ 37/8 ⇜ (59/12 → 5/1) | gain:0.008836720604435567 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4834.036289789029 cutoff:4000 ]",
- "[ 5/1 → 21/4 | gain:0.008682903916956372 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4692.8969006490215 cutoff:4000 ]",
- "[ 5/1 → 21/4 | gain:0.008682903916956372 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4692.8969006490215 cutoff:4000 ]",
- "[ 5/1 → 21/4 | s:bd gain:0.7 ]",
- "[ (5/1 → 16/3) ⇝ 43/8 | gain:0.004427030019445723 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4664.036300812779 cutoff:4000 ]",
- "[ (5/1 → 16/3) ⇝ 43/8 | gain:0.004427030019445723 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4664.036300812779 cutoff:4000 ]",
- "[ 19/4 ⇜ (61/12 → 41/8) | gain:0.005619756192058716 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4778.23271519263 cutoff:4000 ]",
- "[ 19/4 ⇜ (61/12 → 41/8) | gain:0.005619756192058716 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4778.23271519263 cutoff:4000 ]",
- "[ 41/8 → 21/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2799.329510692108 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 41/8 → 21/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2799.329510692108 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (41/8 → 65/12) ⇝ 11/2 | gain:0.005483770957386215 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4605.721725547503 cutoff:4000 ]",
- "[ (41/8 → 65/12) ⇝ 11/2 | gain:0.005483770957386215 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4605.721725547503 cutoff:4000 ]",
- "[ 39/8 ⇜ (31/6 → 21/4) | gain:0.006973940456445439 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4721.553103742387 cutoff:4000 ]",
- "[ 39/8 ⇜ (31/6 → 21/4) | gain:0.006973940456445439 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4721.553103742387 cutoff:4000 ]",
- "[ 21/4 → 11/2 | gain:0.006821319376399847 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4576.2777420207385 cutoff:4000 ]",
- "[ 21/4 → 11/2 | gain:0.006821319376399847 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4576.2777420207385 cutoff:4000 ]",
- "[ 21/4 → 11/2 | s:hh3 gain:0.7 ]",
- "[ (21/4 → 67/12) ⇝ 45/8 | gain:0.00347470282155788 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4546.64934384357 cutoff:4000 ]",
- "[ (21/4 → 67/12) ⇝ 45/8 | gain:0.00347470282155788 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4546.64934384357 cutoff:4000 ]",
- "[ 5/1 ⇜ (16/3 → 43/8) | gain:0.004427030019445723 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4664.036300812779 cutoff:4000 ]",
- "[ 5/1 ⇜ (16/3 → 43/8) | gain:0.004427030019445723 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4664.036300812779 cutoff:4000 ]",
- "[ 43/8 → 11/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2832.694627163799 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 43/8 → 11/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2832.694627163799 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (43/8 → 17/3) ⇝ 23/4 | gain:0.004296220430900771 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4486.859640960669 cutoff:4000 ]",
- "[ (43/8 → 17/3) ⇝ 23/4 | gain:0.004296220430900771 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4486.859640960669 cutoff:4000 ]",
- "[ 41/8 ⇜ (65/12 → 11/2) | gain:0.005483770957386215 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4605.721725547503 cutoff:4000 ]",
- "[ 41/8 ⇜ (65/12 → 11/2) | gain:0.005483770957386215 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4605.721725547503 cutoff:4000 ]",
- "[ 11/2 → 45/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2848.313487543853 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 11/2 → 45/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2848.313487543853 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 11/2 → 23/4 | gain:0.005339195768845559 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4456.708580912725 cutoff:4000 ]",
- "[ 11/2 → 23/4 | gain:0.005339195768845559 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4456.708580912725 cutoff:4000 ]",
- "[ 11/2 → 23/4 | s:bd gain:0.7 ]",
- "[ (11/2 → 35/6) ⇝ 47/8 | gain:0.0027172198948820303 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4426.39359377459 cutoff:4000 ]",
- "[ (11/2 → 35/6) ⇝ 47/8 | gain:0.0027172198948820303 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4426.39359377459 cutoff:4000 ]",
- "[ 11/2 → 6/1 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2870.3855457166487 ]",
- "[ 11/2 → 6/1 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2870.3855457166487 ]",
- "[ 11/2 → 6/1 | s:sn gain:0.7 ]",
- "[ 21/4 ⇜ (67/12 → 45/8) | gain:0.00347470282155788 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4546.64934384357 cutoff:4000 ]",
- "[ 21/4 ⇜ (67/12 → 45/8) | gain:0.00347470282155788 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4546.64934384357 cutoff:4000 ]",
- "[ (45/8 → 71/12) ⇝ 6/1 | gain:0.0033534458443527444 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4365.292642693734 cutoff:4000 ]",
- "[ (45/8 → 71/12) ⇝ 6/1 | gain:0.0033534458443527444 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4365.292642693734 cutoff:4000 ]",
- "[ (45/8 → 6/1) ⇝ 49/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ (45/8 → 6/1) ⇝ 49/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ 43/8 ⇜ (17/3 → 23/4) | gain:0.004296220430900771 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4486.859640960669 cutoff:4000 ]",
- "[ 43/8 ⇜ (17/3 → 23/4) | gain:0.004296220430900771 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4486.859640960669 cutoff:4000 ]",
- "[ 23/4 → 47/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2877.376777172205 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 23/4 → 47/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2877.376777172205 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 23/4 → 6/1 | gain:0.0041636914909436865 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4334.517148084427 cutoff:4000 ]",
- "[ 23/4 → 6/1 | gain:0.0041636914909436865 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4334.517148084427 cutoff:4000 ]",
- "[ 23/4 → 6/1 | s:hh3 gain:0.7 ]",
- "[ (23/4 → 6/1) ⇝ 49/8 | gain:0.0021170195539929144 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ (23/4 → 6/1) ⇝ 49/8 | gain:0.0021170195539929144 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ (23/4 → 6/1) ⇝ 25/4 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ (23/4 → 6/1) ⇝ 25/4 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ 11/2 ⇜ (35/6 → 47/8) | gain:0.0027172198948820303 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4426.39359377459 cutoff:4000 ]",
- "[ 11/2 ⇜ (35/6 → 47/8) | gain:0.0027172198948820303 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4426.39359377459 cutoff:4000 ]",
- "[ 47/8 → 6/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2890.803699781578 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 47/8 → 6/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2890.803699781578 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (47/8 → 6/1) ⇝ 25/4 | gain:0.002607861084803616 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ (47/8 → 6/1) ⇝ 25/4 | gain:0.002607861084803616 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ (47/8 → 6/1) ⇝ 51/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ (47/8 → 6/1) ⇝ 51/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ 45/8 ⇜ (71/12 → 6/1) | gain:0.0033534458443527444 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4365.292642693734 cutoff:4000 ]",
- "[ 45/8 ⇜ (71/12 → 6/1) | gain:0.0033534458443527444 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4365.292642693734 cutoff:4000 ]",
- "[ 23/4 ⇜ (6/1 → 73/12) ⇝ 49/8 | gain:0.0021170195539929144 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ 23/4 ⇜ (6/1 → 73/12) ⇝ 49/8 | gain:0.0021170195539929144 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ 45/8 ⇜ (6/1 → 49/8) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ 45/8 ⇜ (6/1 → 49/8) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ 47/8 ⇜ (6/1 → 37/6) ⇝ 25/4 | gain:0.002607861084803616 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ 47/8 ⇜ (6/1 → 37/6) ⇝ 25/4 | gain:0.002607861084803616 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ 23/4 ⇜ (6/1 → 25/4) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ 23/4 ⇜ (6/1 → 25/4) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ 6/1 → 25/4 | gain:0.0032349487219990097 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4210.038361759807 cutoff:4000 ]",
- "[ 6/1 → 25/4 | gain:0.0032349487219990097 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4210.038361759807 cutoff:4000 ]",
- "[ 6/1 → 25/4 | s:bd gain:0.7 ]",
- "[ (6/1 → 19/3) ⇝ 51/8 | gain:0.0016432698518802527 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4178.601124662687 cutoff:4000 ]",
- "[ (6/1 → 19/3) ⇝ 51/8 | gain:0.0016432698518802527 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4178.601124662687 cutoff:4000 ]",
- "[ 47/8 ⇜ (6/1 → 51/8) | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ 47/8 ⇜ (6/1 → 51/8) | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ 23/4 ⇜ (73/12 → 49/8) | gain:0.0021170195539929144 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ 23/4 ⇜ (73/12 → 49/8) | gain:0.0021170195539929144 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4303.598663257904 cutoff:4000 ]",
- "[ 49/8 → 25/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2915.4076660819765 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 49/8 → 25/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2915.4076660819765 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (49/8 → 77/12) ⇝ 13/2 | gain:0.002020492471376867 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4115.383232572483 cutoff:4000 ]",
- "[ (49/8 → 77/12) ⇝ 13/2 | gain:0.002020492471376867 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4115.383232572483 cutoff:4000 ]",
- "[ 47/8 ⇜ (37/6 → 25/4) | gain:0.002607861084803616 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ 47/8 ⇜ (37/6 → 25/4) | gain:0.002607861084803616 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4241.3539374389275 cutoff:4000 ]",
- "[ 25/4 → 13/2 | gain:0.0025039971642624803 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4083.6134096397636 cutoff:4000 ]",
- "[ 25/4 → 13/2 | gain:0.0025039971642624803 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4083.6134096397636 cutoff:4000 ]",
- "[ 25/4 → 13/2 | s:hh3 gain:0.7 ]",
- "[ (25/4 → 79/12) ⇝ 53/8 | gain:0.0012707745730195417 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4051.743587553753 cutoff:4000 ]",
- "[ (25/4 → 79/12) ⇝ 53/8 | gain:0.0012707745730195417 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4051.743587553753 cutoff:4000 ]",
- "[ 6/1 ⇜ (19/3 → 51/8) | gain:0.0016432698518802527 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4178.601124662687 cutoff:4000 ]",
- "[ 6/1 ⇜ (19/3 → 51/8) | gain:0.0016432698518802527 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4178.601124662687 cutoff:4000 ]",
- "[ 51/8 → 13/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2936.9631544781614 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 51/8 → 13/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2936.9631544781614 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (51/8 → 20/3) ⇝ 27/4 | gain:0.0015595598450028928 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3987.7258050403216 cutoff:4000 ]",
- "[ (51/8 → 20/3) ⇝ 27/4 | gain:0.0015595598450028928 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3987.7258050403216 cutoff:4000 ]",
- "[ 49/8 ⇜ (77/12 → 13/2) | gain:0.002020492471376867 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4115.383232572483 cutoff:4000 ]",
- "[ 49/8 ⇜ (77/12 → 13/2) | gain:0.002020492471376867 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4115.383232572483 cutoff:4000 ]",
- "[ 13/2 → 53/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2946.5812012110136 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 13/2 → 53/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2946.5812012110136 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 13/2 → 27/4 | gain:0.001930948569883525 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3955.588813730369 cutoff:4000 ]",
- "[ 13/2 → 27/4 | gain:0.001930948569883525 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3955.588813730369 cutoff:4000 ]",
- "[ 13/2 → 27/4 | s:bd gain:0.7 ]",
- "[ (13/2 → 41/6) ⇝ 55/8 | gain:0.0009790326438946302 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3923.373759622562 cutoff:4000 ]",
- "[ (13/2 → 41/6) ⇝ 55/8 | gain:0.0009790326438946302 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3923.373759622562 cutoff:4000 ]",
- "[ 13/2 → 7/1 | s:sn gain:0.7 ]",
- "[ 25/4 ⇜ (79/12 → 53/8) | gain:0.0012707745730195417 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4051.743587553753 cutoff:4000 ]",
- "[ 25/4 ⇜ (79/12 → 53/8) | gain:0.0012707745730195417 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:4051.743587553753 cutoff:4000 ]",
- "[ (53/8 → 83/12) ⇝ 7/1 | gain:0.0011992608333914556 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3858.7315549779487 cutoff:4000 ]",
- "[ (53/8 → 83/12) ⇝ 7/1 | gain:0.0011992608333914556 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3858.7315549779487 cutoff:4000 ]",
- "[ 51/8 ⇜ (20/3 → 27/4) | gain:0.0015595598450028928 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3987.7258050403216 cutoff:4000 ]",
- "[ 51/8 ⇜ (20/3 → 27/4) | gain:0.0015595598450028928 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3987.7258050403216 cutoff:4000 ]",
- "[ 27/4 → 55/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2963.468935477506 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 27/4 → 55/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2963.468935477506 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 27/4 → 7/1 | gain:0.001483452397136718 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3826.315480550129 cutoff:4000 ]",
- "[ 27/4 → 7/1 | gain:0.001483452397136718 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3826.315480550129 cutoff:4000 ]",
- "[ 27/4 → 7/1 | s:hh3 gain:0.7 ]",
- "[ (27/4 → 85/12) ⇝ 57/8 | gain:0.0007514349161098732 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3793.8434936445938 cutoff:4000 ]",
- "[ (27/4 → 85/12) ⇝ 57/8 | gain:0.0007514349161098732 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3793.8434936445938 cutoff:4000 ]",
- "[ 13/2 ⇜ (41/6 → 55/8) | gain:0.0009790326438946302 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3923.373759622562 cutoff:4000 ]",
- "[ 13/2 ⇜ (41/6 → 55/8) | gain:0.0009790326438946302 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3923.373759622562 cutoff:4000 ]",
- "[ 55/8 → 7/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2970.728450471497 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 55/8 → 7/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2970.728450471497 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (55/8 → 43/6) ⇝ 29/4 | gain:0.0009187360380160062 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3728.7540466585065 cutoff:4000 ]",
- "[ (55/8 → 43/6) ⇝ 29/4 | gain:0.0009187360380160062 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3728.7540466585065 cutoff:4000 ]",
- "[ 53/8 ⇜ (83/12 → 7/1) | gain:0.0011992608333914556 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3858.7315549779487 cutoff:4000 ]",
- "[ 53/8 ⇜ (83/12 → 7/1) | gain:0.0011992608333914556 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3858.7315549779487 cutoff:4000 ]",
- "[ 7/1 → 29/4 | gain:0.0011353833788233256 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3696.147739319613 cutoff:4000 ]",
- "[ 7/1 → 29/4 | gain:0.0011353833788233256 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3696.147739319613 cutoff:4000 ]",
- "[ 7/1 → 29/4 | s:bd gain:0.7 ]",
- "[ (7/1 → 22/3) ⇝ 59/8 | gain:0.0005745826370722221 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3663.507823075358 cutoff:4000 ]",
- "[ (7/1 → 22/3) ⇝ 59/8 | gain:0.0005745826370722221 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3663.507823075358 cutoff:4000 ]",
- "[ 27/4 ⇜ (85/12 → 57/8) | gain:0.0007514349161098732 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3793.8434936445938 cutoff:4000 ]",
- "[ 27/4 ⇜ (85/12 → 57/8) | gain:0.0007514349161098732 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3793.8434936445938 cutoff:4000 ]",
- "[ 57/8 → 29/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2982.856914513109 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 57/8 → 29/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2982.856914513109 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (57/8 → 89/12) ⇝ 15/2 | gain:0.0007011936914869215 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3598.149539397671 cutoff:4000 ]",
- "[ (57/8 → 89/12) ⇝ 15/2 | gain:0.0007011936914869215 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3598.149539397671 cutoff:4000 ]",
- "[ 55/8 ⇜ (43/6 → 29/4) | gain:0.0009187360380160062 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3728.7540466585065 cutoff:4000 ]",
- "[ 55/8 ⇜ (43/6 → 29/4) | gain:0.0009187360380160062 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3728.7540466585065 cutoff:4000 ]",
- "[ 29/4 → 15/2 | gain:0.0008657330171865184 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3565.4423707696824 cutoff:4000 ]",
- "[ 29/4 → 15/2 | gain:0.0008657330171865184 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3565.4423707696824 cutoff:4000 ]",
- "[ 29/4 → 15/2 | s:hh3 gain:0.7 ]",
- "[ (29/4 → 91/12) ⇝ 61/8 | gain:0.00043771267437304546 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3532.7239889283615 cutoff:4000 ]",
- "[ (29/4 → 91/12) ⇝ 61/8 | gain:0.00043771267437304546 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3532.7239889283615 cutoff:4000 ]",
- "[ 7/1 ⇜ (22/3 → 59/8) | gain:0.0005745826370722221 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3663.507823075358 cutoff:4000 ]",
- "[ 7/1 ⇜ (22/3 → 59/8) | gain:0.0005745826370722221 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3663.507823075358 cutoff:4000 ]",
- "[ 59/8 → 15/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2991.774409503181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 59/8 → 15/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2991.774409503181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (59/8 → 23/3) ⇝ 31/4 | gain:0.0005331735858040315 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3467.276011071639 cutoff:4000 ]",
- "[ (59/8 → 23/3) ⇝ 31/4 | gain:0.0005331735858040315 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3467.276011071639 cutoff:4000 ]",
- "[ 57/8 ⇜ (89/12 → 15/2) | gain:0.0007011936914869215 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3598.149539397671 cutoff:4000 ]",
- "[ 57/8 ⇜ (89/12 → 15/2) | gain:0.0007011936914869215 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3598.149539397671 cutoff:4000 ]",
- "[ 15/2 → 61/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2995.0220264467503 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 15/2 → 61/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2995.0220264467503 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 15/2 → 31/4 | gain:0.0006576787875353331 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3434.557629230318 cutoff:4000 ]",
- "[ 15/2 → 31/4 | gain:0.0006576787875353331 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3434.557629230318 cutoff:4000 ]",
- "[ 15/2 → 31/4 | s:bd gain:0.7 ]",
- "[ (15/2 → 47/6) ⇝ 63/8 | gain:0.0003322155712311059 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3401.8504606023293 cutoff:4000 ]",
- "[ (15/2 → 47/6) ⇝ 63/8 | gain:0.0003322155712311059 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3401.8504606023293 cutoff:4000 ]",
- "[ 15/2 → 8/1 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2998.3738658769826 ]",
- "[ 15/2 → 8/1 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2998.3738658769826 ]",
- "[ 15/2 → 8/1 | s:sn gain:0.7 ]",
- "[ 29/4 ⇜ (91/12 → 61/8) | gain:0.00043771267437304546 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3532.7239889283615 cutoff:4000 ]",
- "[ 29/4 ⇜ (91/12 → 61/8) | gain:0.00043771267437304546 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3532.7239889283615 cutoff:4000 ]",
- "[ (61/8 → 95/12) ⇝ 8/1 | gain:0.00040393160954279157 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3336.4921769246425 cutoff:4000 ]",
- "[ (61/8 → 95/12) ⇝ 8/1 | gain:0.00040393160954279157 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3336.4921769246425 cutoff:4000 ]",
- "[ (61/8 → 8/1) ⇝ 65/8 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ (61/8 → 8/1) ⇝ 65/8 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 59/8 ⇜ (23/3 → 31/4) | gain:0.0005331735858040315 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3467.276011071639 cutoff:4000 ]",
- "[ 59/8 ⇜ (23/3 → 31/4) | gain:0.0005331735858040315 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3467.276011071639 cutoff:4000 ]",
- "[ 31/4 → 63/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.0852191942718 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 31/4 → 63/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.0852191942718 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 31/4 → 8/1 | gain:0.0004978069306625383 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3303.852260680389 cutoff:4000 ]",
- "[ 31/4 → 8/1 | gain:0.0004978069306625383 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3303.852260680389 cutoff:4000 ]",
- "[ 31/4 → 8/1 | s:hh3 gain:0.7 ]",
- "[ (31/4 → 8/1) ⇝ 65/8 | gain:0.0002512336761852884 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ (31/4 → 8/1) ⇝ 65/8 | gain:0.0002512336761852884 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ (31/4 → 8/1) ⇝ 33/4 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:3000 ]",
- "[ (31/4 → 8/1) ⇝ 33/4 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:3000 ]",
- "[ 15/2 ⇜ (47/6 → 63/8) | gain:0.0003322155712311059 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3401.8504606023293 cutoff:4000 ]",
- "[ 15/2 ⇜ (47/6 → 63/8) | gain:0.0003322155712311059 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3401.8504606023293 cutoff:4000 ]",
- "[ 63/8 → 8/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.898347482845 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 63/8 → 8/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.898347482845 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 63/8 → 8/1 | s:bd gain:0.7 ]",
- "[ (63/8 → 8/1) ⇝ 33/4 | gain:0.0003049279244110808 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ (63/8 → 8/1) ⇝ 33/4 | gain:0.0003049279244110808 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ (63/8 → 8/1) ⇝ 67/8 | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ (63/8 → 8/1) ⇝ 67/8 | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 61/8 ⇜ (95/12 → 8/1) | gain:0.00040393160954279157 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3336.4921769246425 cutoff:4000 ]",
- "[ 61/8 ⇜ (95/12 → 8/1) | gain:0.00040393160954279157 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3336.4921769246425 cutoff:4000 ]",
- "[ 31/4 ⇜ (8/1 → 97/12) ⇝ 65/8 | gain:0.0002512336761852884 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ 31/4 ⇜ (8/1 → 97/12) ⇝ 65/8 | gain:0.0002512336761852884 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ 61/8 ⇜ (8/1 → 65/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 61/8 ⇜ (8/1 → 65/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 63/8 ⇜ (8/1 → 49/6) ⇝ 33/4 | gain:0.0003049279244110808 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ 63/8 ⇜ (8/1 → 49/6) ⇝ 33/4 | gain:0.0003049279244110808 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ 31/4 ⇜ (8/1 → 33/4) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:3000 ]",
- "[ 31/4 ⇜ (8/1 → 33/4) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:3000 ]",
- "[ 8/1 → 33/4 | gain:0.0003754669800233334 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3173.6845194498705 cutoff:4000 ]",
- "[ 8/1 → 33/4 | gain:0.0003754669800233334 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3173.6845194498705 cutoff:4000 ]",
- "[ 8/1 → 33/4 | s:bd gain:0.7 ]",
- "[ (8/1 → 25/3) ⇝ 67/8 | gain:0.2389653154600499 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3141.2684450220513 cutoff:4000 ]",
- "[ (8/1 → 25/3) ⇝ 67/8 | gain:0.2389653154600499 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3141.2684450220513 cutoff:4000 ]",
- "[ 63/8 ⇜ (8/1 → 67/8) | gain:0.7 note:G3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 63/8 ⇜ (8/1 → 67/8) | gain:0.7 note:B3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2999.5934052398757 ]",
- "[ 31/4 ⇜ (97/12 → 65/8) | gain:0.0002512336761852884 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ 31/4 ⇜ (97/12 → 65/8) | gain:0.0002512336761852884 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3271.2459533414954 cutoff:4000 ]",
- "[ 65/8 → 33/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.0852191942718 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 65/8 → 33/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2999.0852191942718 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (65/8 → 101/12) ⇝ 17/2 | gain:0.00022940355872926835 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3076.6262403774385 cutoff:4000 ]",
- "[ (65/8 → 101/12) ⇝ 17/2 | gain:0.00022940355872926835 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3076.6262403774385 cutoff:4000 ]",
- "[ 63/8 ⇜ (49/6 → 33/4) | gain:0.0003049279244110808 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ 63/8 ⇜ (49/6 → 33/4) | gain:0.0003049279244110808 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3206.156506355406 cutoff:4000 ]",
- "[ 33/4 → 17/2 | gain:0.00028223848042460063 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3044.4111862696313 cutoff:4000 ]",
- "[ 33/4 → 17/2 | gain:0.00028223848042460063 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3044.4111862696313 cutoff:4000 ]",
- "[ 33/4 → 17/2 | s:hh3 gain:0.7 ]",
- "[ (33/4 → 103/12) ⇝ 69/8 | gain:0.17948457334876392 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3012.274194959679 cutoff:4000 ]",
- "[ (33/4 → 103/12) ⇝ 69/8 | gain:0.17948457334876392 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3012.274194959679 cutoff:4000 ]",
- "[ 8/1 ⇜ (25/3 → 67/8) | gain:0.2389653154600499 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3141.2684450220513 cutoff:4000 ]",
- "[ 8/1 ⇜ (25/3 → 67/8) | gain:0.2389653154600499 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3141.2684450220513 cutoff:4000 ]",
- "[ 67/8 → 17/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2995.0220264467503 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 67/8 → 17/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2995.0220264467503 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (67/8 → 26/3) ⇝ 35/4 | gain:0.21713481397646955 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2948.256412446248 cutoff:4000 ]",
- "[ (67/8 → 26/3) ⇝ 35/4 | gain:0.21713481397646955 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2948.256412446248 cutoff:4000 ]",
- "[ 65/8 ⇜ (101/12 → 17/2) | gain:0.00022940355872926835 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3076.6262403774385 cutoff:4000 ]",
- "[ 65/8 ⇜ (101/12 → 17/2) | gain:0.00022940355872926835 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3076.6262403774385 cutoff:4000 ]",
- "[ 17/2 → 69/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2991.774409503181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 17/2 → 69/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2991.774409503181 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 17/2 → 35/4 | gain:0.00021149262064247462 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2916.386590360237 cutoff:4000 ]",
- "[ 17/2 → 35/4 | gain:0.00021149262064247462 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2916.386590360237 cutoff:4000 ]",
- "[ 17/2 → 35/4 | s:bd gain:0.7 ]",
- "[ (17/2 → 53/6) ⇝ 71/8 | gain:0.1343955752824098 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2884.6167674275184 cutoff:4000 ]",
- "[ (17/2 → 53/6) ⇝ 71/8 | gain:0.1343955752824098 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2884.6167674275184 cutoff:4000 ]",
- "[ 17/2 → 9/1 | s:sn gain:0.7 ]",
- "[ 33/4 ⇜ (103/12 → 69/8) | gain:0.17948457334876392 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3012.274194959679 cutoff:4000 ]",
- "[ 33/4 ⇜ (103/12 → 69/8) | gain:0.17948457334876392 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:3012.274194959679 cutoff:4000 ]",
- "[ (69/8 → 107/12) ⇝ 9/1 | gain:0.16235819115213307 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2821.398875337315 cutoff:4000 ]",
- "[ (69/8 → 107/12) ⇝ 9/1 | gain:0.16235819115213307 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2821.398875337315 cutoff:4000 ]",
- "[ 67/8 ⇜ (26/3 → 35/4) | gain:0.21713481397646955 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2948.256412446248 cutoff:4000 ]",
- "[ 67/8 ⇜ (26/3 → 35/4) | gain:0.21713481397646955 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2948.256412446248 cutoff:4000 ]",
- "[ 35/4 → 71/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2982.856914513109 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 35/4 → 71/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2982.856914513109 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 35/4 → 9/1 | gain:0.19946652199116702 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2789.9616382401937 cutoff:4000 ]",
- "[ 35/4 → 9/1 | gain:0.19946652199116702 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2789.9616382401937 cutoff:4000 ]",
- "[ 35/4 → 9/1 | s:hh3 gain:0.7 ]",
- "[ (35/4 → 109/12) ⇝ 73/8 | gain:0.10036006119411293 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2758.6460625610725 cutoff:4000 ]",
- "[ (35/4 → 109/12) ⇝ 73/8 | gain:0.10036006119411293 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2758.6460625610725 cutoff:4000 ]",
- "[ 17/2 ⇜ (53/6 → 71/8) | gain:0.1343955752824098 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2884.6167674275184 cutoff:4000 ]",
- "[ 17/2 ⇜ (53/6 → 71/8) | gain:0.1343955752824098 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2884.6167674275184 cutoff:4000 ]",
- "[ 71/8 → 9/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2977.1924080321423 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 71/8 → 9/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2977.1924080321423 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (71/8 → 55/6) ⇝ 37/4 | gain:0.12109683385552102 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2696.4013367420957 cutoff:4000 ]",
- "[ (71/8 → 55/6) ⇝ 37/4 | gain:0.12109683385552102 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2696.4013367420957 cutoff:4000 ]",
- "[ 69/8 ⇜ (107/12 → 9/1) | gain:0.16235819115213307 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2821.398875337315 cutoff:4000 ]",
- "[ 69/8 ⇜ (107/12 → 9/1) | gain:0.16235819115213307 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2821.398875337315 cutoff:4000 ]",
- "[ 9/1 → 37/4 | gain:0.1486933887883662 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2665.4828519155726 cutoff:4000 ]",
- "[ 9/1 → 37/4 | gain:0.1486933887883662 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2665.4828519155726 cutoff:4000 ]",
- "[ 9/1 → 37/4 | s:bd gain:0.7 ]",
- "[ (9/1 → 28/3) ⇝ 75/8 | gain:0.07477587990602098 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2634.707357306267 cutoff:4000 ]",
- "[ (9/1 → 28/3) ⇝ 75/8 | gain:0.07477587990602098 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2634.707357306267 cutoff:4000 ]",
- "[ 35/4 ⇜ (109/12 → 73/8) | gain:0.10036006119411293 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2758.6460625610725 cutoff:4000 ]",
- "[ 35/4 ⇜ (109/12 → 73/8) | gain:0.10036006119411293 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2758.6460625610725 cutoff:4000 ]",
- "[ 73/8 → 37/4 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2963.4689354775064 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 73/8 → 37/4 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2963.4689354775064 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (73/8 → 113/12) ⇝ 19/2 | gain:0.09014541883675263 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2573.60640622541 cutoff:4000 ]",
- "[ (73/8 → 113/12) ⇝ 19/2 | gain:0.09014541883675263 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2573.60640622541 cutoff:4000 ]",
- "[ 71/8 ⇜ (55/6 → 37/4) | gain:0.12109683385552102 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2696.4013367420957 cutoff:4000 ]",
- "[ 71/8 ⇜ (55/6 → 37/4) | gain:0.12109683385552102 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2696.4013367420957 cutoff:4000 ]",
- "[ 37/4 → 19/2 | gain:0.11064613655745076 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2543.291419087276 cutoff:4000 ]",
- "[ 37/4 → 19/2 | gain:0.11064613655745076 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2543.291419087276 cutoff:4000 ]",
- "[ 37/4 → 19/2 | s:hh3 gain:0.7 ]",
- "[ (37/4 → 115/12) ⇝ 77/8 | gain:0.05562379698730943 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2513.140359039332 cutoff:4000 ]",
- "[ (37/4 → 115/12) ⇝ 77/8 | gain:0.05562379698730943 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2513.140359039332 cutoff:4000 ]",
- "[ 9/1 ⇜ (28/3 → 75/8) | gain:0.07477587990602098 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2634.707357306267 cutoff:4000 ]",
- "[ 9/1 ⇜ (28/3 → 75/8) | gain:0.07477587990602098 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2634.707357306267 cutoff:4000 ]",
- "[ 75/8 → 19/2 | note:D2 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2946.5812012110136 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 75/8 → 19/2 | note:D2 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2946.5812012110136 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (75/8 → 29/3) ⇝ 39/4 | gain:0.0670223447192876 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2453.350656156431 cutoff:4000 ]",
- "[ (75/8 → 29/3) ⇝ 39/4 | gain:0.0670223447192876 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2453.350656156431 cutoff:4000 ]",
- "[ 73/8 ⇜ (113/12 → 19/2) | gain:0.09014541883675263 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2573.60640622541 cutoff:4000 ]",
- "[ 73/8 ⇜ (113/12 → 19/2) | gain:0.09014541883675263 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2573.60640622541 cutoff:4000 ]",
- "[ 19/2 → 77/8 | note:D1 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2936.9631544781614 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 19/2 → 77/8 | note:D1 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2936.9631544781614 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 19/2 → 39/4 | gain:0.08225029341498115 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2423.7222579792624 cutoff:4000 ]",
- "[ 19/2 → 39/4 | gain:0.08225029341498115 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2423.7222579792624 cutoff:4000 ]",
- "[ 19/2 → 39/4 | s:bd gain:0.7 ]",
- "[ (19/2 → 59/6) ⇝ 79/8 | gain:0.04134410948782485 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2394.2782744524975 cutoff:4000 ]",
- "[ (19/2 → 59/6) ⇝ 79/8 | gain:0.04134410948782485 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2394.2782744524975 cutoff:4000 ]",
- "[ 19/2 → 10/1 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2921.0844879970778 ]",
- "[ 19/2 → 10/1 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2921.0844879970778 ]",
- "[ 19/2 → 10/1 | s:sn gain:0.7 ]",
- "[ 37/4 ⇜ (115/12 → 77/8) | gain:0.05562379698730943 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2513.140359039332 cutoff:4000 ]",
- "[ 37/4 ⇜ (115/12 → 77/8) | gain:0.05562379698730943 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2513.140359039332 cutoff:4000 ]",
- "[ (77/8 → 119/12) ⇝ 10/1 | gain:0.04981524842313599 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2335.9636991872226 cutoff:4000 ]",
- "[ (77/8 → 119/12) ⇝ 10/1 | gain:0.04981524842313599 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2335.9636991872226 cutoff:4000 ]",
- "[ (77/8 → 10/1) ⇝ 81/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ (77/8 → 10/1) ⇝ 81/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2909.5402784268977 ]",
- "[ 75/8 ⇜ (29/3 → 39/4) | gain:0.0670223447192876 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2453.350656156431 cutoff:4000 ]",
- "[ 75/8 ⇜ (29/3 → 39/4) | gain:0.0670223447192876 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2453.350656156431 cutoff:4000 ]",
- "[ 39/4 → 79/8 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2915.4076660819765 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 39/4 → 79/8 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2915.4076660819765 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 39/4 → 10/1 | gain:0.0611394178141992 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2307.1030993509794 cutoff:4000 ]",
- "[ 39/4 → 10/1 | gain:0.0611394178141992 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2307.1030993509794 cutoff:4000 ]",
- "[ 39/4 → 10/1 | s:hh3 gain:0.7 ]",
- "[ (39/4 → 10/1) ⇝ 81/8 | gain:0.030737730012853577 note:C#6 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2278.446896257612 cutoff:4000 ]",
- "[ (39/4 → 10/1) ⇝ 81/8 | gain:0.030737730012853577 note:E5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2278.446896257612 cutoff:4000 ]",
- "[ (39/4 → 10/1) ⇝ 41/4 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ (39/4 → 10/1) ⇝ 41/4 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2897.237368890237 ]",
- "[ 19/2 ⇜ (59/6 → 79/8) | gain:0.04134410948782485 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2394.2782744524975 cutoff:4000 ]",
- "[ 19/2 ⇜ (59/6 → 79/8) | gain:0.04134410948782485 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2394.2782744524975 cutoff:4000 ]",
- "[ 79/8 → 10/1 | note:D3 s:sawtooth gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2903.483208638841 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ 79/8 → 10/1 | note:D3 s:square gain:0.3 attack:0.01 decay:0.1 sustain:0.5 cutoff:2903.483208638841 lpattack:0.1 lpenv:2 ftype:24db ]",
- "[ (79/8 → 10/1) ⇝ 41/4 | gain:0.03705744590301562 note:A5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2221.7672848073694 cutoff:4000 ]",
- "[ (79/8 → 10/1) ⇝ 41/4 | gain:0.03705744590301562 note:C#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2221.7672848073694 cutoff:4000 ]",
- "[ (79/8 → 10/1) ⇝ 83/8 | gain:0.7 note:F#3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ (79/8 → 10/1) ⇝ 83/8 | gain:0.7 note:A3 s:square attack:0.01 decay:0.1 sustain:0 cutoff:2884.183170199766 ]",
- "[ 77/8 ⇜ (119/12 → 10/1) | gain:0.04981524842313599 note:F#5 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2335.9636991872226 cutoff:4000 ]",
- "[ 77/8 ⇜ (119/12 → 10/1) | gain:0.04981524842313599 note:A4 s:sawtooth attack:0.001 decay:0.2 sustain:0 hcutoff:2335.9636991872226 cutoff:4000 ]",
-]
-`;
-
exports[`renders tunes > tune: juxUndTollerei 1`] = `
[
"[ 0/1 → 1/4 | note:c3 s:sawtooth pan:0 cutoff:1188.2154262966046 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]",
diff --git a/test/runtime.mjs b/test/runtime.mjs
index 946c2759..f14e18e2 100644
--- a/test/runtime.mjs
+++ b/test/runtime.mjs
@@ -222,7 +222,6 @@ export const testCycles = {
randomBells: 24,
waa: 16,
waar: 16,
- hyperpop: 10,
festivalOfFingers3: 16,
};
diff --git a/website/astro.config.mjs b/website/astro.config.mjs
index 591f9a5e..6389debb 100644
--- a/website/astro.config.mjs
+++ b/website/astro.config.mjs
@@ -97,7 +97,7 @@ export default defineConfig({
enabled: false,
},
manifest: {
- includeAssets: ['favicon.ico', 'icons/apple-icon-180.png', 'favicon.svg'],
+ includeAssets: ['favicon.ico', 'icons/apple-icon-180.png'],
name: 'Strudel REPL',
short_name: 'Strudel',
description:
diff --git a/website/package.json b/website/package.json
index 7af9e61e..b7abacf0 100644
--- a/website/package.json
+++ b/website/package.json
@@ -33,7 +33,6 @@
"@strudel/midi": "workspace:*",
"@strudel/mini": "workspace:*",
"@strudel/osc": "workspace:*",
- "@strudel/repl": "workspace:*",
"@strudel/serial": "workspace:*",
"@strudel/soundfonts": "workspace:*",
"@strudel/tonal": "workspace:*",
@@ -48,7 +47,6 @@
"@types/react": "^18.2.46",
"@types/react-dom": "^18.2.18",
"astro": "^4.0.8",
- "canvas": "^2.11.2",
"claviature": "^0.1.0",
"date-fns": "^3.2.0",
"nanoid": "^5.0.4",
diff --git a/website/public/EmuSP12.json b/website/public/EmuSP12.json
index 69746bed..b129ee57 100644
--- a/website/public/EmuSP12.json
+++ b/website/public/EmuSP12.json
@@ -1,16 +1,17 @@
{
-"bd": ["bd/Bassdrum-01.wav","bd/Bassdrum-02.wav","bd/Bassdrum-03.wav","bd/Bassdrum-04.wav","bd/Bassdrum-05.wav","bd/Bassdrum-06.wav","bd/Bassdrum-07.wav","bd/Bassdrum-08.wav","bd/Bassdrum-09.wav","bd/Bassdrum-10.wav","bd/Bassdrum-11.wav","bd/Bassdrum-12.wav","bd/Bassdrum-13.wav","bd/Bassdrum-14.wav"],
-"cb": ["cb/Cowbell.wav"],
-"cp": ["cp/Clap.wav"],
-"cr": ["cr/Crash.wav"],
-"hh": ["hh/Hat Closed-01.wav","hh/Hat Closed-02.wav"],
-"ht": ["ht/Tom H-01.wav","ht/Tom H-02.wav","ht/Tom H-03.wav","ht/Tom H-04.wav","ht/Tom H-05.wav","ht/Tom H-06.wav"],
-"lt": ["lt/Tom L-01.wav","lt/Tom L-02.wav","lt/Tom L-03.wav","lt/Tom L-04.wav","lt/Tom L-05.wav","lt/Tom L-06.wav"],
-"misc": ["misc/Metal-01.wav","misc/Metal-02.wav","misc/Metal-03.wav","misc/Scratch.wav","misc/Shot-01.wav","misc/Shot-02.wav","misc/Shot-03.wav"],
-"mt": ["mt/Tom M-01.wav","mt/Tom M-02.wav","mt/Tom M-03.wav","mt/Tom M-05.wav"],
-"oh": ["oh/Hhopen1.wav"],
-"perc": ["perc/Blow1.wav"],
-"rd": ["rd/Ride.wav"],
-"rim": ["rim/zRim Shot-01.wav","rim/zRim Shot-02.wav"],
-"sd": ["sd/Snaredrum-01.wav","sd/Snaredrum-02.wav","sd/Snaredrum-03.wav","sd/Snaredrum-04.wav","sd/Snaredrum-05.wav","sd/Snaredrum-06.wav","sd/Snaredrum-07.wav","sd/Snaredrum-08.wav","sd/Snaredrum-09.wav","sd/Snaredrum-10.wav","sd/Snaredrum-11.wav","sd/Snaredrum-12.wav","sd/Snaredrum-13.wav","sd/Snaredrum-14.wav","sd/Snaredrum-15.wav","sd/Snaredrum-16.wav","sd/Snaredrum-17.wav","sd/Snaredrum-18.wav","sd/Snaredrum-19.wav","sd/Snaredrum-20.wav","sd/Snaredrum-21.wav"]
+"_base": "https://raw.githubusercontent.com/ritchse/tidal-drum-machines/main/machines/EmuSP12/",
+"bd": ["emusp12-bd/Bassdrum-01.wav","emusp12-bd/Bassdrum-02.wav","emusp12-bd/Bassdrum-03.wav","emusp12-bd/Bassdrum-04.wav","emusp12-bd/Bassdrum-05.wav","emusp12-bd/Bassdrum-06.wav","emusp12-bd/Bassdrum-07.wav","emusp12-bd/Bassdrum-08.wav","emusp12-bd/Bassdrum-09.wav","emusp12-bd/Bassdrum-10.wav","emusp12-bd/Bassdrum-11.wav","emusp12-bd/Bassdrum-12.wav","emusp12-bd/Bassdrum-13.wav","emusp12-bd/Bassdrum-14.wav"],
+"cb": ["emusp12-cb/Cowbell.wav"],
+"cp": ["emusp12-cp/Clap.wav"],
+"cr": ["emusp12-cr/Crash.wav"],
+"hh": ["emusp12-hh/Hat Closed-01.wav","emusp12-hh/Hat Closed-02.wav"],
+"ht": ["emusp12-ht/Tom H-01.wav","emusp12-ht/Tom H-02.wav","emusp12-ht/Tom H-03.wav","emusp12-ht/Tom H-04.wav","emusp12-ht/Tom H-05.wav","emusp12-ht/Tom H-06.wav"],
+"lt": ["emusp12-lt/Tom L-01.wav","emusp12-lt/Tom L-02.wav","emusp12-lt/Tom L-03.wav","emusp12-lt/Tom L-04.wav","emusp12-lt/Tom L-05.wav","emusp12-lt/Tom L-06.wav"],
+"misc": ["emusp12-misc/Metal-01.wav","emusp12-misc/Metal-02.wav","emusp12-misc/Metal-03.wav","emusp12-misc/Scratch.wav","emusp12-misc/Shot-01.wav","emusp12-misc/Shot-02.wav","emusp12-misc/Shot-03.wav"],
+"mt": ["emusp12-mt/Tom M-01.wav","emusp12-mt/Tom M-02.wav","emusp12-mt/Tom M-03.wav","emusp12-mt/Tom M-05.wav"],
+"oh": ["emusp12-oh/Hhopen1.wav"],
+"perc": ["emusp12-perc/Blow1.wav"],
+"rd": ["emusp12-rd/Ride.wav"],
+"rim": ["emusp12-rim/zRim Shot-01.wav","emusp12-rim/zRim Shot-02.wav"],
+"sd": ["emusp12-sd/Snaredrum-01.wav","emusp12-sd/Snaredrum-02.wav","emusp12-sd/Snaredrum-03.wav","emusp12-sd/Snaredrum-04.wav","emusp12-sd/Snaredrum-05.wav","emusp12-sd/Snaredrum-06.wav","emusp12-sd/Snaredrum-07.wav","emusp12-sd/Snaredrum-08.wav","emusp12-sd/Snaredrum-09.wav","emusp12-sd/Snaredrum-10.wav","emusp12-sd/Snaredrum-11.wav","emusp12-sd/Snaredrum-12.wav","emusp12-sd/Snaredrum-13.wav","emusp12-sd/Snaredrum-14.wav","emusp12-sd/Snaredrum-15.wav","emusp12-sd/Snaredrum-16.wav","emusp12-sd/Snaredrum-17.wav","emusp12-sd/Snaredrum-18.wav","emusp12-sd/Snaredrum-19.wav","emusp12-sd/Snaredrum-20.wav","emusp12-sd/Snaredrum-21.wav"]
}
diff --git a/website/public/EmuSP12/bd/Bassdrum-01.wav b/website/public/EmuSP12/bd/Bassdrum-01.wav
deleted file mode 100644
index 48e93676..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-02.wav b/website/public/EmuSP12/bd/Bassdrum-02.wav
deleted file mode 100644
index 52cd0afc..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-03.wav b/website/public/EmuSP12/bd/Bassdrum-03.wav
deleted file mode 100644
index 5c524ad7..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-04.wav b/website/public/EmuSP12/bd/Bassdrum-04.wav
deleted file mode 100644
index 9f9365d4..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-04.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-05.wav b/website/public/EmuSP12/bd/Bassdrum-05.wav
deleted file mode 100644
index a4c80945..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-05.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-06.wav b/website/public/EmuSP12/bd/Bassdrum-06.wav
deleted file mode 100644
index 283d2f76..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-06.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-07.wav b/website/public/EmuSP12/bd/Bassdrum-07.wav
deleted file mode 100644
index 24f26186..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-07.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-08.wav b/website/public/EmuSP12/bd/Bassdrum-08.wav
deleted file mode 100644
index 51661252..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-08.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-09.wav b/website/public/EmuSP12/bd/Bassdrum-09.wav
deleted file mode 100644
index 3c6487c3..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-09.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-10.wav b/website/public/EmuSP12/bd/Bassdrum-10.wav
deleted file mode 100644
index 34a9b924..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-10.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-11.wav b/website/public/EmuSP12/bd/Bassdrum-11.wav
deleted file mode 100644
index 256555c2..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-11.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-12.wav b/website/public/EmuSP12/bd/Bassdrum-12.wav
deleted file mode 100644
index 8c29f046..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-12.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-13.wav b/website/public/EmuSP12/bd/Bassdrum-13.wav
deleted file mode 100644
index a0291102..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-13.wav and /dev/null differ
diff --git a/website/public/EmuSP12/bd/Bassdrum-14.wav b/website/public/EmuSP12/bd/Bassdrum-14.wav
deleted file mode 100644
index eecea2f1..00000000
Binary files a/website/public/EmuSP12/bd/Bassdrum-14.wav and /dev/null differ
diff --git a/website/public/EmuSP12/cb/Cowbell.wav b/website/public/EmuSP12/cb/Cowbell.wav
deleted file mode 100644
index 470763c6..00000000
Binary files a/website/public/EmuSP12/cb/Cowbell.wav and /dev/null differ
diff --git a/website/public/EmuSP12/cp/Clap.wav b/website/public/EmuSP12/cp/Clap.wav
deleted file mode 100644
index 27517d79..00000000
Binary files a/website/public/EmuSP12/cp/Clap.wav and /dev/null differ
diff --git a/website/public/EmuSP12/cr/Crash.wav b/website/public/EmuSP12/cr/Crash.wav
deleted file mode 100644
index 6d1e2939..00000000
Binary files a/website/public/EmuSP12/cr/Crash.wav and /dev/null differ
diff --git a/website/public/EmuSP12/hh/Hat Closed-01.wav b/website/public/EmuSP12/hh/Hat Closed-01.wav
deleted file mode 100644
index 1f18ccac..00000000
Binary files a/website/public/EmuSP12/hh/Hat Closed-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/hh/Hat Closed-02.wav b/website/public/EmuSP12/hh/Hat Closed-02.wav
deleted file mode 100644
index cc40c03f..00000000
Binary files a/website/public/EmuSP12/hh/Hat Closed-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-01.wav b/website/public/EmuSP12/ht/Tom H-01.wav
deleted file mode 100644
index 82706785..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-02.wav b/website/public/EmuSP12/ht/Tom H-02.wav
deleted file mode 100644
index 9cfe221c..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-03.wav b/website/public/EmuSP12/ht/Tom H-03.wav
deleted file mode 100644
index a6eef5cd..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-04.wav b/website/public/EmuSP12/ht/Tom H-04.wav
deleted file mode 100644
index 8c38b3b1..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-04.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-05.wav b/website/public/EmuSP12/ht/Tom H-05.wav
deleted file mode 100644
index 2e0899d2..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-05.wav and /dev/null differ
diff --git a/website/public/EmuSP12/ht/Tom H-06.wav b/website/public/EmuSP12/ht/Tom H-06.wav
deleted file mode 100644
index 9dccec23..00000000
Binary files a/website/public/EmuSP12/ht/Tom H-06.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-01.wav b/website/public/EmuSP12/lt/Tom L-01.wav
deleted file mode 100644
index cfa4067f..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-02.wav b/website/public/EmuSP12/lt/Tom L-02.wav
deleted file mode 100644
index 68624f5f..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-03.wav b/website/public/EmuSP12/lt/Tom L-03.wav
deleted file mode 100644
index f1439d8c..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-04.wav b/website/public/EmuSP12/lt/Tom L-04.wav
deleted file mode 100644
index 46d614a0..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-04.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-05.wav b/website/public/EmuSP12/lt/Tom L-05.wav
deleted file mode 100644
index c9566585..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-05.wav and /dev/null differ
diff --git a/website/public/EmuSP12/lt/Tom L-06.wav b/website/public/EmuSP12/lt/Tom L-06.wav
deleted file mode 100644
index c1edf374..00000000
Binary files a/website/public/EmuSP12/lt/Tom L-06.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Metal-01.wav b/website/public/EmuSP12/misc/Metal-01.wav
deleted file mode 100644
index 0f306e70..00000000
Binary files a/website/public/EmuSP12/misc/Metal-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Metal-02.wav b/website/public/EmuSP12/misc/Metal-02.wav
deleted file mode 100644
index 8a05af0e..00000000
Binary files a/website/public/EmuSP12/misc/Metal-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Metal-03.wav b/website/public/EmuSP12/misc/Metal-03.wav
deleted file mode 100644
index 0ae2ba80..00000000
Binary files a/website/public/EmuSP12/misc/Metal-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Scratch.wav b/website/public/EmuSP12/misc/Scratch.wav
deleted file mode 100644
index 11bde1a5..00000000
Binary files a/website/public/EmuSP12/misc/Scratch.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Shot-01.wav b/website/public/EmuSP12/misc/Shot-01.wav
deleted file mode 100644
index e4ecfef3..00000000
Binary files a/website/public/EmuSP12/misc/Shot-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Shot-02.wav b/website/public/EmuSP12/misc/Shot-02.wav
deleted file mode 100644
index 80f67cb2..00000000
Binary files a/website/public/EmuSP12/misc/Shot-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/misc/Shot-03.wav b/website/public/EmuSP12/misc/Shot-03.wav
deleted file mode 100644
index 0cc84c28..00000000
Binary files a/website/public/EmuSP12/misc/Shot-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/mt/Tom M-01.wav b/website/public/EmuSP12/mt/Tom M-01.wav
deleted file mode 100644
index a650caf5..00000000
Binary files a/website/public/EmuSP12/mt/Tom M-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/mt/Tom M-02.wav b/website/public/EmuSP12/mt/Tom M-02.wav
deleted file mode 100644
index cbd7d16c..00000000
Binary files a/website/public/EmuSP12/mt/Tom M-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/mt/Tom M-03.wav b/website/public/EmuSP12/mt/Tom M-03.wav
deleted file mode 100644
index e5c4b133..00000000
Binary files a/website/public/EmuSP12/mt/Tom M-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/mt/Tom M-05.wav b/website/public/EmuSP12/mt/Tom M-05.wav
deleted file mode 100644
index 841cac02..00000000
Binary files a/website/public/EmuSP12/mt/Tom M-05.wav and /dev/null differ
diff --git a/website/public/EmuSP12/oh/Hhopen1.wav b/website/public/EmuSP12/oh/Hhopen1.wav
deleted file mode 100644
index 73811991..00000000
Binary files a/website/public/EmuSP12/oh/Hhopen1.wav and /dev/null differ
diff --git a/website/public/EmuSP12/perc/Blow1.wav b/website/public/EmuSP12/perc/Blow1.wav
deleted file mode 100644
index 8021d0d1..00000000
Binary files a/website/public/EmuSP12/perc/Blow1.wav and /dev/null differ
diff --git a/website/public/EmuSP12/rd/Ride.wav b/website/public/EmuSP12/rd/Ride.wav
deleted file mode 100644
index da0e33eb..00000000
Binary files a/website/public/EmuSP12/rd/Ride.wav and /dev/null differ
diff --git a/website/public/EmuSP12/rim/zRim Shot-01.wav b/website/public/EmuSP12/rim/zRim Shot-01.wav
deleted file mode 100644
index 98088cf2..00000000
Binary files a/website/public/EmuSP12/rim/zRim Shot-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/rim/zRim Shot-02.wav b/website/public/EmuSP12/rim/zRim Shot-02.wav
deleted file mode 100644
index c0f1a12d..00000000
Binary files a/website/public/EmuSP12/rim/zRim Shot-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-01.wav b/website/public/EmuSP12/sd/Snaredrum-01.wav
deleted file mode 100644
index 008bbf1d..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-01.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-02.wav b/website/public/EmuSP12/sd/Snaredrum-02.wav
deleted file mode 100644
index 4711ff70..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-02.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-03.wav b/website/public/EmuSP12/sd/Snaredrum-03.wav
deleted file mode 100644
index 643cf237..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-03.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-04.wav b/website/public/EmuSP12/sd/Snaredrum-04.wav
deleted file mode 100644
index bb8c4c34..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-04.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-05.wav b/website/public/EmuSP12/sd/Snaredrum-05.wav
deleted file mode 100644
index 678db12e..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-05.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-06.wav b/website/public/EmuSP12/sd/Snaredrum-06.wav
deleted file mode 100644
index a89a1d60..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-06.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-07.wav b/website/public/EmuSP12/sd/Snaredrum-07.wav
deleted file mode 100644
index fdc1fb03..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-07.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-08.wav b/website/public/EmuSP12/sd/Snaredrum-08.wav
deleted file mode 100644
index 324eafac..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-08.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-09.wav b/website/public/EmuSP12/sd/Snaredrum-09.wav
deleted file mode 100644
index 35b617d7..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-09.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-10.wav b/website/public/EmuSP12/sd/Snaredrum-10.wav
deleted file mode 100644
index 85d13e91..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-10.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-11.wav b/website/public/EmuSP12/sd/Snaredrum-11.wav
deleted file mode 100644
index d296fea5..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-11.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-12.wav b/website/public/EmuSP12/sd/Snaredrum-12.wav
deleted file mode 100644
index b4fc9ca4..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-12.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-13.wav b/website/public/EmuSP12/sd/Snaredrum-13.wav
deleted file mode 100644
index fbe745f9..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-13.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-14.wav b/website/public/EmuSP12/sd/Snaredrum-14.wav
deleted file mode 100644
index fd321482..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-14.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-15.wav b/website/public/EmuSP12/sd/Snaredrum-15.wav
deleted file mode 100644
index 703a23cd..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-15.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-16.wav b/website/public/EmuSP12/sd/Snaredrum-16.wav
deleted file mode 100644
index ef6c1f9c..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-16.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-17.wav b/website/public/EmuSP12/sd/Snaredrum-17.wav
deleted file mode 100644
index df7e282e..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-17.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-18.wav b/website/public/EmuSP12/sd/Snaredrum-18.wav
deleted file mode 100644
index 0950c300..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-18.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-19.wav b/website/public/EmuSP12/sd/Snaredrum-19.wav
deleted file mode 100644
index 46b8e0d8..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-19.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-20.wav b/website/public/EmuSP12/sd/Snaredrum-20.wav
deleted file mode 100644
index 4c211a7c..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-20.wav and /dev/null differ
diff --git a/website/public/EmuSP12/sd/Snaredrum-21.wav b/website/public/EmuSP12/sd/Snaredrum-21.wav
deleted file mode 100644
index 246ea401..00000000
Binary files a/website/public/EmuSP12/sd/Snaredrum-21.wav and /dev/null differ
diff --git a/website/public/default-og-image.png b/website/public/default-og-image.png
deleted file mode 100644
index 97903207..00000000
Binary files a/website/public/default-og-image.png and /dev/null differ
diff --git a/website/public/favicon.svg b/website/public/favicon.svg
deleted file mode 100644
index 0f390629..00000000
--- a/website/public/favicon.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/website/public/piano.json b/website/public/piano.json
index 5f0c62c3..63d4a332 100644
--- a/website/public/piano.json
+++ b/website/public/piano.json
@@ -1,4 +1,5 @@
{
+ "_base": "https://raw.githubusercontent.com/felixroos/dough-samples/main/piano/",
"piano": {
"A0": "A0v8.mp3",
"C1": "C1v8.mp3",
diff --git a/website/public/piano/A0v8.mp3 b/website/public/piano/A0v8.mp3
deleted file mode 100644
index a70ced60..00000000
Binary files a/website/public/piano/A0v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A1v8.mp3 b/website/public/piano/A1v8.mp3
deleted file mode 100644
index 4c77113d..00000000
Binary files a/website/public/piano/A1v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A2v8.mp3 b/website/public/piano/A2v8.mp3
deleted file mode 100644
index a336ba9a..00000000
Binary files a/website/public/piano/A2v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A3v8.mp3 b/website/public/piano/A3v8.mp3
deleted file mode 100644
index cdbf3e9a..00000000
Binary files a/website/public/piano/A3v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A4v8.mp3 b/website/public/piano/A4v8.mp3
deleted file mode 100644
index 374a9a85..00000000
Binary files a/website/public/piano/A4v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A5v8.mp3 b/website/public/piano/A5v8.mp3
deleted file mode 100644
index 66a90365..00000000
Binary files a/website/public/piano/A5v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A6v8.mp3 b/website/public/piano/A6v8.mp3
deleted file mode 100644
index 4caee72b..00000000
Binary files a/website/public/piano/A6v8.mp3 and /dev/null differ
diff --git a/website/public/piano/A7v8.mp3 b/website/public/piano/A7v8.mp3
deleted file mode 100644
index 64d32b4a..00000000
Binary files a/website/public/piano/A7v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C1v8.mp3 b/website/public/piano/C1v8.mp3
deleted file mode 100644
index d6e17a6f..00000000
Binary files a/website/public/piano/C1v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C2v8.mp3 b/website/public/piano/C2v8.mp3
deleted file mode 100644
index 8ed32f55..00000000
Binary files a/website/public/piano/C2v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C3v8.mp3 b/website/public/piano/C3v8.mp3
deleted file mode 100644
index 98b80e04..00000000
Binary files a/website/public/piano/C3v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C4v8.mp3 b/website/public/piano/C4v8.mp3
deleted file mode 100644
index c7aba1c2..00000000
Binary files a/website/public/piano/C4v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C5v8.mp3 b/website/public/piano/C5v8.mp3
deleted file mode 100644
index 7d566154..00000000
Binary files a/website/public/piano/C5v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C6v8.mp3 b/website/public/piano/C6v8.mp3
deleted file mode 100644
index c4f30ea5..00000000
Binary files a/website/public/piano/C6v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C7v8.mp3 b/website/public/piano/C7v8.mp3
deleted file mode 100644
index 178353a7..00000000
Binary files a/website/public/piano/C7v8.mp3 and /dev/null differ
diff --git a/website/public/piano/C8v8.mp3 b/website/public/piano/C8v8.mp3
deleted file mode 100644
index 3357d0ed..00000000
Binary files a/website/public/piano/C8v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds1v8.mp3 b/website/public/piano/Ds1v8.mp3
deleted file mode 100644
index ae7da2cd..00000000
Binary files a/website/public/piano/Ds1v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds2v8.mp3 b/website/public/piano/Ds2v8.mp3
deleted file mode 100644
index 0817e581..00000000
Binary files a/website/public/piano/Ds2v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds3v8.mp3 b/website/public/piano/Ds3v8.mp3
deleted file mode 100644
index fda53ce0..00000000
Binary files a/website/public/piano/Ds3v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds4v8.mp3 b/website/public/piano/Ds4v8.mp3
deleted file mode 100644
index 7894b6d0..00000000
Binary files a/website/public/piano/Ds4v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds5v8.mp3 b/website/public/piano/Ds5v8.mp3
deleted file mode 100644
index 98d04e06..00000000
Binary files a/website/public/piano/Ds5v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds6v8.mp3 b/website/public/piano/Ds6v8.mp3
deleted file mode 100644
index 314331f7..00000000
Binary files a/website/public/piano/Ds6v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Ds7v8.mp3 b/website/public/piano/Ds7v8.mp3
deleted file mode 100644
index c2554a9d..00000000
Binary files a/website/public/piano/Ds7v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs1v8.mp3 b/website/public/piano/Fs1v8.mp3
deleted file mode 100644
index 47d4da8b..00000000
Binary files a/website/public/piano/Fs1v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs2v8.mp3 b/website/public/piano/Fs2v8.mp3
deleted file mode 100644
index 3502c6ff..00000000
Binary files a/website/public/piano/Fs2v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs3v8.mp3 b/website/public/piano/Fs3v8.mp3
deleted file mode 100644
index ad3546b0..00000000
Binary files a/website/public/piano/Fs3v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs4v8.mp3 b/website/public/piano/Fs4v8.mp3
deleted file mode 100644
index 12908edd..00000000
Binary files a/website/public/piano/Fs4v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs5v8.mp3 b/website/public/piano/Fs5v8.mp3
deleted file mode 100644
index 6aa830a1..00000000
Binary files a/website/public/piano/Fs5v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs6v8.mp3 b/website/public/piano/Fs6v8.mp3
deleted file mode 100644
index 602f4580..00000000
Binary files a/website/public/piano/Fs6v8.mp3 and /dev/null differ
diff --git a/website/public/piano/Fs7v8.mp3 b/website/public/piano/Fs7v8.mp3
deleted file mode 100644
index 8a016d98..00000000
Binary files a/website/public/piano/Fs7v8.mp3 and /dev/null differ
diff --git a/website/src/config.ts b/website/src/config.ts
index adbcc7f0..012a6542 100644
--- a/website/src/config.ts
+++ b/website/src/config.ts
@@ -102,9 +102,10 @@ export const SIDEBAR: Sidebar = {
{ text: 'Strudel vs Tidal', link: 'learn/strudel-vs-tidal' },
],
Development: [
+ { text: 'Strudel in your Project', link: 'technical-manual/project-start' },
+ { text: 'Packages', link: 'technical-manual/packages' },
{ text: 'REPL', link: 'technical-manual/repl' },
{ text: 'Sounds', link: 'technical-manual/sounds' },
- { text: 'Packages', link: 'technical-manual/packages' },
{ text: 'Docs', link: 'technical-manual/docs' },
{ text: 'Testing', link: 'technical-manual/testing' },
// { text: 'Internals', link: 'technical-manual/internals' },
diff --git a/website/src/docs/MiniRepl.jsx b/website/src/docs/MiniRepl.jsx
index cb0f26f7..fe618965 100644
--- a/website/src/docs/MiniRepl.jsx
+++ b/website/src/docs/MiniRepl.jsx
@@ -5,7 +5,6 @@ import { getPunchcardPainter } from '@strudel/draw';
import { transpiler } from '@strudel/transpiler';
import { getAudioContext, webaudioOutput, initAudioOnFirstClick } from '@strudel/webaudio';
import { StrudelMirror } from '@strudel/codemirror';
-// import { prebake } from '@strudel/repl';
import { prebake } from '../repl/prebake.mjs';
import { loadModules } from '../repl/util.mjs';
import Claviature from '@components/Claviature';
diff --git a/website/src/pages/examples/index.astro b/website/src/pages/examples/index.astro
index 6b24d9ff..6940e1e4 100644
--- a/website/src/pages/examples/index.astro
+++ b/website/src/pages/examples/index.astro
@@ -15,14 +15,16 @@ const baseNoTrailing = BASE_URL.endsWith('/') ? BASE_URL.slice(0, -1) : BASE_URL