diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs index 98e423be..5d6735e7 100644 --- a/packages/core/controls.mjs +++ b/packages/core/controls.mjs @@ -895,17 +895,37 @@ export const { delaytime, delayt, dt } = registerControl('delaytime', 'delayt', */ export const { lock } = registerControl('lock'); /** - * Set detune of oscillators. Works only with some synths, see tidal doc + * Set detune for stacked voices of supported oscillators * * @name detune - * @param {number | Pattern} amount between 0 and 1 + * @param {number | Pattern} amount * @synonyms det - * @superdirtOnly * @example - * n("0 3 7").s('superzow').octave(3).detune("<0 .25 .5 1 2>").osc() + * note("d f a a# a d3").fast(2).s("supersaw").detune("<.1 .2 .5 24.1>") * */ export const { detune, det } = registerControl('detune', 'det'); +/** + * Set number of stacked voices for supported oscillators + * + * @name unison + * @param {number | Pattern} numvoices + * @example + * note("d f a a# a d3").fast(2).s("supersaw").unison("<1 2 7>") + * + */ +export const { unison } = registerControl('unison'); + +/** + * Set the stereo pan spread for supported oscillators + * + * @name spread + * @param {number | Pattern} spread between 0 and 1 + * @example + * note("d f a a# a d3").fast(2).s("supersaw").spread("<0 .3 1>") + * + */ +export const { spread } = registerControl('spread'); /** * Set dryness of reverb. See `room` and `size` for more information about reverb. * 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/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/src/repl/tunes.mjs b/website/src/repl/tunes.mjs index f9c69995..9d083f2e 100644 --- a/website/src/repl/tunes.mjs +++ b/website/src/repl/tunes.mjs @@ -447,58 +447,6 @@ note( .room(.5) .lpa(.125).lpenv(-2).v("8:.125").fanchor(.25)`; -export const hyperpop = `// "Hyperpop" -// @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ -// @by Felix Roos - -const lfo = cosine.slow(15); -const lfo2 = sine.slow(16); -const filter1 = x=>x.cutoff(lfo2.range(300,3000)); -const filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000) -const scales = cat('D3 major', 'G3 major').slow(8) - -samples({ - bd: '344/344757_1676145-lq.mp3', - sn: '387/387186_7255534-lq.mp3', - hh: '561/561241_12517458-lq.mp3', - hh2:'44/44944_236326-lq.mp3', - hh3: '44/44944_236326-lq.mp3', -}, 'https://cdn.freesound.org/previews/') - -stack( - "-7 0 -7 7".struct("x(5,8,1)").fast(2).sub(7) - .scale(scales) - .note() - .s("sawtooth,square") - .gain(.3).attack(0.01).decay(0.1).sustain(.5) - .apply(filter1) - .lpa(.1).lpenv(2).ftype('24db') - , - n("~@3 [<2 3>,<4 5>]") - .echo(4,1/16,.7) - .scale(scales) - .s('square').gain(.7) - .attack(0.01).decay(0.1).sustain(0) - .apply(filter1), - "6 4 2".add(14) - .superimpose(sub("5")) - .fast(1).euclidLegato(3,8) - .mask("<1 0@7>") - .fast(2).n() - .echo(32, 1/8, .8) - .scale(scales) - .s("sawtooth") - .mul(gain(sine.range(.1,.4).slow(8))) - .attack(.001).decay(.2).sustain(0) - .apply(filter2) -).stack( - stack( - "bd <~@7 [~ bd]>".fast(2), - "~ sn", - "[~ hh3]*2" - ).s().fast(2).gain(.7) -).slow(2)`; - export const festivalOfFingers3 = `// "Festival of fingers 3" // @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ // @by Felix Roos