diff --git a/packages/codemirror/highlight.mjs b/packages/codemirror/highlight.mjs index 79724f8f4..dbfc6cbe0 100644 --- a/packages/codemirror/highlight.mjs +++ b/packages/codemirror/highlight.mjs @@ -57,6 +57,9 @@ const visibleMiniLocations = StateField.define({ // this is why we need to find a way to update the existing decorations, showing the ones that have an active range const haps = new Map(); for (let hap of e.value.haps) { + if (!hap.context?.locations || !hap.whole) { + continue; + } for (let { start, end } of hap.context.locations) { let id = `${start}:${end}`; if (!haps.has(id) || haps.get(id).whole.begin.lt(hap.whole.begin)) { @@ -64,7 +67,6 @@ const visibleMiniLocations = StateField.define({ } } } - visible = { atTime: e.value.atTime, haps }; } } diff --git a/packages/core/controls.mjs b/packages/core/controls.mjs index 42212dd3b..3b2b5aabc 100644 --- a/packages/core/controls.mjs +++ b/packages/core/controls.mjs @@ -40,7 +40,7 @@ const generic_params = [ * @name n * @param {number | Pattern} value sample index starting from 0 * @example - * s("bd sd,hh*3").n("<0 1>") + * s("bd sd [~ bd] sd,hh*6").n("<0 1>") */ // also see https://github.com/tidalcycles/strudel/pull/63 ['n'], @@ -82,7 +82,7 @@ const generic_params = [ * @name gain * @param {number | Pattern} amount gain. * @example - * s("hh*8").gain(".4!2 1 .4!2 1 .4 1") + * s("hh*8").gain(".4!2 1 .4!2 1 .4 1").fast(2) * */ ['gain'], @@ -91,7 +91,7 @@ const generic_params = [ * * @name postgain * @example - * s("bd sd,hh*4") + * s("bd sd [~ bd] sd,hh*8") * .compressor("-20:20:10:.002:.02").postgain(1.5) * */ @@ -114,7 +114,7 @@ const generic_params = [ * @param {number | Pattern} attack time in seconds. * @synonyms att * @example - * note("c3 e3").attack("<0 .1 .5>") + * note("c3 e3 f3 g3").attack("<0 .1 .5>") * */ ['attack', 'att'], @@ -128,7 +128,7 @@ const generic_params = [ * @name fmh * @param {number | Pattern} harmonicity * @example - * note("c e g b") + * note("c e g b g e") * .fm(4) * .fmh("<1 2 1.5 1.61>") * .scope() @@ -143,7 +143,7 @@ const generic_params = [ * @param {number | Pattern} brightness modulation index * @synonyms fmi * @example - * note("c e g b") + * note("c e g b g e") * .fm("<0 1 2 8 32>") * .scope() * @@ -156,7 +156,7 @@ const generic_params = [ * @name fmenv * @param {number | Pattern} type lin | exp * @example - * note("c e g b") + * note("c e g b g e") * .fm(4) * .fmdecay(.2) * .fmsustain(0) @@ -171,7 +171,7 @@ const generic_params = [ * @name fmattack * @param {number | Pattern} time attack time * @example - * note("c e g b") + * note("c e g b g e") * .fm(4) * .fmattack("<0 .05 .1 .2>") * .scope() @@ -184,7 +184,7 @@ const generic_params = [ * @name fmdecay * @param {number | Pattern} time decay time * @example - * note("c e g b") + * note("c e g b g e") * .fm(4) * .fmdecay("<.01 .05 .1 .2>") * .fmsustain(.4) @@ -198,7 +198,7 @@ const generic_params = [ * @name fmsustain * @param {number | Pattern} level sustain level * @example - * note("c e g b") + * note("c e g b g e") * .fm(4) * .fmdecay(.1) * .fmsustain("<1 .75 .5 0>") @@ -216,7 +216,7 @@ const generic_params = [ * @name bank * @param {string | Pattern} bank the name of the bank * @example - * s("bd sd").bank('RolandTR909') // = s("RolandTR909_bd RolandTR909_sd") + * s("bd sd [~ bd] sd").bank('RolandTR909') // = s("RolandTR909_bd RolandTR909_sd") * */ ['bank'], @@ -231,7 +231,7 @@ const generic_params = [ * @name decay * @param {number | Pattern} time decay time in seconds * @example - * note("c3 e3").decay("<.1 .2 .3 .4>").sustain(0) + * note("c3 e3 f3 g3").decay("<.1 .2 .3 .4>").sustain(0) * */ ['decay', 'dec'], @@ -242,7 +242,7 @@ const generic_params = [ * @param {number | Pattern} gain sustain level between 0 and 1 * @synonyms sus * @example - * note("c3 e3").decay(.2).sustain("<0 .1 .4 .6 1>") + * note("c3 e3 f3 g3").decay(.2).sustain("<0 .1 .4 .6 1>") * */ ['sustain', 'sus'], @@ -267,7 +267,7 @@ const generic_params = [ * @param {number | Pattern} frequency center frequency * @synonyms bandf, bp * @example - * s("bd sd,hh*3").bpf("<1000 2000 4000 8000>") + * s("bd sd [~ bd] sd,hh*6").bpf("<1000 2000 4000 8000>") * */ [['bandf', 'bandq', 'bpenv'], 'bpf', 'bp'], @@ -279,7 +279,7 @@ const generic_params = [ * @param {number | Pattern} q q factor * @synonyms bandq * @example - * s("bd sd").bpf(500).bpq("<0 1 2 3>") + * s("bd sd [~ bd] sd").bpf(500).bpq("<0 1 2 3>") * */ // currently an alias of 'bandq' https://github.com/tidalcycles/strudel/issues/496 @@ -293,7 +293,7 @@ const generic_params = [ * @param {number | Pattern} amount between 0 and 1, where 1 is the length of the sample * @example * samples({ rave: 'rave/AREUREADY.wav' }, 'github:tidalcycles/Dirt-Samples/master/') - * s("rave").begin("<0 .25 .5 .75>") + * s("rave").begin("<0 .25 .5 .75>").fast(2) * */ ['begin'], @@ -304,7 +304,7 @@ const generic_params = [ * @name end * @param {number | Pattern} length 1 = whole sample, .5 = half sample, .25 = quarter sample etc.. * @example - * s("bd*2,oh*4").end("<.1 .2 .5 1>") + * s("bd*2,oh*4").end("<.1 .2 .5 1>").fast(2) * */ ['end'], @@ -376,7 +376,7 @@ const generic_params = [ * @name coarse * @param {number | Pattern} factor 1 for original 2 for half, 3 for a third and so on. * @example - * s("bd sd,hh*4").coarse("<1 4 8 16 32>") + * s("bd sd [~ bd] sd,hh*8").coarse("<1 4 8 16 32>") * */ ['coarse'], @@ -463,7 +463,7 @@ const generic_params = [ * @name cut * @param {number | Pattern} group cut group number * @example - * s("rd*4").cut(1) + * s("[oh hh]*4").cut(1) * */ ['cut'], @@ -476,9 +476,9 @@ const generic_params = [ * @param {number | Pattern} frequency audible between 0 and 20000 * @synonyms cutoff, ctf, lp * @example - * s("bd sd,hh*3").lpf("<4000 2000 1000 500 200 100>") + * s("bd sd [~ bd] sd,hh*6").lpf("<4000 2000 1000 500 200 100>") * @example - * s("bd*8").lpf("1000:0 1000:10 1000:20 1000:30") + * s("bd*16").lpf("1000:0 1000:10 1000:20 1000:30") * */ [['cutoff', 'resonance', 'lpenv'], 'ctf', 'lpf', 'lp'], @@ -489,7 +489,7 @@ const generic_params = [ * @param {number | Pattern} modulation depth of the lowpass filter envelope between 0 and _n_ * @synonyms lpe * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .lpf(500) * .lpa(.5) @@ -502,7 +502,7 @@ const generic_params = [ * @param {number | Pattern} modulation depth of the highpass filter envelope between 0 and _n_ * @synonyms hpe * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .hpf(500) * .hpa(.5) @@ -515,7 +515,7 @@ const generic_params = [ * @param {number | Pattern} modulation depth of the bandpass filter envelope between 0 and _n_ * @synonyms bpe * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .bpf(500) * .bpa(.5) @@ -528,7 +528,7 @@ const generic_params = [ * @param {number | Pattern} attack time of the filter envelope * @synonyms lpa * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .lpf(500) * .lpa("<.5 .25 .1 .01>/4") @@ -541,7 +541,7 @@ const generic_params = [ * @param {number | Pattern} attack time of the highpass filter envelope * @synonyms hpa * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .hpf(500) * .hpa("<.5 .25 .1 .01>/4") @@ -554,7 +554,7 @@ const generic_params = [ * @param {number | Pattern} attack time of the bandpass filter envelope * @synonyms bpa * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .bpf(500) * .bpa("<.5 .25 .1 .01>/4") @@ -567,7 +567,7 @@ const generic_params = [ * @param {number | Pattern} decay time of the filter envelope * @synonyms lpd * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .lpf(500) * .lpd("<.5 .25 .1 0>/4") @@ -581,7 +581,7 @@ const generic_params = [ * @param {number | Pattern} decay time of the highpass filter envelope * @synonyms hpd * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .hpf(500) * .hpd("<.5 .25 .1 0>/4") @@ -595,7 +595,7 @@ const generic_params = [ * @param {number | Pattern} decay time of the bandpass filter envelope * @synonyms bpd * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .bpf(500) * .bpd("<.5 .25 .1 0>/4") @@ -609,7 +609,7 @@ const generic_params = [ * @param {number | Pattern} sustain amplitude of the lowpass filter envelope * @synonyms lps * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .lpf(500) * .lpd(.5) @@ -623,7 +623,7 @@ const generic_params = [ * @param {number | Pattern} sustain amplitude of the highpass filter envelope * @synonyms hps * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .hpf(500) * .hpd(.5) @@ -637,7 +637,7 @@ const generic_params = [ * @param {number | Pattern} sustain amplitude of the bandpass filter envelope * @synonyms bps * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .bpf(500) * .bpd(.5) @@ -651,7 +651,7 @@ const generic_params = [ * @param {number | Pattern} release time of the filter envelope * @synonyms lpr * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .clip(.5) * .lpf(500) @@ -666,7 +666,7 @@ const generic_params = [ * @param {number | Pattern} release time of the highpass filter envelope * @synonyms hpr * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .clip(.5) * .hpf(500) @@ -681,7 +681,7 @@ const generic_params = [ * @param {number | Pattern} release time of the bandpass filter envelope * @synonyms bpr * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .clip(.5) * .bpf(500) @@ -695,11 +695,11 @@ const generic_params = [ * @name ftype * @param {number | Pattern} type 12db (default) or 24db * @example - * note("") + * note("c2 e2 f2 g2") * .sound('sawtooth') * .lpf(500) * .bpenv(4) - * .ftype("<12db 24db>") + * .ftype("12db 24db") */ ['ftype'], ['fanchor'], @@ -712,9 +712,9 @@ const generic_params = [ * @param {number | Pattern} frequency audible between 0 and 20000 * @synonyms hp, hcutoff * @example - * s("bd sd,hh*4").hpf("<4000 2000 1000 500 200 100>") + * s("bd sd [~ bd] sd,hh*8").hpf("<4000 2000 1000 500 200 100>") * @example - * s("bd sd,hh*4").hpf("<2000 2000:25>") + * s("bd sd [~ bd] sd,hh*8").hpf("<2000 2000:25>") * */ // currently an alias of 'hcutoff' https://github.com/tidalcycles/strudel/issues/496 @@ -726,11 +726,11 @@ const generic_params = [ * @synonyms vibrato, v * @param {number | Pattern} frequency of the vibrato in hertz * @example - * note("a") + * note("a e") * .vib("<.5 1 2 4 8 16>") * @example * // change the modulation depth with ":" - * note("a") + * note("a e") * .vib("<.5 1 2 4 8 16>:12") */ [['vib', 'vibmod'], 'vibrato', 'v'], @@ -750,11 +750,11 @@ const generic_params = [ * @synonyms vmod * @param {number | Pattern} depth of vibrato (in semitones) * @example - * note("a").vib(4) + * note("a e").vib(4) * .vibmod("<.25 .5 1 2 12>") * @example * // change the vibrato frequency with ":" - * note("a") + * note("a e") * .vibmod("<.25 .5 1 2 12>:8") */ [['vibmod', 'vib'], 'vmod'], @@ -766,7 +766,7 @@ const generic_params = [ * @param {number | Pattern} q resonance factor between 0 and 50 * @synonyms hresonance * @example - * s("bd sd,hh*4").hpf(2000).hpq("<0 10 20 30>") + * s("bd sd [~ bd] sd,hh*8").hpf(2000).hpq("<0 10 20 30>") * */ ['hresonance', 'hpq'], @@ -777,7 +777,7 @@ const generic_params = [ * @param {number | Pattern} q resonance factor between 0 and 50 * @synonyms resonance * @example - * s("bd sd,hh*4").lpf(2000).lpq("<0 10 20 30>") + * s("bd sd [~ bd] sd,hh*8").lpf(2000).lpq("<0 10 20 30>") * */ // currently an alias of 'resonance' https://github.com/tidalcycles/strudel/issues/496 @@ -804,7 +804,7 @@ const generic_params = [ * @name delay * @param {number | Pattern} level between 0 and 1 * @example - * s("bd").delay("<0 .25 .5 1>") + * s("bd bd").delay("<0 .25 .5 1>") * @example * s("bd bd").delay("0.65:0.25:0.9 0.65:0.125:0.7") * @@ -818,7 +818,7 @@ const generic_params = [ * @param {number | Pattern} feedback between 0 and 1 * @synonyms delayfb, dfb * @example - * s("bd").delay(.25).delayfeedback("<.25 .5 .75 1>").slow(2) + * s("bd").delay(.25).delayfeedback("<.25 .5 .75 1>") * */ ['delayfeedback', 'delayfb', 'dfb'], @@ -829,7 +829,7 @@ const generic_params = [ * @param {number | Pattern} seconds between 0 and Infinity * @synonyms delayt, dt * @example - * s("bd").delay(.25).delaytime("<.125 .25 .5 1>").slow(2) + * s("bd bd").delay(.25).delaytime("<.125 .25 .5 1>") * */ ['delaytime', 'delayt', 'dt'], @@ -899,7 +899,7 @@ const generic_params = [ * @synonyms patt * @param {number | Pattern} time time in seconds * @example - * note("").pattack("<0 .1 .25 .5>") + * note("c eb g bb").pattack("0 .1 .25 .5").slow(2) * */ ['pattack', 'patt'], @@ -947,7 +947,7 @@ const generic_params = [ * @name pcurve * @param {number | Pattern} type 0 = linear, 1 = exponential * @example - * note("g1*2") + * note("g1*4") * .s("sine").pdec(.5) * .penv(32) * .pcurve("<0 1>") @@ -963,7 +963,7 @@ const generic_params = [ * @name panchor * @param {number | Pattern} anchor anchor offset * @example - * note("c").penv(12).panchor("<0 .5 1 .5>") + * note("c c4").penv(12).panchor("<0 .5 1 .5>") * */ ['panchor'], @@ -1062,8 +1062,8 @@ const generic_params = [ * @param {number | Pattern} number * @example * stack( - * s("hh*3").delay(.5).delaytime(.25).orbit(1), - * s("~ sd").delay(.5).delaytime(.125).orbit(2) + * s("hh*6").delay(.5).delaytime(.25).orbit(1), + * s("~ sd ~ sd").delay(.5).delaytime(.125).orbit(2) * ) */ ['orbit'], @@ -1076,6 +1076,8 @@ const generic_params = [ * @param {number | Pattern} pan between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel) * @example * s("[bd hh]*2").pan("<.5 1 .5 0>") + * @example + * s("bd rim sd rim bd ~ cp rim").pan(sine.slow(2)) * */ ['pan'], @@ -1133,9 +1135,9 @@ const generic_params = [ * @name room * @param {number | Pattern} level between 0 and 1 * @example - * s("bd sd").room("<0 .2 .4 .6 .8 1>") + * s("bd sd [~ bd] sd").room("<0 .2 .4 .6 .8 1>") * @example - * s("bd sd").room("<0.9:1 0.9:4>") + * s("bd sd [~ bd] sd").room("<0.9:1 0.9:4>") * */ [['room', 'size']], @@ -1147,9 +1149,9 @@ const generic_params = [ * @synonyms rlp * @param {number} frequency between 0 and 20000hz * @example - * s("bd sd").room(0.5).rlp(10000) + * s("bd sd [~ bd] sd").room(0.5).rlp(10000) * @example - * s("bd sd").room(0.5).rlp(5000) + * s("bd sd [~ bd] sd").room(0.5).rlp(5000) */ ['roomlp', 'rlp'], /** @@ -1160,9 +1162,9 @@ const generic_params = [ * @synonyms rdim * @param {number} frequency between 0 and 20000hz * @example - * s("bd sd").room(0.5).rlp(10000).rdim(8000) + * s("bd sd [~ bd] sd").room(0.5).rlp(10000).rdim(8000) * @example - * s("bd sd").room(0.5).rlp(5000).rdim(400) + * s("bd sd [~ bd] sd").room(0.5).rlp(5000).rdim(400) * */ ['roomdim', 'rdim'], @@ -1174,9 +1176,9 @@ const generic_params = [ * @synonyms rfade * @param {number} seconds for the reverb to fade * @example - * s("bd sd").room(0.5).rlp(10000).rfade(0.5) + * s("bd sd [~ bd] sd").room(0.5).rlp(10000).rfade(0.5) * @example - * s("bd sd").room(0.5).rlp(5000).rfade(4) + * s("bd sd [~ bd] sd").room(0.5).rlp(5000).rfade(4) * */ ['roomfade', 'rfade'], @@ -1186,7 +1188,7 @@ const generic_params = [ * @param {string | Pattern} sample to use as an impulse response * @synonyms ir * @example - * s("bd sd").room(.8).ir("") + * s("bd sd [~ bd] sd").room(.8).ir("") * */ [['ir', 'i'], 'iresponse'], @@ -1198,13 +1200,13 @@ const generic_params = [ * @param {number | Pattern} size between 0 and 10 * @synonyms rsize, sz, size * @example - * s("bd sd").room(.8).rsize(1) + * s("bd sd [~ bd] sd").room(.8).rsize(1) * @example - * s("bd sd").room(.8).rsize(4) + * s("bd sd [~ bd] sd").room(.8).rsize(4) * */ // TODO: find out why : - // s("bd sd").room(.8).roomsize("<0 .2 .4 .6 .8 [1,0]>").osc() + // s("bd sd [~ bd] sd").room(.8).roomsize("<0 .2 .4 .6 .8 [1,0]>").osc() // .. does not work. Is it because room is only one effect? ['roomsize', 'size', 'sz', 'rsize'], // ['sagogo'], @@ -1217,7 +1219,7 @@ const generic_params = [ * @name shape * @param {number | Pattern} distortion between 0 and 1 * @example - * s("bd sd,hh*4").shape("<0 .2 .4 .6 .8>") + * s("bd sd [~ bd] sd,hh*8").shape("<0 .2 .4 .6 .8>") * */ ['shape'], @@ -1227,7 +1229,7 @@ const generic_params = [ * * @name compressor * @example - * s("bd sd,hh*4") + * s("bd sd [~ bd] sd,hh*8") * .compressor("-20:20:10:.002:.02") * */ @@ -1242,7 +1244,7 @@ const generic_params = [ * @name speed * @param {number | Pattern} speed -inf to inf, negative numbers play the sample backwards. * @example - * s("bd").speed("<1 2 4 1 -2 -4>") + * s("bd*6").speed("1 2 4 1 -2 -4") * @example * speed("1 1.5*2 [2 1.1]").s("piano").clip(1) * @@ -1287,8 +1289,10 @@ const generic_params = [ * @name vowel * @param {string | Pattern} vowel You can use a e i o u ae aa oe ue y uh un en an on, corresponding to [a] [e] [i] [o] [u] [æ] [ɑ] [ø] [y] [ɯ] [ʌ] [œ̃] [ɛ̃] [ɑ̃] [ɔ̃]. Aliases: aa = å = ɑ, oe = ø = ö, y = ı, ae = æ. * @example - * note("c2 >").s('sawtooth') + * note("[c2 >]*2").s('sawtooth') * .vowel(">") + * @example + * s("bd sd mt ht bd [~ cp] ht lt").vowel("[a|e|i|o|u]") * */ ['vowel'], @@ -1463,7 +1467,7 @@ controls.createParams = (...names) => * @param {number | Pattern} gain sustain level (0 to 1) * @param {number | Pattern} time release time in seconds * @example - * note("").sound("sawtooth").lpf(600).adsr(".1:.1:.5:.2") + * note("[c3 bb2 f3 eb3]*2").sound("sawtooth").lpf(600).adsr(".1:.1:.5:.2") */ controls.adsr = register('adsr', (adsr, pat) => { adsr = !Array.isArray(adsr) ? [adsr] : adsr; diff --git a/packages/core/cyclist.mjs b/packages/core/cyclist.mjs index ae6b68fee..fef510f86 100644 --- a/packages/core/cyclist.mjs +++ b/packages/core/cyclist.mjs @@ -10,7 +10,7 @@ import { logger } from './logger.mjs'; export class Cyclist { constructor({ interval, onTrigger, onToggle, onError, getTime, latency = 0.1 }) { this.started = false; - this.cps = 1; + this.cps = 0.5; this.num_ticks_since_cps_change = 0; this.lastTick = 0; // absolute time when last tick (clock callback) happened this.lastBegin = 0; // query begin of last tick @@ -96,7 +96,7 @@ export class Cyclist { this.start(); } } - setCps(cps = 1) { + setCps(cps = 0.5) { if (this.cps === cps) { return; } diff --git a/packages/core/draw.mjs b/packages/core/draw.mjs index 941401da7..7a9454f2e 100644 --- a/packages/core/draw.mjs +++ b/packages/core/draw.mjs @@ -134,7 +134,7 @@ export class Drawer { this.lastFrame = phase; this.visibleHaps = (this.visibleHaps || []) // filter out haps that are too far in the past (think left edge of screen for pianoroll) - .filter((h) => h.whole.end >= phase - lookbehind - lookahead) + .filter((h) => h.whole?.end >= phase - lookbehind - lookahead) // add new haps with onset (think right edge bars scrolling in) .concat(haps.filter((h) => h.hasOnset())); const time = phase - lookahead; diff --git a/packages/core/euclid.mjs b/packages/core/euclid.mjs index e62409202..7a952cf81 100644 --- a/packages/core/euclid.mjs +++ b/packages/core/euclid.mjs @@ -148,7 +148,7 @@ export const { euclidrot, euclidRot } = register(['euclidrot', 'euclidRot'], fun * @param {number} pulses the number of onsets / beats * @param {number} steps the number of steps to fill * @example - * n("g2").decay(.1).sustain(.3).euclidLegato(3,8) + * note("c3").euclidLegato(3,8) */ const _euclidLegato = function (pulses, steps, rotation, pat) { diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index fc9dae047..1be381136 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -697,7 +697,7 @@ export class Pattern { * @synonyms apply * @returns Pattern * @example - * "<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*4" + * "<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*8" * .layer(x=>x.add("0,2")) * .scale('C minor').note() */ @@ -711,7 +711,7 @@ export class Pattern { * @memberof Pattern * @returns Pattern * @example - * "<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*4" + * "<0 2 4 6 ~ 4 ~ 2 0!3 ~!5>*8" * .superimpose(x=>x.add(2)) * .scale('C minor').note() */ @@ -727,8 +727,8 @@ export class Pattern { * @name stack * @memberof Pattern * @example - * s("hh*2").stack( - * note("c2(3,8)") + * s("hh*4").stack( + * note("c4(5,8)") * ) */ stack(...pats) { @@ -745,8 +745,8 @@ export class Pattern { * @memberof Pattern * @synonyms sequence, fastcat * @example - * s("hh*2").seq( - * note("c2(3,8)") + * s("hh*4").seq( + * note("c4(5,8)") * ) */ seq(...pats) { @@ -759,8 +759,8 @@ export class Pattern { * @memberof Pattern * @synonyms slowcat * @example - * s("hh*2").cat( - * note("c2(3,8)") + * s("hh*4").cat( + * note("c4(5,8)") * ) */ cat(...pats) { @@ -858,7 +858,7 @@ Pattern.prototype.arpWith = function (func) { * Selects indices in in stacked notes. * @example * note("<[c,eb,g]!2 [c,f,ab] [d,f,ab]>") - * .arp("0 [0,2] 1 [0,2]").slow(2) + * .arp("0 [0,2] 1 [0,2]") * */ Pattern.prototype.arp = function (pat) { return this.arpWith((haps) => pat.fmap((i) => haps[i % haps.length])); @@ -929,14 +929,14 @@ function _composeOp(a, b, func) { * @memberof Pattern * @example * // Here, the triad 0, 2, 4 is shifted by different amounts - * "0 2 4".add("<0 3 4 0>").scale('C major').note() + * n("0 2 4".add("<0 3 4 0>")).scale("C:major") * // Without add, the equivalent would be: - * // "<[0 2 4] [3 5 7] [4 6 8] [0 2 4]>".scale('C major').note() + * // n("<[0 2 4] [3 5 7] [4 6 8] [0 2 4]>").scale("C:major") * @example * // You can also use add with notes: - * "c3 e3 g3".add("<0 5 7 0>").note() + * note("c3 e3 g3".add("<0 5 7 0>")) * // Behind the scenes, the notes are converted to midi numbers: - * // "48 52 55".add("<0 5 7 0>").note() + * // note("48 52 55".add("<0 5 7 0>")) */ add: [numeralArgs((a, b) => a + b)], // support string concatenation /** @@ -945,7 +945,7 @@ function _composeOp(a, b, func) { * @name sub * @memberof Pattern * @example - * "0 2 4".sub("<0 1 2 3>").scale('C4 minor').note() + * n("0 2 4".sub("<0 1 2 3>")).scale("C4:minor") * // See add for more information. */ sub: [numeralArgs((a, b) => a - b)], @@ -955,7 +955,7 @@ function _composeOp(a, b, func) { * @name mul * @memberof Pattern * @example - * "1 1.5 [1.66, <2 2.33>]".mul(150).freq() + * "<1 1.5 [1.66, <2 2.33>]>*4".mul(150).freq() */ mul: [numeralArgs((a, b) => a * b)], /** @@ -1049,9 +1049,9 @@ function _composeOp(a, b, func) { * Applies the given structure to the pattern: * * @example - * note("c3,eb3,g3") + * note("c,eb,g") * .struct("x ~ x ~ ~ x ~ x ~ ~ ~ x ~ x ~ ~") - * .slow(4) + * .slow(2) */ Pattern.prototype.struct = function (...args) { return this.keepif.out(...args); @@ -1063,7 +1063,7 @@ function _composeOp(a, b, func) { * Returns silence when mask is 0 or "~" * * @example - * note("c [eb,g] d [eb,g]").mask("<1 [0 1]>").slow(2) + * note("c [eb,g] d [eb,g]").mask("<1 [0 1]>") */ Pattern.prototype.mask = function (...args) { return this.keepif.in(...args); @@ -1075,7 +1075,7 @@ function _composeOp(a, b, func) { * Resets the pattern to the start of the cycle for each onset of the reset pattern. * * @example - * s(" sd, hh*4").reset("") + * s("[ sd]*2, hh*8").reset("") */ Pattern.prototype.reset = function (...args) { return this.keepif.trig(...args); @@ -1088,7 +1088,7 @@ function _composeOp(a, b, func) { * While reset will only reset the current cycle, restart will start from cycle 0. * * @example - * s(" sd, hh*4").restart("") + * s("[ sd]*2, hh*8").restart("") */ Pattern.prototype.restart = function (...args) { return this.keepif.trigzero(...args); @@ -1178,7 +1178,8 @@ export function reify(thing) { * @return {Pattern} * @synonyms polyrhythm, pr * @example - * stack("g3", "b3", ["e4", "d4"]).note() // "g3,b3,[e4,d4]".note() + * stack("g3", "b3", ["e4", "d4"]).note() + * // "g3,b3,[e4,d4]".note() */ export function stack(...pats) { // Array test here is to avoid infinite recursions.. @@ -1237,7 +1238,8 @@ export function slowcatPrime(...pats) { * @synonyms slowcat * @return {Pattern} * @example - * cat("e5", "b4", ["d5", "c5"]).note() // "".note() + * cat("e5", "b4", ["d5", "c5"]).note() + * // "".note() * */ export function cat(...pats) { @@ -1247,7 +1249,8 @@ export function cat(...pats) { /** Like `seq`, but each step has a length, relative to the whole. * @return {Pattern} * @example - * timeCat([3,"e3"],[1, "g3"]).note() // "e3@3 g3".note() + * timeCat([3,"e3"],[1, "g3"]).note() + * // "e3@3 g3".note() */ export function timeCat(...timepats) { const total = timepats.map((a) => a[0]).reduce((a, b) => a.add(b), Fraction(0)); @@ -1267,7 +1270,10 @@ export function timeCat(...timepats) { * * @return {Pattern} * @example - * arrange([4, "(3,8)"],[2, "(5,8)"]).note() + * arrange( + * [4, "(3,8)"], + * [2, "(5,8)"] + * ).note() */ export function arrange(...sections) { const total = sections.reduce((sum, [cycles]) => sum + cycles, 0); @@ -1287,7 +1293,8 @@ export function sequence(...pats) { /** Like **cat**, but the items are crammed into one cycle. * @synonyms fastcat, sequence * @example - * seq("e5", "b4", ["d5", "c5"]).note() // "e5 b4 [d5 c5]".note() + * seq("e5", "b4", ["d5", "c5"]).note() + * // "e5 b4 [d5 c5]".note() * */ export function seq(...pats) { @@ -1313,9 +1320,9 @@ function _sequenceCount(x) { * @param {number} steps how many items are placed in one cycle * @param {any[]} sequences one or more arrays of Patterns / values * @example - * polymeterSteps(2, ["c", "d", "e", "f", "g", "f", "e", "d"]) - * .note().stack(s("bd")) // 1 cycle = 1 bd = 2 notes - * // note("{c d e f g f e d}%2").stack(s("bd")) + * polymeterSteps(4, ["c", "d", "e"]) + * .note().stack(s("bd")) + * // note("{c d e}%4").stack(s("bd")) */ export function polymeterSteps(steps, ...args) { const seqs = args.map((a) => _sequenceCount(a)); @@ -1463,7 +1470,7 @@ export function register(name, func, patternify = true) { * @memberof Pattern * @returns Pattern * @example - * "0.5 1.5 2.5".round().scale('C major').note() + * n("0.5 1.5 2.5".round()).scale("C:major") */ export const round = register('round', function (pat) { return pat.asNumber().fmap((v) => Math.round(v)); @@ -1477,7 +1484,7 @@ export const round = register('round', function (pat) { * @memberof Pattern * @returns Pattern * @example - * "42 42.1 42.5 43".floor().note() + * note("42 42.1 42.5 43".floor()) */ export const floor = register('floor', function (pat) { return pat.asNumber().fmap((v) => Math.floor(v)); @@ -1491,7 +1498,7 @@ export const floor = register('floor', function (pat) { * @memberof Pattern * @returns Pattern * @example - * "42 42.1 42.5 43".ceil().note() + * note("42 42.1 42.5 43".ceil()) */ export const ceil = register('ceil', function (pat) { return pat.asNumber().fmap((v) => Math.ceil(v)); @@ -1524,7 +1531,8 @@ export const fromBipolar = register('fromBipolar', function (pat) { * @memberof Pattern * @returns Pattern * @example - * s("bd sd,hh*4").cutoff(sine.range(500,2000).slow(4)) + * s("[bd sd]*2,hh*8") + * .cutoff(sine.range(500,4000)) */ export const range = register('range', function (min, max, pat) { return pat.mul(max - min).add(min); @@ -1538,7 +1546,8 @@ export const range = register('range', function (min, max, pat) { * @memberof Pattern * @returns Pattern * @example - * s("bd sd,hh*4").cutoff(sine.rangex(500,2000).slow(4)) + * s("[bd sd]*2,hh*8") + * .cutoff(sine.rangex(500,4000)) */ export const rangex = register('rangex', function (min, max, pat) { return pat._range(Math.log(min), Math.log(max)).fmap(Math.exp); @@ -1551,7 +1560,8 @@ export const rangex = register('rangex', function (min, max, pat) { * @memberof Pattern * @returns Pattern * @example - * s("bd sd,hh*4").cutoff(sine2.range2(500,2000).slow(4)) + * s("[bd sd]*2,hh*8") + * .cutoff(sine2.range2(500,4000)) */ export const range2 = register('range2', function (min, max, pat) { return pat.fromBipolar()._range(min, max); @@ -1564,7 +1574,8 @@ export const range2 = register('range2', function (min, max, pat) { * @memberof Pattern * @returns Pattern * @example - * ratio("1, 5:4, 3:2").mul(110).freq().s("piano").slow(2) + * ratio("1, 5:4, 3:2").mul(110) + * .freq().s("piano") */ export const ratio = register('ratio', (pat) => pat.fmap((v) => { @@ -1667,7 +1678,7 @@ export const ply = register('ply', function (factor, pat) { * @param {number | Pattern} factor speed up factor * @returns Pattern * @example - * s(" hh").fast(2) // s("[ hh]*2") + * s("bd hh sd hh").fast(2) // s("[bd hh sd hh]*2") */ export const { fast, density } = register(['fast', 'density'], function (factor, pat) { if (factor === 0) { @@ -1696,7 +1707,7 @@ export const hurry = register('hurry', function (r, pat) { * @param {number | Pattern} factor slow down factor * @returns Pattern * @example - * s(" hh").slow(2) // s("[ hh]/2") + * s("bd hh sd hh").slow(2) // s("[bd hh sd hh]/2") */ export const { slow, sparsity } = register(['slow', 'sparsity'], function (factor, pat) { if (factor === 0) { @@ -1785,9 +1796,9 @@ export const apply = register('apply', function (func, pat) { * @example * s(",hh*2").cpm(90) // = 90 bpm */ -// TODO - global clock +// this is redefined in repl.mjs, using the current cps as divisor export const cpm = register('cpm', function (cpm, pat) { - return pat._fast(cpm / 60); + return pat._fast(cpm / 60 / 1); }); /** @@ -1860,7 +1871,7 @@ export const linger = register('linger', function (t, pat) { * Samples the pattern at a rate of n events per cycle. Useful for turning a continuous pattern into a discrete one. * @param {number} segments number of segments per cycle * @example - * note(saw.range(0,12).segment(24)).add(40) + * note(saw.range(40,52).segment(24)) */ export const segment = register('segment', function (rate, pat) { return pat.struct(pure(true)._fast(rate)); @@ -1886,7 +1897,7 @@ export const { invert, inv } = register(['invert', 'inv'], function (pat) { * @param {function} func * @returns Pattern * @example - * "c3 eb3 g3".when("<0 1>/2", x=>x.sub(5)).note() + * "c3 eb3 g3".when("<0 1>/2", x=>x.sub("5")).note() */ export const when = register('when', function (on, func, pat) { return on ? func(pat) : pat; @@ -1923,7 +1934,7 @@ export const brak = register('brak', function (pat) { * @memberof Pattern * @returns Pattern * @example - * note("c3 d3 e3 g3").rev() + * note("c d e g").rev() */ export const rev = register('rev', function (pat) { const query = function (state) { @@ -1993,7 +2004,7 @@ export const palindrome = register('palindrome', function (pat) { * @name juxBy * @synonyms juxby * @example - * s("lt ht mt ht hh").juxBy("<0 .5 1>/2", rev) + * s("bd lt [~ ht] mt cp ~ bd hh").juxBy("<0 .5 1>/2", rev) */ export const { juxBy, juxby } = register(['juxBy', 'juxby'], function (by, func, pat) { by /= 2; @@ -2012,7 +2023,11 @@ export const { juxBy, juxby } = register(['juxBy', 'juxby'], function (by, func, /** * The jux function creates strange stereo effects, by applying a function to a pattern, but only in the right-hand channel. * @example - * s("lt ht mt ht hh").jux(rev) + * s("bd lt [~ ht] mt cp ~ bd hh").jux(rev) + * @example + * s("bd lt [~ ht] mt cp ~ bd hh").jux(press) + * @example + * s("bd lt [~ ht] mt cp ~ bd hh").jux(iter(4)) */ export const jux = register('jux', function (func, pat) { return pat._juxBy(1, func, pat); @@ -2028,7 +2043,7 @@ export const jux = register('jux', function (func, pat) { * @example * "<0 [2 4]>" * .echoWith(4, 1/8, (p,n) => p.add(n*2)) - * .scale('C minor').note().clip(.2) + * .scale("C:minor").note() */ export const { echoWith, echowith, stutWith, stutwith } = register( ['echoWith', 'echowith', 'stutWith', 'stutwith'], @@ -2121,7 +2136,8 @@ const { repeatCycles } = register('repeatCycles', _repeatCycles); * @memberof Pattern * @returns Pattern * @example - * "0 1 2 3".chunk(4, x=>x.add(7)).scale('A minor').note() + * "0 1 2 3".chunk(4, x=>x.add(7)) + * .scale("A:minor").note() */ const _chunk = function (n, func, pat, back = false, fast = false) { const binary = Array(n - 1).fill(false); @@ -2146,7 +2162,8 @@ const { chunk, slowchunk, slowChunk } = register(['chunk', 'slowchunk', 'slowChu * @memberof Pattern * @returns Pattern * @example - * "0 1 2 3".chunkBack(4, x=>x.add(7)).scale('A minor').note() + * "0 1 2 3".chunkBack(4, x=>x.add(7)) + * .scale("A:minor").note() */ export const { chunkBack, chunkback } = register(['chunkBack', 'chunkback'], function (n, func, pat) { return _chunk(n, func, pat, true); @@ -2160,10 +2177,11 @@ export const { chunkBack, chunkback } = register(['chunkBack', 'chunkback'], fun * @memberof Pattern * @returns Pattern * @example - * "<0 8> 1 2 3 4 5 6 7".fastChunk(4, x => x.color('red')).slow(4).scale("C2:major").note() - .s("folkharp") + * "<0 8> 1 2 3 4 5 6 7" + * .fastChunk(4, x => x.color('red')).slow(2) + * .scale("C2:major").note() */ -const { fastchunk, fastChunk } = register(['fastchunk', 'fastChunk'], function (n, func, pat) { +export const { fastchunk, fastChunk } = register(['fastchunk', 'fastChunk'], function (n, func, pat) { return _chunk(n, func, pat, false, true); }); @@ -2178,6 +2196,8 @@ export const bypass = register('bypass', function (on, pat) { * @param {number} offset start point of loop in cycles * @param {number} cycles loop length in cycles * @example + * note("").ribbon(1, 2).fast(2) + * @example * // Looping a portion of randomness * note(irand(8).segment(4).scale('C3 minor')).ribbon(1337, 2) */ @@ -2251,7 +2271,7 @@ export const legato = register('legato', function (value, pat) { * s("rhodes") * .chop(4) * .rev() // reverse order of chops - * .loopAt(4) // fit sample into 4 cycles + * .loopAt(2) // fit sample into 2 cycles * */ export const chop = register('chop', function (n, pat) { @@ -2269,7 +2289,7 @@ export const chop = register('chop', function (n, pat) { * @memberof Pattern * @returns Pattern * @example - * s("numbers:0 numbers:1 numbers:2").striate(6).slow(6) + * s("numbers:0 numbers:1 numbers:2").striate(6).slow(3) */ export const striate = register('striate', function (n, pat) { const slices = Array.from({ length: n }, (x, i) => i); @@ -2285,10 +2305,10 @@ export const striate = register('striate', function (n, pat) { * @returns Pattern * @example * samples({ rhodes: 'https://cdn.freesound.org/previews/132/132051_316502-lq.mp3' }) - * s("rhodes").loopAt(4) + * s("rhodes").loopAt(2) */ // TODO - global cps clock -const _loopAt = function (factor, pat, cps = 1) { +const _loopAt = function (factor, pat, cps = 0.5) { return pat .speed((1 / factor) * cps) .unit('c') @@ -2303,10 +2323,10 @@ const _loopAt = function (factor, pat, cps = 1) { * @returns Pattern * @example * await samples('github:tidalcycles/Dirt-Samples/master') - * s("breaks165").slice(8, "0 1 <2 2*2> 3 [4 0] 5 6 7".every(3, rev)).slow(1.5) + * s("breaks165").slice(8, "0 1 <2 2*2> 3 [4 0] 5 6 7".every(3, rev)).slow(0.75) * @example * await samples('github:tidalcycles/Dirt-Samples/master') - * s("breaks125/2").fit().slice([0,.25,.5,.75], "0 1 1 <2 3>") + * s("breaks125").fit().slice([0,.25,.5,.75], "0 1 1 <2 3>") */ export const slice = register( @@ -2334,7 +2354,6 @@ export const slice = register( * await samples('github:tidalcycles/Dirt-Samples/master') * s("breaks165") * .splice(8, "0 1 [2 3 0]@2 3 0@2 7") - * .hurry(0.65) */ export const splice = register( @@ -2369,7 +2388,7 @@ export const { loopAt, loopat } = register(['loopAt', 'loopat'], function (facto * @name fit * @example * samples({ rhodes: 'https://cdn.freesound.org/previews/132/132051_316502-lq.mp3' }) - * s("rhodes/4").fit() + * s("rhodes/2").fit() */ export const fit = register('fit', (pat) => pat.withHaps((haps, state) => diff --git a/packages/core/repl.mjs b/packages/core/repl.mjs index 46c96d5cc..e6826907c 100644 --- a/packages/core/repl.mjs +++ b/packages/core/repl.mjs @@ -101,9 +101,13 @@ export function repl({ } catch (err) { console.warn('injectPatternMethods: error:', err); } + const cpm = register('cpm', function (cpm, pat) { + return pat._fast(cpm / 60 / scheduler.cps); + }); evalScope({ all, hush, + cpm, setCps, setcps: setCps, setCpm, diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index b4a272981..c70805d85 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -27,9 +27,11 @@ export const isaw2 = isaw.toBipolar(); * * @return {Pattern} * @example - * "c3 [eb3,g3] g2 [g3,bb3]".note().clip(saw.slow(4)) + * note("*8") + * .clip(saw.slow(2)) * @example - * saw.range(0,8).segment(8).scale('C major').slow(4).note() + * n(saw.range(0,8).segment(8)) + * .scale('C major') * */ export const saw = signal((t) => t % 1); @@ -42,7 +44,8 @@ export const sine2 = signal((t) => Math.sin(Math.PI * 2 * t)); * * @return {Pattern} * @example - * sine.segment(16).range(0,15).slow(2).scale('C minor').note() + * n(sine.segment(16).range(0,15)) + * .scale("C:minor") * */ export const sine = sine2.fromBipolar(); @@ -52,7 +55,8 @@ export const sine = sine2.fromBipolar(); * * @return {Pattern} * @example - * stack(sine,cosine).segment(16).range(0,15).slow(2).scale('C minor').note() + * n(stack(sine,cosine).segment(16).range(0,15)) + * .scale("C:minor") * */ export const cosine = sine._early(Fraction(1).div(4)); @@ -63,7 +67,7 @@ export const cosine2 = sine2._early(Fraction(1).div(4)); * * @return {Pattern} * @example - * square.segment(2).range(0,7).scale('C minor').note() + * n(square.segment(4).range(0,7)).scale("C:minor") * */ export const square = signal((t) => Math.floor((t * 2) % 2)); @@ -74,7 +78,7 @@ export const square2 = square.toBipolar(); * * @return {Pattern} * @example - * tri.segment(8).range(0,7).scale('C minor').note() + * n(tri.segment(8).range(0,7)).scale("C:minor") * */ export const tri = fastcat(isaw, saw); @@ -118,8 +122,8 @@ const timeToRands = (t, n) => timeToRandsPrime(timeToIntSeed(t), n); /** * A discrete pattern of numbers from 0 to n-1 * @example - * run(4).scale('C4 major').note() - * // "0 1 2 3".scale('C4 major').note() + * n(run(4)).scale("C4:pentatonic") + * // n("0 1 2 3").scale("C4:pentatonic") */ export const run = (n) => saw.range(0, n).floor().segment(n); @@ -129,7 +133,7 @@ export const run = (n) => saw.range(0, n).floor().segment(n); * @name rand * @example * // randomly change the cutoff - * s("bd sd,hh*4").cutoff(rand.range(500,2000)) + * s("bd*4,hh*8").cutoff(rand.range(500,8000)) * */ export const rand = signal(timeToRand); @@ -151,7 +155,7 @@ export const _irand = (i) => rand.fmap((x) => Math.trunc(x * i)); * @param {number} n max value (exclusive) * @example * // randomly select scale notes from 0 - 7 (= C to C) - * irand(8).struct("x(3,8)").scale('C minor').note() + * n(irand(8)).struct("x x*2 x x*3").scale("C:minor") * */ export const irand = (ipat) => reify(ipat).fmap(_irand).innerJoin(); @@ -360,9 +364,9 @@ Pattern.prototype.choose2 = function (...xs) { * Picks one of the elements at random each cycle. * @returns {Pattern} * @example - * chooseCycles("bd", "hh", "sd").s().fast(4) + * chooseCycles("bd", "hh", "sd").s().fast(8) * @example - * "bd | hh | sd".s().fast(4) + * s("bd | hh | sd").fast(8) */ export const chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs); @@ -405,7 +409,7 @@ export const perlinWith = (pat) => { * @name perlin * @example * // randomly change the cutoff - * s("bd sd,hh*4").cutoff(perlin.range(500,2000)) + * s("bd*4,hh*8").cutoff(perlin.range(500,8000)) * */ export const perlin = perlinWith(time.fmap((v) => Number(v))); @@ -479,7 +483,7 @@ export const undegrade = register('undegrade', (pat) => pat._undegradeBy(0.5)); * @param {function} function - the transformation to apply * @returns Pattern * @example - * s("hh(3,8)").sometimesBy(.4, x=>x.speed("0.5")) + * s("hh*8").sometimesBy(.4, x=>x.speed("0.5")) */ export const sometimesBy = register('sometimesBy', function (patx, func, pat) { @@ -497,7 +501,7 @@ export const sometimesBy = register('sometimesBy', function (patx, func, pat) { * @param {function} function - the transformation to apply * @returns Pattern * @example - * s("hh*4").sometimes(x=>x.speed("0.5")) + * s("hh*8").sometimes(x=>x.speed("0.5")) */ export const sometimes = register('sometimes', function (func, pat) { return pat._sometimesBy(0.5, func); @@ -514,7 +518,7 @@ export const sometimes = register('sometimes', function (func, pat) { * @param {function} function - the transformation to apply * @returns Pattern * @example - * s("hh(3,8)").someCyclesBy(.3, x=>x.speed("0.5")) + * s("bd,hh*8").someCyclesBy(.3, x=>x.speed("0.5")) */ export const someCyclesBy = register('someCyclesBy', function (patx, func, pat) { @@ -536,7 +540,7 @@ export const someCyclesBy = register('someCyclesBy', function (patx, func, pat) * @memberof Pattern * @returns Pattern * @example - * s("hh(3,8)").someCycles(x=>x.speed("0.5")) + * s("bd,hh*8").someCycles(x=>x.speed("0.5")) */ export const someCycles = register('someCycles', function (func, pat) { return pat._someCyclesBy(0.5, func); diff --git a/packages/tonal/tonal.mjs b/packages/tonal/tonal.mjs index 93f2fb122..48cfdb9f4 100644 --- a/packages/tonal/tonal.mjs +++ b/packages/tonal/tonal.mjs @@ -157,9 +157,9 @@ export const scaleTranspose = register('scaleTranspose', function (offset /* : n * .scale("C:/2") * .s("piano") * @example - * n(rand.range(0,12).segment(8).round()) + * n(rand.range(0,12).segment(8)) * .scale("C:ritusen") - * .s("folkharp") + * .s("piano") */ export const scale = register('scale', function (scale, pat) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61e3a8b23..37a7bf2db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -476,6 +476,12 @@ importers: specifier: ^1.1.0 version: 1.1.0(@vitest/ui@1.1.0) + tools/dbpatch: + dependencies: + csv: + specifier: ^6.3.6 + version: 6.3.6 + website: dependencies: '@algolia/client-search': @@ -6223,6 +6229,28 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false + /csv-generate@4.3.1: + resolution: {integrity: sha512-7YeeJq+44/I/O5N2sr2qBMcHZXhpfe38eh7DOFxyMtYO+Pir7kIfgFkW5MPksqKqqR6+/wX7UGoZm1Ot11151w==} + dev: false + + /csv-parse@5.5.3: + resolution: {integrity: sha512-v0KW6C0qlZzoGjk6u5tLmVfyZxNgPGXZsWTXshpAgKVGmGXzaVWGdlCFxNx5iuzcXT/oJN1HHM9DZKwtAtYa+A==} + dev: false + + /csv-stringify@6.4.5: + resolution: {integrity: sha512-SPu1Vnh8U5EnzpNOi1NDBL5jU5Rx7DVHr15DNg9LXDTAbQlAVAmEbVt16wZvEW9Fu9Qt4Ji8kmeCJ2B1+4rFTQ==} + dev: false + + /csv@6.3.6: + resolution: {integrity: sha512-jsEsX2HhGp7xiwrJu5srQavKsh+HUJcCi78Ar3m4jlmFKRoTkkMy7ZZPP+LnQChmaztW+uj44oyfMb59daAs/Q==} + engines: {node: '>= 0.1.90'} + dependencies: + csv-generate: 4.3.1 + csv-parse: 5.5.3 + csv-stringify: 6.4.5 + stream-transform: 3.3.0 + dev: false + /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} @@ -12474,6 +12502,10 @@ packages: transitivePeerDependencies: - supports-color + /stream-transform@3.3.0: + resolution: {integrity: sha512-pG1NeDdmErNYKtvTpFayrEueAmL0xVU5wd22V7InGnatl4Ocq3HY7dcXIKj629kXvYQvglCC7CeDIGAlx1RNGA==} + dev: false + /stream-via@1.0.4: resolution: {integrity: sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==} engines: {node: '>=0.10.0'} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ea7b6879f..ef8cc99d5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,4 +2,5 @@ packages: # all packages in direct subdirs of packages/ - "packages/*" - "examples/*" + - "tools/dbpatch" - "website/" diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 7537c2ecd..0c28f04b9 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -635,10 +635,38 @@ exports[`runs examples > example "addVoicings" example index 0 1`] = ` exports[`runs examples > example "adsr" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c3 s:sawtooth cutoff:600 ]", - "[ 1/1 → 2/1 | note:bb2 s:sawtooth cutoff:600 ]", - "[ 2/1 → 3/1 | note:f3 s:sawtooth cutoff:600 ]", - "[ 3/1 → 4/1 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 0/1 → 1/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 1/8 → 1/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 1/4 → 3/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 3/8 → 1/2 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 1/2 → 5/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 5/8 → 3/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 3/4 → 7/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 7/8 → 1/1 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 1/1 → 9/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 9/8 → 5/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 5/4 → 11/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 11/8 → 3/2 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 3/2 → 13/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 13/8 → 7/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 7/4 → 15/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 15/8 → 2/1 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 2/1 → 17/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 17/8 → 9/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 9/4 → 19/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 19/8 → 5/2 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 5/2 → 21/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 21/8 → 11/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 11/4 → 23/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 23/8 → 3/1 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 3/1 → 25/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 25/8 → 13/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 13/4 → 27/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 27/8 → 7/2 | note:eb3 s:sawtooth cutoff:600 ]", + "[ 7/2 → 29/8 | note:c3 s:sawtooth cutoff:600 ]", + "[ 29/8 → 15/4 | note:bb2 s:sawtooth cutoff:600 ]", + "[ 15/4 → 31/8 | note:f3 s:sawtooth cutoff:600 ]", + "[ 31/8 → 4/1 | note:eb3 s:sawtooth cutoff:600 ]", ] `; @@ -833,18 +861,30 @@ exports[`runs examples > example "apply" example index 0 1`] = ` exports[`runs examples > example "arp" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c ]", - "[ 1/2 → 1/1 | note:c ]", - "[ 1/2 → 1/1 | note:g ]", - "[ 1/1 → 3/2 | note:eb ]", - "[ 3/2 → 2/1 | note:c ]", - "[ 3/2 → 2/1 | note:g ]", - "[ 2/1 → 5/2 | note:c ]", - "[ 5/2 → 3/1 | note:c ]", - "[ 5/2 → 3/1 | note:g ]", - "[ 3/1 → 7/2 | note:eb ]", - "[ 7/2 → 4/1 | note:c ]", - "[ 7/2 → 4/1 | note:g ]", + "[ 0/1 → 1/4 | note:c ]", + "[ 1/4 → 1/2 | note:c ]", + "[ 1/4 → 1/2 | note:g ]", + "[ 1/2 → 3/4 | note:eb ]", + "[ 3/4 → 1/1 | note:c ]", + "[ 3/4 → 1/1 | note:g ]", + "[ 1/1 → 5/4 | note:c ]", + "[ 5/4 → 3/2 | note:c ]", + "[ 5/4 → 3/2 | note:g ]", + "[ 3/2 → 7/4 | note:eb ]", + "[ 7/4 → 2/1 | note:c ]", + "[ 7/4 → 2/1 | note:g ]", + "[ 2/1 → 9/4 | note:c ]", + "[ 9/4 → 5/2 | note:c ]", + "[ 9/4 → 5/2 | note:ab ]", + "[ 5/2 → 11/4 | note:f ]", + "[ 11/4 → 3/1 | note:c ]", + "[ 11/4 → 3/1 | note:ab ]", + "[ 3/1 → 13/4 | note:d ]", + "[ 13/4 → 7/2 | note:d ]", + "[ 13/4 → 7/2 | note:ab ]", + "[ 7/2 → 15/4 | note:f ]", + "[ 15/4 → 4/1 | note:d ]", + "[ 15/4 → 4/1 | note:ab ]", ] `; @@ -876,134 +916,250 @@ exports[`runs examples > example "arrange" example index 0 1`] = ` exports[`runs examples > example "attack" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c3 attack:0 ]", - "[ 1/2 → 1/1 | note:e3 attack:0 ]", - "[ 1/1 → 3/2 | note:c3 attack:0.1 ]", - "[ 3/2 → 2/1 | note:e3 attack:0.1 ]", - "[ 2/1 → 5/2 | note:c3 attack:0.5 ]", - "[ 5/2 → 3/1 | note:e3 attack:0.5 ]", - "[ 3/1 → 7/2 | note:c3 attack:0 ]", - "[ 7/2 → 4/1 | note:e3 attack:0 ]", + "[ 0/1 → 1/4 | note:c3 attack:0 ]", + "[ 1/4 → 1/2 | note:e3 attack:0 ]", + "[ 1/2 → 3/4 | note:f3 attack:0 ]", + "[ 3/4 → 1/1 | note:g3 attack:0 ]", + "[ 1/1 → 5/4 | note:c3 attack:0.1 ]", + "[ 5/4 → 3/2 | note:e3 attack:0.1 ]", + "[ 3/2 → 7/4 | note:f3 attack:0.1 ]", + "[ 7/4 → 2/1 | note:g3 attack:0.1 ]", + "[ 2/1 → 9/4 | note:c3 attack:0.5 ]", + "[ 9/4 → 5/2 | note:e3 attack:0.5 ]", + "[ 5/2 → 11/4 | note:f3 attack:0.5 ]", + "[ 11/4 → 3/1 | note:g3 attack:0.5 ]", + "[ 3/1 → 13/4 | note:c3 attack:0 ]", + "[ 13/4 → 7/2 | note:e3 attack:0 ]", + "[ 7/2 → 15/4 | note:f3 attack:0 ]", + "[ 15/4 → 4/1 | note:g3 attack:0 ]", ] `; exports[`runs examples > example "bank" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd bank:RolandTR909 ]", - "[ 1/2 → 1/1 | s:sd bank:RolandTR909 ]", - "[ 1/1 → 3/2 | s:bd bank:RolandTR909 ]", - "[ 3/2 → 2/1 | s:sd bank:RolandTR909 ]", - "[ 2/1 → 5/2 | s:bd bank:RolandTR909 ]", - "[ 5/2 → 3/1 | s:sd bank:RolandTR909 ]", - "[ 3/1 → 7/2 | s:bd bank:RolandTR909 ]", - "[ 7/2 → 4/1 | s:sd bank:RolandTR909 ]", + "[ 0/1 → 1/4 | s:bd bank:RolandTR909 ]", + "[ 1/4 → 1/2 | s:sd bank:RolandTR909 ]", + "[ 5/8 → 3/4 | s:bd bank:RolandTR909 ]", + "[ 3/4 → 1/1 | s:sd bank:RolandTR909 ]", + "[ 1/1 → 5/4 | s:bd bank:RolandTR909 ]", + "[ 5/4 → 3/2 | s:sd bank:RolandTR909 ]", + "[ 13/8 → 7/4 | s:bd bank:RolandTR909 ]", + "[ 7/4 → 2/1 | s:sd bank:RolandTR909 ]", + "[ 2/1 → 9/4 | s:bd bank:RolandTR909 ]", + "[ 9/4 → 5/2 | s:sd bank:RolandTR909 ]", + "[ 21/8 → 11/4 | s:bd bank:RolandTR909 ]", + "[ 11/4 → 3/1 | s:sd bank:RolandTR909 ]", + "[ 3/1 → 13/4 | s:bd bank:RolandTR909 ]", + "[ 13/4 → 7/2 | s:sd bank:RolandTR909 ]", + "[ 29/8 → 15/4 | s:bd bank:RolandTR909 ]", + "[ 15/4 → 4/1 | s:sd bank:RolandTR909 ]", ] `; exports[`runs examples > example "begin" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | s:rave begin:0 ]", - "[ 1/1 → 2/1 | s:rave begin:0.25 ]", - "[ 2/1 → 3/1 | s:rave begin:0.5 ]", - "[ 3/1 → 4/1 | s:rave begin:0.75 ]", + "[ 0/1 → 1/2 | s:rave begin:0 ]", + "[ 1/2 → 1/1 | s:rave begin:0.25 ]", + "[ 1/1 → 3/2 | s:rave begin:0.5 ]", + "[ 3/2 → 2/1 | s:rave begin:0.75 ]", + "[ 2/1 → 5/2 | s:rave begin:0 ]", + "[ 5/2 → 3/1 | s:rave begin:0.25 ]", + "[ 3/1 → 7/2 | s:rave begin:0.5 ]", + "[ 7/2 → 4/1 | s:rave begin:0.75 ]", ] `; exports[`runs examples > example "bpattack" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", ] `; exports[`runs examples > example "bpdecay" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0.2 bpenv:4 ]", ] `; exports[`runs examples > example "bpenv" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth bandf:500 bpattack:0.5 bpenv:4 ]", ] `; exports[`runs examples > example "bpf" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | s:hh bandf:1000 ]", - "[ 0/1 → 1/2 | s:bd bandf:1000 ]", - "[ 1/3 → 2/3 | s:hh bandf:1000 ]", - "[ 1/2 → 1/1 | s:sd bandf:1000 ]", - "[ 2/3 → 1/1 | s:hh bandf:1000 ]", - "[ 1/1 → 4/3 | s:hh bandf:2000 ]", - "[ 1/1 → 3/2 | s:bd bandf:2000 ]", - "[ 4/3 → 5/3 | s:hh bandf:2000 ]", - "[ 3/2 → 2/1 | s:sd bandf:2000 ]", - "[ 5/3 → 2/1 | s:hh bandf:2000 ]", - "[ 2/1 → 7/3 | s:hh bandf:4000 ]", - "[ 2/1 → 5/2 | s:bd bandf:4000 ]", - "[ 7/3 → 8/3 | s:hh bandf:4000 ]", - "[ 5/2 → 3/1 | s:sd bandf:4000 ]", - "[ 8/3 → 3/1 | s:hh bandf:4000 ]", - "[ 3/1 → 10/3 | s:hh bandf:8000 ]", - "[ 3/1 → 7/2 | s:bd bandf:8000 ]", - "[ 10/3 → 11/3 | s:hh bandf:8000 ]", - "[ 7/2 → 4/1 | s:sd bandf:8000 ]", - "[ 11/3 → 4/1 | s:hh bandf:8000 ]", + "[ 0/1 → 1/6 | s:hh bandf:1000 ]", + "[ 0/1 → 1/4 | s:bd bandf:1000 ]", + "[ 1/6 → 1/3 | s:hh bandf:1000 ]", + "[ 1/4 → 1/2 | s:sd bandf:1000 ]", + "[ 1/3 → 1/2 | s:hh bandf:1000 ]", + "[ 1/2 → 2/3 | s:hh bandf:1000 ]", + "[ 5/8 → 3/4 | s:bd bandf:1000 ]", + "[ 2/3 → 5/6 | s:hh bandf:1000 ]", + "[ 3/4 → 1/1 | s:sd bandf:1000 ]", + "[ 5/6 → 1/1 | s:hh bandf:1000 ]", + "[ 1/1 → 7/6 | s:hh bandf:2000 ]", + "[ 1/1 → 5/4 | s:bd bandf:2000 ]", + "[ 7/6 → 4/3 | s:hh bandf:2000 ]", + "[ 5/4 → 3/2 | s:sd bandf:2000 ]", + "[ 4/3 → 3/2 | s:hh bandf:2000 ]", + "[ 3/2 → 5/3 | s:hh bandf:2000 ]", + "[ 13/8 → 7/4 | s:bd bandf:2000 ]", + "[ 5/3 → 11/6 | s:hh bandf:2000 ]", + "[ 7/4 → 2/1 | s:sd bandf:2000 ]", + "[ 11/6 → 2/1 | s:hh bandf:2000 ]", + "[ 2/1 → 13/6 | s:hh bandf:4000 ]", + "[ 2/1 → 9/4 | s:bd bandf:4000 ]", + "[ 13/6 → 7/3 | s:hh bandf:4000 ]", + "[ 9/4 → 5/2 | s:sd bandf:4000 ]", + "[ 7/3 → 5/2 | s:hh bandf:4000 ]", + "[ 5/2 → 8/3 | s:hh bandf:4000 ]", + "[ 21/8 → 11/4 | s:bd bandf:4000 ]", + "[ 8/3 → 17/6 | s:hh bandf:4000 ]", + "[ 11/4 → 3/1 | s:sd bandf:4000 ]", + "[ 17/6 → 3/1 | s:hh bandf:4000 ]", + "[ 3/1 → 19/6 | s:hh bandf:8000 ]", + "[ 3/1 → 13/4 | s:bd bandf:8000 ]", + "[ 19/6 → 10/3 | s:hh bandf:8000 ]", + "[ 13/4 → 7/2 | s:sd bandf:8000 ]", + "[ 10/3 → 7/2 | s:hh bandf:8000 ]", + "[ 7/2 → 11/3 | s:hh bandf:8000 ]", + "[ 29/8 → 15/4 | s:bd bandf:8000 ]", + "[ 11/3 → 23/6 | s:hh bandf:8000 ]", + "[ 15/4 → 4/1 | s:sd bandf:8000 ]", + "[ 23/6 → 4/1 | s:hh bandf:8000 ]", ] `; exports[`runs examples > example "bpq" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd bandf:500 bandq:0 ]", - "[ 1/2 → 1/1 | s:sd bandf:500 bandq:0 ]", - "[ 1/1 → 3/2 | s:bd bandf:500 bandq:1 ]", - "[ 3/2 → 2/1 | s:sd bandf:500 bandq:1 ]", - "[ 2/1 → 5/2 | s:bd bandf:500 bandq:2 ]", - "[ 5/2 → 3/1 | s:sd bandf:500 bandq:2 ]", - "[ 3/1 → 7/2 | s:bd bandf:500 bandq:3 ]", - "[ 7/2 → 4/1 | s:sd bandf:500 bandq:3 ]", + "[ 0/1 → 1/4 | s:bd bandf:500 bandq:0 ]", + "[ 1/4 → 1/2 | s:sd bandf:500 bandq:0 ]", + "[ 5/8 → 3/4 | s:bd bandf:500 bandq:0 ]", + "[ 3/4 → 1/1 | s:sd bandf:500 bandq:0 ]", + "[ 1/1 → 5/4 | s:bd bandf:500 bandq:1 ]", + "[ 5/4 → 3/2 | s:sd bandf:500 bandq:1 ]", + "[ 13/8 → 7/4 | s:bd bandf:500 bandq:1 ]", + "[ 7/4 → 2/1 | s:sd bandf:500 bandq:1 ]", + "[ 2/1 → 9/4 | s:bd bandf:500 bandq:2 ]", + "[ 9/4 → 5/2 | s:sd bandf:500 bandq:2 ]", + "[ 21/8 → 11/4 | s:bd bandf:500 bandq:2 ]", + "[ 11/4 → 3/1 | s:sd bandf:500 bandq:2 ]", + "[ 3/1 → 13/4 | s:bd bandf:500 bandq:3 ]", + "[ 13/4 → 7/2 | s:sd bandf:500 bandq:3 ]", + "[ 29/8 → 15/4 | s:bd bandf:500 bandq:3 ]", + "[ 15/4 → 4/1 | s:sd bandf:500 bandq:3 ]", ] `; exports[`runs examples > example "bprelease" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth clip:0.5 bandf:500 bpenv:4 bprelease:0.5 release:0.5 ]", ] `; exports[`runs examples > example "bpsustain" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth bandf:500 bpdecay:0.5 bpsustain:0 bpenv:4 ]", ] `; exports[`runs examples > example "cat" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:hh ]", - "[ 1/2 → 1/1 | s:hh ]", - "[ 1/1 → 9/8 | note:c2 ]", - "[ 11/8 → 3/2 | note:c2 ]", - "[ 7/4 → 15/8 | note:c2 ]", - "[ 2/1 → 5/2 | s:hh ]", - "[ 5/2 → 3/1 | s:hh ]", - "[ 3/1 → 25/8 | note:c2 ]", - "[ 27/8 → 7/2 | note:c2 ]", - "[ 15/4 → 31/8 | note:c2 ]", + "[ 0/1 → 1/4 | s:hh ]", + "[ 1/4 → 1/2 | s:hh ]", + "[ 1/2 → 3/4 | s:hh ]", + "[ 3/4 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | note:c4 ]", + "[ 5/4 → 11/8 | note:c4 ]", + "[ 11/8 → 3/2 | note:c4 ]", + "[ 13/8 → 7/4 | note:c4 ]", + "[ 7/4 → 15/8 | note:c4 ]", + "[ 2/1 → 9/4 | s:hh ]", + "[ 9/4 → 5/2 | s:hh ]", + "[ 5/2 → 11/4 | s:hh ]", + "[ 11/4 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | note:c4 ]", + "[ 13/4 → 27/8 | note:c4 ]", + "[ 27/8 → 7/2 | note:c4 ]", + "[ 29/8 → 15/4 | note:c4 ]", + "[ 15/4 → 31/8 | note:c4 ]", ] `; @@ -1065,43 +1221,75 @@ exports[`runs examples > example "channels" example index 0 1`] = ` exports[`runs examples > example "chooseCycles" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:bd ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 3/4 | s:hh ]", - "[ 3/4 → 1/1 | s:hh ]", - "[ 1/1 → 5/4 | s:bd ]", - "[ 5/4 → 3/2 | s:bd ]", - "[ 3/2 → 7/4 | s:sd ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:hh ]", - "[ 11/4 → 3/1 | s:sd ]", - "[ 3/1 → 13/4 | s:hh ]", - "[ 13/4 → 7/2 | s:hh ]", - "[ 7/2 → 15/4 | s:sd ]", - "[ 15/4 → 4/1 | s:bd ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 11/8 → 3/2 | s:sd ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:sd ]", + "[ 15/8 → 2/1 | s:bd ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 17/8 → 9/4 | s:bd ]", + "[ 9/4 → 19/8 | s:sd ]", + "[ 19/8 → 5/2 | s:bd ]", + "[ 5/2 → 21/8 | s:bd ]", + "[ 21/8 → 11/4 | s:sd ]", + "[ 11/4 → 23/8 | s:sd ]", + "[ 23/8 → 3/1 | s:bd ]", + "[ 3/1 → 25/8 | s:bd ]", + "[ 25/8 → 13/4 | s:sd ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 27/8 → 7/2 | s:sd ]", + "[ 7/2 → 29/8 | s:hh ]", + "[ 29/8 → 15/4 | s:bd ]", + "[ 15/4 → 31/8 | s:sd ]", + "[ 31/8 → 4/1 | s:hh ]", ] `; exports[`runs examples > example "chooseCycles" example index 1 1`] = ` [ - "[ 0/1 → 1/4 | s:bd ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 3/4 | s:hh ]", - "[ 3/4 → 1/1 | s:hh ]", - "[ 1/1 → 5/4 | s:bd ]", - "[ 5/4 → 3/2 | s:bd ]", - "[ 3/2 → 7/4 | s:sd ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:hh ]", - "[ 11/4 → 3/1 | s:sd ]", - "[ 3/1 → 13/4 | s:hh ]", - "[ 13/4 → 7/2 | s:hh ]", - "[ 7/2 → 15/4 | s:sd ]", - "[ 15/4 → 4/1 | s:bd ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 11/8 → 3/2 | s:sd ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:sd ]", + "[ 15/8 → 2/1 | s:bd ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 17/8 → 9/4 | s:bd ]", + "[ 9/4 → 19/8 | s:sd ]", + "[ 19/8 → 5/2 | s:bd ]", + "[ 5/2 → 21/8 | s:bd ]", + "[ 21/8 → 11/4 | s:sd ]", + "[ 11/4 → 23/8 | s:sd ]", + "[ 23/8 → 3/1 | s:bd ]", + "[ 3/1 → 25/8 | s:bd ]", + "[ 25/8 → 13/4 | s:sd ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 27/8 → 7/2 | s:sd ]", + "[ 7/2 → 29/8 | s:hh ]", + "[ 29/8 → 15/4 | s:bd ]", + "[ 15/4 → 31/8 | s:sd ]", + "[ 31/8 → 4/1 | s:hh ]", ] `; @@ -1132,10 +1320,14 @@ exports[`runs examples > example "chooseWith" example index 0 1`] = ` exports[`runs examples > example "chop" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | s:rhodes begin:0.75 end:1 speed:0.25 unit:c ]", - "[ 1/1 → 2/1 | s:rhodes begin:0.5 end:0.75 speed:0.25 unit:c ]", - "[ 2/1 → 3/1 | s:rhodes begin:0.25 end:0.5 speed:0.25 unit:c ]", - "[ 3/1 → 4/1 | s:rhodes begin:0 end:0.25 speed:0.25 unit:c ]", + "[ 0/1 → 1/2 | s:rhodes begin:0.75 end:1 speed:0.25 unit:c ]", + "[ 1/2 → 1/1 | s:rhodes begin:0.5 end:0.75 speed:0.25 unit:c ]", + "[ 1/1 → 3/2 | s:rhodes begin:0.25 end:0.5 speed:0.25 unit:c ]", + "[ 3/2 → 2/1 | s:rhodes begin:0 end:0.25 speed:0.25 unit:c ]", + "[ 2/1 → 5/2 | s:rhodes begin:0.75 end:1 speed:0.25 unit:c ]", + "[ 5/2 → 3/1 | s:rhodes begin:0.5 end:0.75 speed:0.25 unit:c ]", + "[ 3/1 → 7/2 | s:rhodes begin:0.25 end:0.5 speed:0.25 unit:c ]", + "[ 7/2 → 4/1 | s:rhodes begin:0 end:0.25 speed:0.25 unit:c ]", ] `; @@ -1204,30 +1396,54 @@ exports[`runs examples > example "clip" example index 0 1`] = ` exports[`runs examples > example "coarse" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh coarse:1 ]", - "[ 0/1 → 1/2 | s:bd coarse:1 ]", - "[ 1/4 → 1/2 | s:hh coarse:1 ]", - "[ 1/2 → 3/4 | s:hh coarse:1 ]", - "[ 1/2 → 1/1 | s:sd coarse:1 ]", - "[ 3/4 → 1/1 | s:hh coarse:1 ]", - "[ 1/1 → 5/4 | s:hh coarse:4 ]", - "[ 1/1 → 3/2 | s:bd coarse:4 ]", - "[ 5/4 → 3/2 | s:hh coarse:4 ]", - "[ 3/2 → 7/4 | s:hh coarse:4 ]", - "[ 3/2 → 2/1 | s:sd coarse:4 ]", - "[ 7/4 → 2/1 | s:hh coarse:4 ]", - "[ 2/1 → 9/4 | s:hh coarse:8 ]", - "[ 2/1 → 5/2 | s:bd coarse:8 ]", - "[ 9/4 → 5/2 | s:hh coarse:8 ]", - "[ 5/2 → 11/4 | s:hh coarse:8 ]", - "[ 5/2 → 3/1 | s:sd coarse:8 ]", - "[ 11/4 → 3/1 | s:hh coarse:8 ]", - "[ 3/1 → 13/4 | s:hh coarse:16 ]", - "[ 3/1 → 7/2 | s:bd coarse:16 ]", - "[ 13/4 → 7/2 | s:hh coarse:16 ]", - "[ 7/2 → 15/4 | s:hh coarse:16 ]", - "[ 7/2 → 4/1 | s:sd coarse:16 ]", - "[ 15/4 → 4/1 | s:hh coarse:16 ]", + "[ 0/1 → 1/8 | s:hh coarse:1 ]", + "[ 0/1 → 1/4 | s:bd coarse:1 ]", + "[ 1/8 → 1/4 | s:hh coarse:1 ]", + "[ 1/4 → 3/8 | s:hh coarse:1 ]", + "[ 1/4 → 1/2 | s:sd coarse:1 ]", + "[ 3/8 → 1/2 | s:hh coarse:1 ]", + "[ 1/2 → 5/8 | s:hh coarse:1 ]", + "[ 5/8 → 3/4 | s:bd coarse:1 ]", + "[ 5/8 → 3/4 | s:hh coarse:1 ]", + "[ 3/4 → 7/8 | s:hh coarse:1 ]", + "[ 3/4 → 1/1 | s:sd coarse:1 ]", + "[ 7/8 → 1/1 | s:hh coarse:1 ]", + "[ 1/1 → 9/8 | s:hh coarse:4 ]", + "[ 1/1 → 5/4 | s:bd coarse:4 ]", + "[ 9/8 → 5/4 | s:hh coarse:4 ]", + "[ 5/4 → 11/8 | s:hh coarse:4 ]", + "[ 5/4 → 3/2 | s:sd coarse:4 ]", + "[ 11/8 → 3/2 | s:hh coarse:4 ]", + "[ 3/2 → 13/8 | s:hh coarse:4 ]", + "[ 13/8 → 7/4 | s:bd coarse:4 ]", + "[ 13/8 → 7/4 | s:hh coarse:4 ]", + "[ 7/4 → 15/8 | s:hh coarse:4 ]", + "[ 7/4 → 2/1 | s:sd coarse:4 ]", + "[ 15/8 → 2/1 | s:hh coarse:4 ]", + "[ 2/1 → 17/8 | s:hh coarse:8 ]", + "[ 2/1 → 9/4 | s:bd coarse:8 ]", + "[ 17/8 → 9/4 | s:hh coarse:8 ]", + "[ 9/4 → 19/8 | s:hh coarse:8 ]", + "[ 9/4 → 5/2 | s:sd coarse:8 ]", + "[ 19/8 → 5/2 | s:hh coarse:8 ]", + "[ 5/2 → 21/8 | s:hh coarse:8 ]", + "[ 21/8 → 11/4 | s:bd coarse:8 ]", + "[ 21/8 → 11/4 | s:hh coarse:8 ]", + "[ 11/4 → 23/8 | s:hh coarse:8 ]", + "[ 11/4 → 3/1 | s:sd coarse:8 ]", + "[ 23/8 → 3/1 | s:hh coarse:8 ]", + "[ 3/1 → 25/8 | s:hh coarse:16 ]", + "[ 3/1 → 13/4 | s:bd coarse:16 ]", + "[ 25/8 → 13/4 | s:hh coarse:16 ]", + "[ 13/4 → 27/8 | s:hh coarse:16 ]", + "[ 13/4 → 7/2 | s:sd coarse:16 ]", + "[ 27/8 → 7/2 | s:hh coarse:16 ]", + "[ 7/2 → 29/8 | s:hh coarse:16 ]", + "[ 29/8 → 15/4 | s:bd coarse:16 ]", + "[ 29/8 → 15/4 | s:hh coarse:16 ]", + "[ 15/4 → 31/8 | s:hh coarse:16 ]", + "[ 15/4 → 4/1 | s:sd coarse:16 ]", + "[ 31/8 → 4/1 | s:hh coarse:16 ]", ] `; @@ -1246,99 +1462,187 @@ exports[`runs examples > example "compress" example index 0 1`] = ` exports[`runs examples > example "compressor" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 0/1 → 1/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 1/4 → 1/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 1/2 → 3/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 1/2 → 1/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 3/4 → 1/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 1/1 → 5/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 1/1 → 3/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 5/4 → 3/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 3/2 → 7/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 3/2 → 2/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 7/4 → 2/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 2/1 → 9/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 2/1 → 5/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 9/4 → 5/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 5/2 → 11/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 5/2 → 3/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 11/4 → 3/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 3/1 → 13/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 3/1 → 7/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 13/4 → 7/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 7/2 → 15/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 7/2 → 4/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", - "[ 15/4 → 4/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 0/1 → 1/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 0/1 → 1/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/8 → 1/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/4 → 3/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/4 → 1/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/8 → 1/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/2 → 5/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 5/8 → 3/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 5/8 → 3/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/4 → 7/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/4 → 1/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 7/8 → 1/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/1 → 9/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 1/1 → 5/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 9/8 → 5/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 5/4 → 11/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 5/4 → 3/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 11/8 → 3/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/2 → 13/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 13/8 → 7/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 13/8 → 7/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 7/4 → 15/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 7/4 → 2/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 15/8 → 2/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 2/1 → 17/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 2/1 → 9/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 17/8 → 9/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 9/4 → 19/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 9/4 → 5/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 19/8 → 5/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 5/2 → 21/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 21/8 → 11/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 21/8 → 11/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 11/4 → 23/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 11/4 → 3/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 23/8 → 3/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/1 → 25/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 3/1 → 13/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 25/8 → 13/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 13/4 → 27/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 13/4 → 7/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 27/8 → 7/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 7/2 → 29/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 29/8 → 15/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 29/8 → 15/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 15/4 → 31/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 15/4 → 4/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", + "[ 31/8 → 4/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 ]", ] `; exports[`runs examples > example "cosine" example index 0 1`] = ` [ - "[ 0/1 → 1/8 | note:Eb4 ]", - "[ 0/1 → 1/8 | note:D5 ]", - "[ 1/8 → 1/4 | note:Ab4 ]", - "[ 1/8 → 1/4 | note:C5 ]", - "[ 1/4 → 3/8 | note:C5 ]", - "[ 1/4 → 3/8 | note:Ab4 ]", - "[ 3/8 → 1/2 | note:D5 ]", - "[ 3/8 → 1/2 | note:Eb4 ]", - "[ 1/2 → 5/8 | note:D5 ]", - "[ 1/2 → 5/8 | note:C4 ]", - "[ 5/8 → 3/4 | note:C5 ]", - "[ 5/8 → 3/4 | note:G3 ]", - "[ 3/4 → 7/8 | note:Ab4 ]", - "[ 3/4 → 7/8 | note:Eb3 ]", - "[ 7/8 → 1/1 | note:Eb4 ]", - "[ 7/8 → 1/1 | note:D3 ]", - "[ 1/1 → 9/8 | note:C4 ]", - "[ 1/1 → 9/8 | note:D3 ]", - "[ 9/8 → 5/4 | note:G3 ]", - "[ 9/8 → 5/4 | note:Eb3 ]", - "[ 5/4 → 11/8 | note:Eb3 ]", - "[ 5/4 → 11/8 | note:G3 ]", - "[ 11/8 → 3/2 | note:D3 ]", - "[ 11/8 → 3/2 | note:C4 ]", - "[ 3/2 → 13/8 | note:D3 ]", - "[ 3/2 → 13/8 | note:Eb4 ]", - "[ 13/8 → 7/4 | note:Eb3 ]", - "[ 13/8 → 7/4 | note:Ab4 ]", - "[ 7/4 → 15/8 | note:G3 ]", - "[ 7/4 → 15/8 | note:C5 ]", - "[ 15/8 → 2/1 | note:C4 ]", - "[ 15/8 → 2/1 | note:D5 ]", - "[ 2/1 → 17/8 | note:Eb4 ]", - "[ 2/1 → 17/8 | note:D5 ]", - "[ 17/8 → 9/4 | note:Ab4 ]", - "[ 17/8 → 9/4 | note:C5 ]", - "[ 9/4 → 19/8 | note:C5 ]", - "[ 9/4 → 19/8 | note:Ab4 ]", - "[ 19/8 → 5/2 | note:D5 ]", - "[ 19/8 → 5/2 | note:Eb4 ]", - "[ 5/2 → 21/8 | note:D5 ]", - "[ 5/2 → 21/8 | note:C4 ]", - "[ 21/8 → 11/4 | note:C5 ]", - "[ 21/8 → 11/4 | note:G3 ]", - "[ 11/4 → 23/8 | note:Ab4 ]", - "[ 11/4 → 23/8 | note:Eb3 ]", - "[ 23/8 → 3/1 | note:Eb4 ]", - "[ 23/8 → 3/1 | note:D3 ]", - "[ 3/1 → 25/8 | note:C4 ]", - "[ 3/1 → 25/8 | note:D3 ]", - "[ 25/8 → 13/4 | note:G3 ]", - "[ 25/8 → 13/4 | note:Eb3 ]", - "[ 13/4 → 27/8 | note:Eb3 ]", - "[ 13/4 → 27/8 | note:G3 ]", - "[ 27/8 → 7/2 | note:D3 ]", - "[ 27/8 → 7/2 | note:C4 ]", - "[ 7/2 → 29/8 | note:D3 ]", - "[ 7/2 → 29/8 | note:Eb4 ]", - "[ 29/8 → 15/4 | note:Eb3 ]", - "[ 29/8 → 15/4 | note:Ab4 ]", - "[ 15/4 → 31/8 | note:G3 ]", - "[ 15/4 → 31/8 | note:C5 ]", - "[ 31/8 → 4/1 | note:C4 ]", - "[ 31/8 → 4/1 | note:D5 ]", + "[ 0/1 → 1/16 | note:Eb4 ]", + "[ 0/1 → 1/16 | note:D5 ]", + "[ 1/16 → 1/8 | note:Ab4 ]", + "[ 1/16 → 1/8 | note:C5 ]", + "[ 1/8 → 3/16 | note:C5 ]", + "[ 1/8 → 3/16 | note:Ab4 ]", + "[ 3/16 → 1/4 | note:D5 ]", + "[ 3/16 → 1/4 | note:Eb4 ]", + "[ 1/4 → 5/16 | note:D5 ]", + "[ 1/4 → 5/16 | note:C4 ]", + "[ 5/16 → 3/8 | note:C5 ]", + "[ 5/16 → 3/8 | note:G3 ]", + "[ 3/8 → 7/16 | note:Ab4 ]", + "[ 3/8 → 7/16 | note:Eb3 ]", + "[ 7/16 → 1/2 | note:Eb4 ]", + "[ 7/16 → 1/2 | note:D3 ]", + "[ 1/2 → 9/16 | note:C4 ]", + "[ 1/2 → 9/16 | note:D3 ]", + "[ 9/16 → 5/8 | note:G3 ]", + "[ 9/16 → 5/8 | note:Eb3 ]", + "[ 5/8 → 11/16 | note:Eb3 ]", + "[ 5/8 → 11/16 | note:G3 ]", + "[ 11/16 → 3/4 | note:D3 ]", + "[ 11/16 → 3/4 | note:C4 ]", + "[ 3/4 → 13/16 | note:D3 ]", + "[ 3/4 → 13/16 | note:Eb4 ]", + "[ 13/16 → 7/8 | note:Eb3 ]", + "[ 13/16 → 7/8 | note:Ab4 ]", + "[ 7/8 → 15/16 | note:G3 ]", + "[ 7/8 → 15/16 | note:C5 ]", + "[ 15/16 → 1/1 | note:C4 ]", + "[ 15/16 → 1/1 | note:D5 ]", + "[ 1/1 → 17/16 | note:Eb4 ]", + "[ 1/1 → 17/16 | note:D5 ]", + "[ 17/16 → 9/8 | note:Ab4 ]", + "[ 17/16 → 9/8 | note:C5 ]", + "[ 9/8 → 19/16 | note:C5 ]", + "[ 9/8 → 19/16 | note:Ab4 ]", + "[ 19/16 → 5/4 | note:D5 ]", + "[ 19/16 → 5/4 | note:Eb4 ]", + "[ 5/4 → 21/16 | note:D5 ]", + "[ 5/4 → 21/16 | note:C4 ]", + "[ 21/16 → 11/8 | note:C5 ]", + "[ 21/16 → 11/8 | note:G3 ]", + "[ 11/8 → 23/16 | note:Ab4 ]", + "[ 11/8 → 23/16 | note:Eb3 ]", + "[ 23/16 → 3/2 | note:Eb4 ]", + "[ 23/16 → 3/2 | note:D3 ]", + "[ 3/2 → 25/16 | note:C4 ]", + "[ 3/2 → 25/16 | note:D3 ]", + "[ 25/16 → 13/8 | note:G3 ]", + "[ 25/16 → 13/8 | note:Eb3 ]", + "[ 13/8 → 27/16 | note:Eb3 ]", + "[ 13/8 → 27/16 | note:G3 ]", + "[ 27/16 → 7/4 | note:D3 ]", + "[ 27/16 → 7/4 | note:C4 ]", + "[ 7/4 → 29/16 | note:D3 ]", + "[ 7/4 → 29/16 | note:Eb4 ]", + "[ 29/16 → 15/8 | note:Eb3 ]", + "[ 29/16 → 15/8 | note:Ab4 ]", + "[ 15/8 → 31/16 | note:G3 ]", + "[ 15/8 → 31/16 | note:C5 ]", + "[ 31/16 → 2/1 | note:C4 ]", + "[ 31/16 → 2/1 | note:D5 ]", + "[ 2/1 → 33/16 | note:Eb4 ]", + "[ 2/1 → 33/16 | note:D5 ]", + "[ 33/16 → 17/8 | note:Ab4 ]", + "[ 33/16 → 17/8 | note:C5 ]", + "[ 17/8 → 35/16 | note:C5 ]", + "[ 17/8 → 35/16 | note:Ab4 ]", + "[ 35/16 → 9/4 | note:D5 ]", + "[ 35/16 → 9/4 | note:Eb4 ]", + "[ 9/4 → 37/16 | note:D5 ]", + "[ 9/4 → 37/16 | note:C4 ]", + "[ 37/16 → 19/8 | note:C5 ]", + "[ 37/16 → 19/8 | note:G3 ]", + "[ 19/8 → 39/16 | note:Ab4 ]", + "[ 19/8 → 39/16 | note:Eb3 ]", + "[ 39/16 → 5/2 | note:Eb4 ]", + "[ 39/16 → 5/2 | note:D3 ]", + "[ 5/2 → 41/16 | note:C4 ]", + "[ 5/2 → 41/16 | note:D3 ]", + "[ 41/16 → 21/8 | note:G3 ]", + "[ 41/16 → 21/8 | note:Eb3 ]", + "[ 21/8 → 43/16 | note:Eb3 ]", + "[ 21/8 → 43/16 | note:G3 ]", + "[ 43/16 → 11/4 | note:D3 ]", + "[ 43/16 → 11/4 | note:C4 ]", + "[ 11/4 → 45/16 | note:D3 ]", + "[ 11/4 → 45/16 | note:Eb4 ]", + "[ 45/16 → 23/8 | note:Eb3 ]", + "[ 45/16 → 23/8 | note:Ab4 ]", + "[ 23/8 → 47/16 | note:G3 ]", + "[ 23/8 → 47/16 | note:C5 ]", + "[ 47/16 → 3/1 | note:C4 ]", + "[ 47/16 → 3/1 | note:D5 ]", + "[ 3/1 → 49/16 | note:Eb4 ]", + "[ 3/1 → 49/16 | note:D5 ]", + "[ 49/16 → 25/8 | note:Ab4 ]", + "[ 49/16 → 25/8 | note:C5 ]", + "[ 25/8 → 51/16 | note:C5 ]", + "[ 25/8 → 51/16 | note:Ab4 ]", + "[ 51/16 → 13/4 | note:D5 ]", + "[ 51/16 → 13/4 | note:Eb4 ]", + "[ 13/4 → 53/16 | note:D5 ]", + "[ 13/4 → 53/16 | note:C4 ]", + "[ 53/16 → 27/8 | note:C5 ]", + "[ 53/16 → 27/8 | note:G3 ]", + "[ 27/8 → 55/16 | note:Ab4 ]", + "[ 27/8 → 55/16 | note:Eb3 ]", + "[ 55/16 → 7/2 | note:Eb4 ]", + "[ 55/16 → 7/2 | note:D3 ]", + "[ 7/2 → 57/16 | note:C4 ]", + "[ 7/2 → 57/16 | note:D3 ]", + "[ 57/16 → 29/8 | note:G3 ]", + "[ 57/16 → 29/8 | note:Eb3 ]", + "[ 29/8 → 59/16 | note:Eb3 ]", + "[ 29/8 → 59/16 | note:G3 ]", + "[ 59/16 → 15/4 | note:D3 ]", + "[ 59/16 → 15/4 | note:C4 ]", + "[ 15/4 → 61/16 | note:D3 ]", + "[ 15/4 → 61/16 | note:Eb4 ]", + "[ 61/16 → 31/8 | note:Eb3 ]", + "[ 61/16 → 31/8 | note:Ab4 ]", + "[ 31/8 → 63/16 | note:G3 ]", + "[ 31/8 → 63/16 | note:C5 ]", + "[ 63/16 → 4/1 | note:C4 ]", + "[ 63/16 → 4/1 | note:D5 ]", ] `; @@ -1406,35 +1710,59 @@ exports[`runs examples > example "crush" example index 0 1`] = ` exports[`runs examples > example "cut" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:rd cut:1 ]", - "[ 1/4 → 1/2 | s:rd cut:1 ]", - "[ 1/2 → 3/4 | s:rd cut:1 ]", - "[ 3/4 → 1/1 | s:rd cut:1 ]", - "[ 1/1 → 5/4 | s:rd cut:1 ]", - "[ 5/4 → 3/2 | s:rd cut:1 ]", - "[ 3/2 → 7/4 | s:rd cut:1 ]", - "[ 7/4 → 2/1 | s:rd cut:1 ]", - "[ 2/1 → 9/4 | s:rd cut:1 ]", - "[ 9/4 → 5/2 | s:rd cut:1 ]", - "[ 5/2 → 11/4 | s:rd cut:1 ]", - "[ 11/4 → 3/1 | s:rd cut:1 ]", - "[ 3/1 → 13/4 | s:rd cut:1 ]", - "[ 13/4 → 7/2 | s:rd cut:1 ]", - "[ 7/2 → 15/4 | s:rd cut:1 ]", - "[ 15/4 → 4/1 | s:rd cut:1 ]", + "[ 0/1 → 1/8 | s:oh cut:1 ]", + "[ 1/8 → 1/4 | s:hh cut:1 ]", + "[ 1/4 → 3/8 | s:oh cut:1 ]", + "[ 3/8 → 1/2 | s:hh cut:1 ]", + "[ 1/2 → 5/8 | s:oh cut:1 ]", + "[ 5/8 → 3/4 | s:hh cut:1 ]", + "[ 3/4 → 7/8 | s:oh cut:1 ]", + "[ 7/8 → 1/1 | s:hh cut:1 ]", + "[ 1/1 → 9/8 | s:oh cut:1 ]", + "[ 9/8 → 5/4 | s:hh cut:1 ]", + "[ 5/4 → 11/8 | s:oh cut:1 ]", + "[ 11/8 → 3/2 | s:hh cut:1 ]", + "[ 3/2 → 13/8 | s:oh cut:1 ]", + "[ 13/8 → 7/4 | s:hh cut:1 ]", + "[ 7/4 → 15/8 | s:oh cut:1 ]", + "[ 15/8 → 2/1 | s:hh cut:1 ]", + "[ 2/1 → 17/8 | s:oh cut:1 ]", + "[ 17/8 → 9/4 | s:hh cut:1 ]", + "[ 9/4 → 19/8 | s:oh cut:1 ]", + "[ 19/8 → 5/2 | s:hh cut:1 ]", + "[ 5/2 → 21/8 | s:oh cut:1 ]", + "[ 21/8 → 11/4 | s:hh cut:1 ]", + "[ 11/4 → 23/8 | s:oh cut:1 ]", + "[ 23/8 → 3/1 | s:hh cut:1 ]", + "[ 3/1 → 25/8 | s:oh cut:1 ]", + "[ 25/8 → 13/4 | s:hh cut:1 ]", + "[ 13/4 → 27/8 | s:oh cut:1 ]", + "[ 27/8 → 7/2 | s:hh cut:1 ]", + "[ 7/2 → 29/8 | s:oh cut:1 ]", + "[ 29/8 → 15/4 | s:hh cut:1 ]", + "[ 15/4 → 31/8 | s:oh cut:1 ]", + "[ 31/8 → 4/1 | s:hh cut:1 ]", ] `; exports[`runs examples > example "decay" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c3 decay:0.1 sustain:0 ]", - "[ 1/2 → 1/1 | note:e3 decay:0.1 sustain:0 ]", - "[ 1/1 → 3/2 | note:c3 decay:0.2 sustain:0 ]", - "[ 3/2 → 2/1 | note:e3 decay:0.2 sustain:0 ]", - "[ 2/1 → 5/2 | note:c3 decay:0.3 sustain:0 ]", - "[ 5/2 → 3/1 | note:e3 decay:0.3 sustain:0 ]", - "[ 3/1 → 7/2 | note:c3 decay:0.4 sustain:0 ]", - "[ 7/2 → 4/1 | note:e3 decay:0.4 sustain:0 ]", + "[ 0/1 → 1/4 | note:c3 decay:0.1 sustain:0 ]", + "[ 1/4 → 1/2 | note:e3 decay:0.1 sustain:0 ]", + "[ 1/2 → 3/4 | note:f3 decay:0.1 sustain:0 ]", + "[ 3/4 → 1/1 | note:g3 decay:0.1 sustain:0 ]", + "[ 1/1 → 5/4 | note:c3 decay:0.2 sustain:0 ]", + "[ 5/4 → 3/2 | note:e3 decay:0.2 sustain:0 ]", + "[ 3/2 → 7/4 | note:f3 decay:0.2 sustain:0 ]", + "[ 7/4 → 2/1 | note:g3 decay:0.2 sustain:0 ]", + "[ 2/1 → 9/4 | note:c3 decay:0.3 sustain:0 ]", + "[ 9/4 → 5/2 | note:e3 decay:0.3 sustain:0 ]", + "[ 5/2 → 11/4 | note:f3 decay:0.3 sustain:0 ]", + "[ 11/4 → 3/1 | note:g3 decay:0.3 sustain:0 ]", + "[ 3/1 → 13/4 | note:c3 decay:0.4 sustain:0 ]", + "[ 13/4 → 7/2 | note:e3 decay:0.4 sustain:0 ]", + "[ 7/2 → 15/4 | note:f3 decay:0.4 sustain:0 ]", + "[ 15/4 → 4/1 | note:g3 decay:0.4 sustain:0 ]", ] `; @@ -1542,10 +1870,14 @@ exports[`runs examples > example "degradeBy" example index 1 1`] = ` exports[`runs examples > example "delay" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | s:bd delay:0 ]", - "[ 1/1 → 2/1 | s:bd delay:0.25 ]", - "[ 2/1 → 3/1 | s:bd delay:0.5 ]", - "[ 3/1 → 4/1 | s:bd delay:1 ]", + "[ 0/1 → 1/2 | s:bd delay:0 ]", + "[ 1/2 → 1/1 | s:bd delay:0 ]", + "[ 1/1 → 3/2 | s:bd delay:0.25 ]", + "[ 3/2 → 2/1 | s:bd delay:0.25 ]", + "[ 2/1 → 5/2 | s:bd delay:0.5 ]", + "[ 5/2 → 3/1 | s:bd delay:0.5 ]", + "[ 3/1 → 7/2 | s:bd delay:1 ]", + "[ 7/2 → 4/1 | s:bd delay:1 ]", ] `; @@ -1564,19 +1896,23 @@ exports[`runs examples > example "delay" example index 1 1`] = ` exports[`runs examples > example "delayfeedback" example index 0 1`] = ` [ - "[ (0/1 → 1/1) ⇝ 2/1 | s:bd delay:0.25 delayfeedback:0.25 ]", - "[ 0/1 ⇜ (1/1 → 2/1) | s:bd delay:0.25 delayfeedback:0.25 ]", - "[ (2/1 → 3/1) ⇝ 4/1 | s:bd delay:0.25 delayfeedback:0.5 ]", - "[ 2/1 ⇜ (3/1 → 4/1) | s:bd delay:0.25 delayfeedback:0.5 ]", + "[ 0/1 → 1/1 | s:bd delay:0.25 delayfeedback:0.25 ]", + "[ 1/1 → 2/1 | s:bd delay:0.25 delayfeedback:0.5 ]", + "[ 2/1 → 3/1 | s:bd delay:0.25 delayfeedback:0.75 ]", + "[ 3/1 → 4/1 | s:bd delay:0.25 delayfeedback:1 ]", ] `; exports[`runs examples > example "delaytime" example index 0 1`] = ` [ - "[ (0/1 → 1/1) ⇝ 2/1 | s:bd delay:0.25 delaytime:0.125 ]", - "[ 0/1 ⇜ (1/1 → 2/1) | s:bd delay:0.25 delaytime:0.125 ]", - "[ (2/1 → 3/1) ⇝ 4/1 | s:bd delay:0.25 delaytime:0.25 ]", - "[ 2/1 ⇜ (3/1 → 4/1) | s:bd delay:0.25 delaytime:0.25 ]", + "[ 0/1 → 1/2 | s:bd delay:0.25 delaytime:0.125 ]", + "[ 1/2 → 1/1 | s:bd delay:0.25 delaytime:0.125 ]", + "[ 1/1 → 3/2 | s:bd delay:0.25 delaytime:0.25 ]", + "[ 3/2 → 2/1 | s:bd delay:0.25 delaytime:0.25 ]", + "[ 2/1 → 5/2 | s:bd delay:0.25 delaytime:0.5 ]", + "[ 5/2 → 3/1 | s:bd delay:0.25 delaytime:0.5 ]", + "[ 3/1 → 7/2 | s:bd delay:0.25 delaytime:1 ]", + "[ 7/2 → 4/1 | s:bd delay:0.25 delaytime:1 ]", ] `; @@ -1721,71 +2057,95 @@ exports[`runs examples > example "echo" example index 0 1`] = ` exports[`runs examples > example "echoWith" example index 0 1`] = ` [ - "[ -3/8 ⇜ (0/1 → 1/8) | note:Bb3 clip:0.2 ]", - "[ -1/4 ⇜ (0/1 → 1/4) | note:D4 clip:0.2 ]", - "[ -1/8 ⇜ (0/1 → 3/8) | note:F4 clip:0.2 ]", - "[ 0/1 → 1/1 | note:C3 clip:0.2 ]", - "[ (1/8 → 1/1) ⇝ 9/8 | note:Eb3 clip:0.2 ]", - "[ (1/4 → 1/1) ⇝ 5/4 | note:G3 clip:0.2 ]", - "[ (3/8 → 1/1) ⇝ 11/8 | note:Bb3 clip:0.2 ]", - "[ 1/8 ⇜ (1/1 → 9/8) | note:Eb3 clip:0.2 ]", - "[ 1/4 ⇜ (1/1 → 5/4) | note:G3 clip:0.2 ]", - "[ 3/8 ⇜ (1/1 → 11/8) | note:Bb3 clip:0.2 ]", - "[ 1/1 → 3/2 | note:Eb3 clip:0.2 ]", - "[ 9/8 → 13/8 | note:G3 clip:0.2 ]", - "[ 5/4 → 7/4 | note:Bb3 clip:0.2 ]", - "[ 11/8 → 15/8 | note:D4 clip:0.2 ]", - "[ 3/2 → 2/1 | note:G3 clip:0.2 ]", - "[ (13/8 → 2/1) ⇝ 17/8 | note:Bb3 clip:0.2 ]", - "[ (7/4 → 2/1) ⇝ 9/4 | note:D4 clip:0.2 ]", - "[ (15/8 → 2/1) ⇝ 19/8 | note:F4 clip:0.2 ]", - "[ 13/8 ⇜ (2/1 → 17/8) | note:Bb3 clip:0.2 ]", - "[ 7/4 ⇜ (2/1 → 9/4) | note:D4 clip:0.2 ]", - "[ 15/8 ⇜ (2/1 → 19/8) | note:F4 clip:0.2 ]", - "[ 2/1 → 3/1 | note:C3 clip:0.2 ]", - "[ (17/8 → 3/1) ⇝ 25/8 | note:Eb3 clip:0.2 ]", - "[ (9/4 → 3/1) ⇝ 13/4 | note:G3 clip:0.2 ]", - "[ (19/8 → 3/1) ⇝ 27/8 | note:Bb3 clip:0.2 ]", - "[ 17/8 ⇜ (3/1 → 25/8) | note:Eb3 clip:0.2 ]", - "[ 9/4 ⇜ (3/1 → 13/4) | note:G3 clip:0.2 ]", - "[ 19/8 ⇜ (3/1 → 27/8) | note:Bb3 clip:0.2 ]", - "[ 3/1 → 7/2 | note:Eb3 clip:0.2 ]", - "[ 25/8 → 29/8 | note:G3 clip:0.2 ]", - "[ 13/4 → 15/4 | note:Bb3 clip:0.2 ]", - "[ 27/8 → 31/8 | note:D4 clip:0.2 ]", - "[ 7/2 → 4/1 | note:G3 clip:0.2 ]", - "[ (29/8 → 4/1) ⇝ 33/8 | note:Bb3 clip:0.2 ]", - "[ (15/4 → 4/1) ⇝ 17/4 | note:D4 clip:0.2 ]", - "[ (31/8 → 4/1) ⇝ 35/8 | note:F4 clip:0.2 ]", + "[ -3/8 ⇜ (0/1 → 1/8) | note:Bb3 ]", + "[ -1/4 ⇜ (0/1 → 1/4) | note:D4 ]", + "[ -1/8 ⇜ (0/1 → 3/8) | note:F4 ]", + "[ 0/1 → 1/1 | note:C3 ]", + "[ (1/8 → 1/1) ⇝ 9/8 | note:Eb3 ]", + "[ (1/4 → 1/1) ⇝ 5/4 | note:G3 ]", + "[ (3/8 → 1/1) ⇝ 11/8 | note:Bb3 ]", + "[ 1/8 ⇜ (1/1 → 9/8) | note:Eb3 ]", + "[ 1/4 ⇜ (1/1 → 5/4) | note:G3 ]", + "[ 3/8 ⇜ (1/1 → 11/8) | note:Bb3 ]", + "[ 1/1 → 3/2 | note:Eb3 ]", + "[ 9/8 → 13/8 | note:G3 ]", + "[ 5/4 → 7/4 | note:Bb3 ]", + "[ 11/8 → 15/8 | note:D4 ]", + "[ 3/2 → 2/1 | note:G3 ]", + "[ (13/8 → 2/1) ⇝ 17/8 | note:Bb3 ]", + "[ (7/4 → 2/1) ⇝ 9/4 | note:D4 ]", + "[ (15/8 → 2/1) ⇝ 19/8 | note:F4 ]", + "[ 13/8 ⇜ (2/1 → 17/8) | note:Bb3 ]", + "[ 7/4 ⇜ (2/1 → 9/4) | note:D4 ]", + "[ 15/8 ⇜ (2/1 → 19/8) | note:F4 ]", + "[ 2/1 → 3/1 | note:C3 ]", + "[ (17/8 → 3/1) ⇝ 25/8 | note:Eb3 ]", + "[ (9/4 → 3/1) ⇝ 13/4 | note:G3 ]", + "[ (19/8 → 3/1) ⇝ 27/8 | note:Bb3 ]", + "[ 17/8 ⇜ (3/1 → 25/8) | note:Eb3 ]", + "[ 9/4 ⇜ (3/1 → 13/4) | note:G3 ]", + "[ 19/8 ⇜ (3/1 → 27/8) | note:Bb3 ]", + "[ 3/1 → 7/2 | note:Eb3 ]", + "[ 25/8 → 29/8 | note:G3 ]", + "[ 13/4 → 15/4 | note:Bb3 ]", + "[ 27/8 → 31/8 | note:D4 ]", + "[ 7/2 → 4/1 | note:G3 ]", + "[ (29/8 → 4/1) ⇝ 33/8 | note:Bb3 ]", + "[ (15/4 → 4/1) ⇝ 17/4 | note:D4 ]", + "[ (31/8 → 4/1) ⇝ 35/8 | note:F4 ]", ] `; exports[`runs examples > example "end" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:oh end:0.1 ]", - "[ 0/1 → 1/2 | s:bd end:0.1 ]", - "[ 1/4 → 1/2 | s:oh end:0.1 ]", - "[ 1/2 → 3/4 | s:oh end:0.1 ]", - "[ 1/2 → 1/1 | s:bd end:0.1 ]", - "[ 3/4 → 1/1 | s:oh end:0.1 ]", - "[ 1/1 → 5/4 | s:oh end:0.2 ]", - "[ 1/1 → 3/2 | s:bd end:0.2 ]", - "[ 5/4 → 3/2 | s:oh end:0.2 ]", - "[ 3/2 → 7/4 | s:oh end:0.2 ]", - "[ 3/2 → 2/1 | s:bd end:0.2 ]", - "[ 7/4 → 2/1 | s:oh end:0.2 ]", - "[ 2/1 → 9/4 | s:oh end:0.5 ]", - "[ 2/1 → 5/2 | s:bd end:0.5 ]", - "[ 9/4 → 5/2 | s:oh end:0.5 ]", - "[ 5/2 → 11/4 | s:oh end:0.5 ]", - "[ 5/2 → 3/1 | s:bd end:0.5 ]", - "[ 11/4 → 3/1 | s:oh end:0.5 ]", - "[ 3/1 → 13/4 | s:oh end:1 ]", - "[ 3/1 → 7/2 | s:bd end:1 ]", - "[ 13/4 → 7/2 | s:oh end:1 ]", - "[ 7/2 → 15/4 | s:oh end:1 ]", - "[ 7/2 → 4/1 | s:bd end:1 ]", - "[ 15/4 → 4/1 | s:oh end:1 ]", + "[ 0/1 → 1/8 | s:oh end:0.1 ]", + "[ 0/1 → 1/4 | s:bd end:0.1 ]", + "[ 1/8 → 1/4 | s:oh end:0.1 ]", + "[ 1/4 → 3/8 | s:oh end:0.1 ]", + "[ 1/4 → 1/2 | s:bd end:0.1 ]", + "[ 3/8 → 1/2 | s:oh end:0.1 ]", + "[ 1/2 → 5/8 | s:oh end:0.2 ]", + "[ 1/2 → 3/4 | s:bd end:0.2 ]", + "[ 5/8 → 3/4 | s:oh end:0.2 ]", + "[ 3/4 → 7/8 | s:oh end:0.2 ]", + "[ 3/4 → 1/1 | s:bd end:0.2 ]", + "[ 7/8 → 1/1 | s:oh end:0.2 ]", + "[ 1/1 → 9/8 | s:oh end:0.5 ]", + "[ 1/1 → 5/4 | s:bd end:0.5 ]", + "[ 9/8 → 5/4 | s:oh end:0.5 ]", + "[ 5/4 → 11/8 | s:oh end:0.5 ]", + "[ 5/4 → 3/2 | s:bd end:0.5 ]", + "[ 11/8 → 3/2 | s:oh end:0.5 ]", + "[ 3/2 → 13/8 | s:oh end:1 ]", + "[ 3/2 → 7/4 | s:bd end:1 ]", + "[ 13/8 → 7/4 | s:oh end:1 ]", + "[ 7/4 → 15/8 | s:oh end:1 ]", + "[ 7/4 → 2/1 | s:bd end:1 ]", + "[ 15/8 → 2/1 | s:oh end:1 ]", + "[ 2/1 → 17/8 | s:oh end:0.1 ]", + "[ 2/1 → 9/4 | s:bd end:0.1 ]", + "[ 17/8 → 9/4 | s:oh end:0.1 ]", + "[ 9/4 → 19/8 | s:oh end:0.1 ]", + "[ 9/4 → 5/2 | s:bd end:0.1 ]", + "[ 19/8 → 5/2 | s:oh end:0.1 ]", + "[ 5/2 → 21/8 | s:oh end:0.2 ]", + "[ 5/2 → 11/4 | s:bd end:0.2 ]", + "[ 21/8 → 11/4 | s:oh end:0.2 ]", + "[ 11/4 → 23/8 | s:oh end:0.2 ]", + "[ 11/4 → 3/1 | s:bd end:0.2 ]", + "[ 23/8 → 3/1 | s:oh end:0.2 ]", + "[ 3/1 → 25/8 | s:oh end:0.5 ]", + "[ 3/1 → 13/4 | s:bd end:0.5 ]", + "[ 25/8 → 13/4 | s:oh end:0.5 ]", + "[ 13/4 → 27/8 | s:oh end:0.5 ]", + "[ 13/4 → 7/2 | s:bd end:0.5 ]", + "[ 27/8 → 7/2 | s:oh end:0.5 ]", + "[ 7/2 → 29/8 | s:oh end:1 ]", + "[ 7/2 → 15/4 | s:bd end:1 ]", + "[ 29/8 → 15/4 | s:oh end:1 ]", + "[ 15/4 → 31/8 | s:oh end:1 ]", + "[ 15/4 → 4/1 | s:bd end:1 ]", + "[ 31/8 → 4/1 | s:oh end:1 ]", ] `; @@ -1808,18 +2168,18 @@ exports[`runs examples > example "euclid" example index 0 1`] = ` exports[`runs examples > example "euclidLegato" example index 0 1`] = ` [ - "[ 0/1 → 3/8 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 3/8 → 3/4 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 3/4 → 1/1 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 1/1 → 11/8 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 11/8 → 7/4 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 7/4 → 2/1 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 2/1 → 19/8 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 19/8 → 11/4 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 11/4 → 3/1 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 3/1 → 27/8 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 27/8 → 15/4 | n:g2 decay:0.1 sustain:0.3 ]", - "[ 15/4 → 4/1 | n:g2 decay:0.1 sustain:0.3 ]", + "[ 0/1 → 3/8 | note:c3 ]", + "[ 3/8 → 3/4 | note:c3 ]", + "[ 3/4 → 1/1 | note:c3 ]", + "[ 1/1 → 11/8 | note:c3 ]", + "[ 11/8 → 7/4 | note:c3 ]", + "[ 7/4 → 2/1 | note:c3 ]", + "[ 2/1 → 19/8 | note:c3 ]", + "[ 19/8 → 11/4 | note:c3 ]", + "[ 11/4 → 3/1 | note:c3 ]", + "[ 3/1 → 27/8 | note:c3 ]", + "[ 27/8 → 15/4 | note:c3 ]", + "[ 15/4 → 4/1 | note:c3 ]", ] `; @@ -1880,35 +2240,59 @@ exports[`runs examples > example "every" example index 0 1`] = ` exports[`runs examples > example "fast" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:bd ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 3/4 | s:sd ]", - "[ 3/4 → 1/1 | s:hh ]", - "[ 1/1 → 5/4 | s:bd ]", - "[ 5/4 → 3/2 | s:hh ]", - "[ 3/2 → 7/4 | s:sd ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:bd ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:sd ]", - "[ 11/4 → 3/1 | s:hh ]", - "[ 3/1 → 13/4 | s:bd ]", - "[ 13/4 → 7/2 | s:hh ]", - "[ 7/2 → 15/4 | s:sd ]", - "[ 15/4 → 4/1 | s:hh ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:bd ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:sd ]", + "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:bd ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:sd ]", + "[ 15/8 → 2/1 | s:hh ]", + "[ 2/1 → 17/8 | s:bd ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | s:sd ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 5/2 → 21/8 | s:bd ]", + "[ 21/8 → 11/4 | s:hh ]", + "[ 11/4 → 23/8 | s:sd ]", + "[ 23/8 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | s:bd ]", + "[ 25/8 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | s:sd ]", + "[ 27/8 → 7/2 | s:hh ]", + "[ 7/2 → 29/8 | s:bd ]", + "[ 29/8 → 15/4 | s:hh ]", + "[ 15/4 → 31/8 | s:sd ]", + "[ 31/8 → 4/1 | s:hh ]", ] `; exports[`runs examples > example "fastChunk" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:C2 s:folkharp ]", - "[ 1/2 → 1/1 | note:D2 s:folkharp ]", - "[ 1/1 → 3/2 | note:E2 s:folkharp ]", - "[ 3/2 → 2/1 | note:F2 s:folkharp ]", - "[ 2/1 → 5/2 | note:G2 s:folkharp ]", - "[ 5/2 → 3/1 | note:A2 s:folkharp ]", - "[ 3/1 → 7/2 | note:B2 s:folkharp ]", - "[ 7/2 → 4/1 | note:C3 s:folkharp ]", + "[ 0/1 → 1/4 | note:C2 ]", + "[ 1/4 → 1/2 | note:D2 ]", + "[ 1/2 → 3/4 | note:E2 ]", + "[ 3/4 → 1/1 | note:F2 ]", + "[ 1/1 → 5/4 | note:G2 ]", + "[ 5/4 → 3/2 | note:A2 ]", + "[ 3/2 → 7/4 | note:B2 ]", + "[ 7/4 → 2/1 | note:C3 ]", + "[ 2/1 → 9/4 | note:D3 ]", + "[ 9/4 → 5/2 | note:D2 ]", + "[ 5/2 → 11/4 | note:E2 ]", + "[ 11/4 → 3/1 | note:F2 ]", + "[ 3/1 → 13/4 | note:G2 ]", + "[ 13/4 → 7/2 | note:A2 ]", + "[ 7/2 → 15/4 | note:B2 ]", + "[ 15/4 → 4/1 | note:C3 ]", ] `; @@ -1948,10 +2332,10 @@ exports[`runs examples > example "firstOf" example index 0 1`] = ` exports[`runs examples > example "fit" example index 0 1`] = ` [ - "[ (0/1 → 1/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (1/1 → 2/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (2/1 → 3/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (3/1 → 4/1) | s:rhodes speed:0.25 unit:c ]", + "[ (0/1 → 1/1) ⇝ 2/1 | s:rhodes speed:0.5 unit:c ]", + "[ 0/1 ⇜ (1/1 → 2/1) | s:rhodes speed:0.5 unit:c ]", + "[ (2/1 → 3/1) ⇝ 4/1 | s:rhodes speed:0.5 unit:c ]", + "[ 2/1 ⇜ (3/1 → 4/1) | s:rhodes speed:0.5 unit:c ]", ] `; @@ -1978,127 +2362,175 @@ exports[`runs examples > example "floor" example index 0 1`] = ` exports[`runs examples > example "fm" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:0 analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:0 analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:0 analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:0 analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:1 analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:1 analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:1 analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:1 analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:2 analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:2 analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:2 analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:2 analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:8 analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:8 analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:8 analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:8 analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:0 analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:0 analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:0 analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:0 analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:0 analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:0 analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:1 analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:1 analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:1 analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:1 analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:1 analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:1 analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:2 analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:2 analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:2 analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:2 analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:2 analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:2 analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:8 analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:8 analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:8 analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:8 analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:8 analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:8 analyze:1 ]", ] `; exports[`runs examples > example "fmattack" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmattack:0 analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmattack:0 analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmattack:0 analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmattack:0 analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmattack:0.05 analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmattack:0.05 analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmattack:0.05 analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmattack:0.05 analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmattack:0.1 analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmattack:0.1 analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmattack:0.1 analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmattack:0.1 analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmattack:0.2 analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmattack:0.2 analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmattack:0.2 analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmattack:0.2 analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:4 fmattack:0 analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:4 fmattack:0 analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:4 fmattack:0 analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:4 fmattack:0 analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:4 fmattack:0 analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:4 fmattack:0 analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:4 fmattack:0.05 analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:4 fmattack:0.05 analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:4 fmattack:0.05 analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:4 fmattack:0.05 analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:4 fmattack:0.05 analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:4 fmattack:0.05 analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:4 fmattack:0.1 analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:4 fmattack:0.1 analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:4 fmattack:0.1 analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:4 fmattack:0.1 analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:4 fmattack:0.1 analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:4 fmattack:0.1 analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:4 fmattack:0.2 analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:4 fmattack:0.2 analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:4 fmattack:0.2 analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:4 fmattack:0.2 analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:4 fmattack:0.2 analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:4 fmattack:0.2 analyze:1 ]", ] `; exports[`runs examples > example "fmdecay" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", ] `; exports[`runs examples > example "fmenv" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", ] `; exports[`runs examples > example "fmh" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmh:1 analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmh:1 analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmh:1 analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmh:1 analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmh:2 analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmh:2 analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmh:2 analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmh:2 analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmh:1.5 analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmh:1.5 analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmh:1.5 analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmh:1.5 analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmh:1.61 analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmh:1.61 analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmh:1.61 analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmh:1.61 analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:4 fmh:1 analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:4 fmh:1 analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:4 fmh:1 analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:4 fmh:1 analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:4 fmh:1 analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:4 fmh:1 analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:4 fmh:2 analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:4 fmh:2 analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:4 fmh:2 analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:4 fmh:2 analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:4 fmh:2 analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:4 fmh:2 analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:4 fmh:1.5 analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:4 fmh:1.5 analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:4 fmh:1.5 analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:4 fmh:1.5 analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:4 fmh:1.5 analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:4 fmh:1.5 analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:4 fmh:1.61 analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:4 fmh:1.61 analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:4 fmh:1.61 analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:4 fmh:1.61 analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:4 fmh:1.61 analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:4 fmh:1.61 analyze:1 ]", ] `; exports[`runs examples > example "fmsustain" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 0/1 → 1/6 | note:c fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/6 → 1/3 | note:e fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/3 → 1/2 | note:g fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/2 → 2/3 | note:b fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 2/3 → 5/6 | note:g fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 5/6 → 1/1 | note:e fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/1 → 7/6 | note:c fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 7/6 → 4/3 | note:e fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 4/3 → 3/2 | note:g fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 3/2 → 5/3 | note:b fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 5/3 → 11/6 | note:g fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 11/6 → 2/1 | note:e fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 2/1 → 13/6 | note:c fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 13/6 → 7/3 | note:e fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 7/3 → 5/2 | note:g fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 5/2 → 8/3 | note:b fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 8/3 → 17/6 | note:g fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 17/6 → 3/1 | note:e fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 3/1 → 19/6 | note:c fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 19/6 → 10/3 | note:e fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 10/3 → 7/2 | note:g fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 7/2 → 11/3 | note:b fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 11/3 → 23/6 | note:g fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 23/6 → 4/1 | note:e fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", ] `; @@ -2196,179 +2628,355 @@ exports[`runs examples > example "fscope" example index 0 1`] = ` exports[`runs examples > example "ftype" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth cutoff:500 bpenv:4 ftype:12db ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth cutoff:500 bpenv:4 ftype:24db ]", ] `; exports[`runs examples > example "gain" example index 0 1`] = ` [ - "[ 0/1 → 1/8 | s:hh gain:0.4 ]", - "[ 1/8 → 1/4 | s:hh gain:0.4 ]", - "[ 1/4 → 3/8 | s:hh gain:1 ]", - "[ 3/8 → 1/2 | s:hh gain:0.4 ]", - "[ 1/2 → 5/8 | s:hh gain:0.4 ]", - "[ 5/8 → 3/4 | s:hh gain:1 ]", - "[ 3/4 → 7/8 | s:hh gain:0.4 ]", - "[ 7/8 → 1/1 | s:hh gain:1 ]", - "[ 1/1 → 9/8 | s:hh gain:0.4 ]", - "[ 9/8 → 5/4 | s:hh gain:0.4 ]", - "[ 5/4 → 11/8 | s:hh gain:1 ]", - "[ 11/8 → 3/2 | s:hh gain:0.4 ]", - "[ 3/2 → 13/8 | s:hh gain:0.4 ]", - "[ 13/8 → 7/4 | s:hh gain:1 ]", - "[ 7/4 → 15/8 | s:hh gain:0.4 ]", - "[ 15/8 → 2/1 | s:hh gain:1 ]", - "[ 2/1 → 17/8 | s:hh gain:0.4 ]", - "[ 17/8 → 9/4 | s:hh gain:0.4 ]", - "[ 9/4 → 19/8 | s:hh gain:1 ]", - "[ 19/8 → 5/2 | s:hh gain:0.4 ]", - "[ 5/2 → 21/8 | s:hh gain:0.4 ]", - "[ 21/8 → 11/4 | s:hh gain:1 ]", - "[ 11/4 → 23/8 | s:hh gain:0.4 ]", - "[ 23/8 → 3/1 | s:hh gain:1 ]", - "[ 3/1 → 25/8 | s:hh gain:0.4 ]", - "[ 25/8 → 13/4 | s:hh gain:0.4 ]", - "[ 13/4 → 27/8 | s:hh gain:1 ]", - "[ 27/8 → 7/2 | s:hh gain:0.4 ]", - "[ 7/2 → 29/8 | s:hh gain:0.4 ]", - "[ 29/8 → 15/4 | s:hh gain:1 ]", - "[ 15/4 → 31/8 | s:hh gain:0.4 ]", - "[ 31/8 → 4/1 | s:hh gain:1 ]", + "[ 0/1 → 1/16 | s:hh gain:0.4 ]", + "[ 1/16 → 1/8 | s:hh gain:0.4 ]", + "[ 1/8 → 3/16 | s:hh gain:1 ]", + "[ 3/16 → 1/4 | s:hh gain:0.4 ]", + "[ 1/4 → 5/16 | s:hh gain:0.4 ]", + "[ 5/16 → 3/8 | s:hh gain:1 ]", + "[ 3/8 → 7/16 | s:hh gain:0.4 ]", + "[ 7/16 → 1/2 | s:hh gain:1 ]", + "[ 1/2 → 9/16 | s:hh gain:0.4 ]", + "[ 9/16 → 5/8 | s:hh gain:0.4 ]", + "[ 5/8 → 11/16 | s:hh gain:1 ]", + "[ 11/16 → 3/4 | s:hh gain:0.4 ]", + "[ 3/4 → 13/16 | s:hh gain:0.4 ]", + "[ 13/16 → 7/8 | s:hh gain:1 ]", + "[ 7/8 → 15/16 | s:hh gain:0.4 ]", + "[ 15/16 → 1/1 | s:hh gain:1 ]", + "[ 1/1 → 17/16 | s:hh gain:0.4 ]", + "[ 17/16 → 9/8 | s:hh gain:0.4 ]", + "[ 9/8 → 19/16 | s:hh gain:1 ]", + "[ 19/16 → 5/4 | s:hh gain:0.4 ]", + "[ 5/4 → 21/16 | s:hh gain:0.4 ]", + "[ 21/16 → 11/8 | s:hh gain:1 ]", + "[ 11/8 → 23/16 | s:hh gain:0.4 ]", + "[ 23/16 → 3/2 | s:hh gain:1 ]", + "[ 3/2 → 25/16 | s:hh gain:0.4 ]", + "[ 25/16 → 13/8 | s:hh gain:0.4 ]", + "[ 13/8 → 27/16 | s:hh gain:1 ]", + "[ 27/16 → 7/4 | s:hh gain:0.4 ]", + "[ 7/4 → 29/16 | s:hh gain:0.4 ]", + "[ 29/16 → 15/8 | s:hh gain:1 ]", + "[ 15/8 → 31/16 | s:hh gain:0.4 ]", + "[ 31/16 → 2/1 | s:hh gain:1 ]", + "[ 2/1 → 33/16 | s:hh gain:0.4 ]", + "[ 33/16 → 17/8 | s:hh gain:0.4 ]", + "[ 17/8 → 35/16 | s:hh gain:1 ]", + "[ 35/16 → 9/4 | s:hh gain:0.4 ]", + "[ 9/4 → 37/16 | s:hh gain:0.4 ]", + "[ 37/16 → 19/8 | s:hh gain:1 ]", + "[ 19/8 → 39/16 | s:hh gain:0.4 ]", + "[ 39/16 → 5/2 | s:hh gain:1 ]", + "[ 5/2 → 41/16 | s:hh gain:0.4 ]", + "[ 41/16 → 21/8 | s:hh gain:0.4 ]", + "[ 21/8 → 43/16 | s:hh gain:1 ]", + "[ 43/16 → 11/4 | s:hh gain:0.4 ]", + "[ 11/4 → 45/16 | s:hh gain:0.4 ]", + "[ 45/16 → 23/8 | s:hh gain:1 ]", + "[ 23/8 → 47/16 | s:hh gain:0.4 ]", + "[ 47/16 → 3/1 | s:hh gain:1 ]", + "[ 3/1 → 49/16 | s:hh gain:0.4 ]", + "[ 49/16 → 25/8 | s:hh gain:0.4 ]", + "[ 25/8 → 51/16 | s:hh gain:1 ]", + "[ 51/16 → 13/4 | s:hh gain:0.4 ]", + "[ 13/4 → 53/16 | s:hh gain:0.4 ]", + "[ 53/16 → 27/8 | s:hh gain:1 ]", + "[ 27/8 → 55/16 | s:hh gain:0.4 ]", + "[ 55/16 → 7/2 | s:hh gain:1 ]", + "[ 7/2 → 57/16 | s:hh gain:0.4 ]", + "[ 57/16 → 29/8 | s:hh gain:0.4 ]", + "[ 29/8 → 59/16 | s:hh gain:1 ]", + "[ 59/16 → 15/4 | s:hh gain:0.4 ]", + "[ 15/4 → 61/16 | s:hh gain:0.4 ]", + "[ 61/16 → 31/8 | s:hh gain:1 ]", + "[ 31/8 → 63/16 | s:hh gain:0.4 ]", + "[ 63/16 → 4/1 | s:hh gain:1 ]", ] `; exports[`runs examples > example "hpattack" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", ] `; exports[`runs examples > example "hpdecay" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0.2 hpenv:4 ]", ] `; exports[`runs examples > example "hpenv" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpattack:0.5 hpenv:4 ]", ] `; exports[`runs examples > example "hpf" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh hcutoff:4000 ]", - "[ 0/1 → 1/2 | s:bd hcutoff:4000 ]", - "[ 1/4 → 1/2 | s:hh hcutoff:4000 ]", - "[ 1/2 → 3/4 | s:hh hcutoff:4000 ]", - "[ 1/2 → 1/1 | s:sd hcutoff:4000 ]", - "[ 3/4 → 1/1 | s:hh hcutoff:4000 ]", - "[ 1/1 → 5/4 | s:hh hcutoff:2000 ]", - "[ 1/1 → 3/2 | s:bd hcutoff:2000 ]", - "[ 5/4 → 3/2 | s:hh hcutoff:2000 ]", - "[ 3/2 → 7/4 | s:hh hcutoff:2000 ]", - "[ 3/2 → 2/1 | s:sd hcutoff:2000 ]", - "[ 7/4 → 2/1 | s:hh hcutoff:2000 ]", - "[ 2/1 → 9/4 | s:hh hcutoff:1000 ]", - "[ 2/1 → 5/2 | s:bd hcutoff:1000 ]", - "[ 9/4 → 5/2 | s:hh hcutoff:1000 ]", - "[ 5/2 → 11/4 | s:hh hcutoff:1000 ]", - "[ 5/2 → 3/1 | s:sd hcutoff:1000 ]", - "[ 11/4 → 3/1 | s:hh hcutoff:1000 ]", - "[ 3/1 → 13/4 | s:hh hcutoff:500 ]", - "[ 3/1 → 7/2 | s:bd hcutoff:500 ]", - "[ 13/4 → 7/2 | s:hh hcutoff:500 ]", - "[ 7/2 → 15/4 | s:hh hcutoff:500 ]", - "[ 7/2 → 4/1 | s:sd hcutoff:500 ]", - "[ 15/4 → 4/1 | s:hh hcutoff:500 ]", + "[ 0/1 → 1/8 | s:hh hcutoff:4000 ]", + "[ 0/1 → 1/4 | s:bd hcutoff:4000 ]", + "[ 1/8 → 1/4 | s:hh hcutoff:4000 ]", + "[ 1/4 → 3/8 | s:hh hcutoff:4000 ]", + "[ 1/4 → 1/2 | s:sd hcutoff:4000 ]", + "[ 3/8 → 1/2 | s:hh hcutoff:4000 ]", + "[ 1/2 → 5/8 | s:hh hcutoff:4000 ]", + "[ 5/8 → 3/4 | s:bd hcutoff:4000 ]", + "[ 5/8 → 3/4 | s:hh hcutoff:4000 ]", + "[ 3/4 → 7/8 | s:hh hcutoff:4000 ]", + "[ 3/4 → 1/1 | s:sd hcutoff:4000 ]", + "[ 7/8 → 1/1 | s:hh hcutoff:4000 ]", + "[ 1/1 → 9/8 | s:hh hcutoff:2000 ]", + "[ 1/1 → 5/4 | s:bd hcutoff:2000 ]", + "[ 9/8 → 5/4 | s:hh hcutoff:2000 ]", + "[ 5/4 → 11/8 | s:hh hcutoff:2000 ]", + "[ 5/4 → 3/2 | s:sd hcutoff:2000 ]", + "[ 11/8 → 3/2 | s:hh hcutoff:2000 ]", + "[ 3/2 → 13/8 | s:hh hcutoff:2000 ]", + "[ 13/8 → 7/4 | s:bd hcutoff:2000 ]", + "[ 13/8 → 7/4 | s:hh hcutoff:2000 ]", + "[ 7/4 → 15/8 | s:hh hcutoff:2000 ]", + "[ 7/4 → 2/1 | s:sd hcutoff:2000 ]", + "[ 15/8 → 2/1 | s:hh hcutoff:2000 ]", + "[ 2/1 → 17/8 | s:hh hcutoff:1000 ]", + "[ 2/1 → 9/4 | s:bd hcutoff:1000 ]", + "[ 17/8 → 9/4 | s:hh hcutoff:1000 ]", + "[ 9/4 → 19/8 | s:hh hcutoff:1000 ]", + "[ 9/4 → 5/2 | s:sd hcutoff:1000 ]", + "[ 19/8 → 5/2 | s:hh hcutoff:1000 ]", + "[ 5/2 → 21/8 | s:hh hcutoff:1000 ]", + "[ 21/8 → 11/4 | s:bd hcutoff:1000 ]", + "[ 21/8 → 11/4 | s:hh hcutoff:1000 ]", + "[ 11/4 → 23/8 | s:hh hcutoff:1000 ]", + "[ 11/4 → 3/1 | s:sd hcutoff:1000 ]", + "[ 23/8 → 3/1 | s:hh hcutoff:1000 ]", + "[ 3/1 → 25/8 | s:hh hcutoff:500 ]", + "[ 3/1 → 13/4 | s:bd hcutoff:500 ]", + "[ 25/8 → 13/4 | s:hh hcutoff:500 ]", + "[ 13/4 → 27/8 | s:hh hcutoff:500 ]", + "[ 13/4 → 7/2 | s:sd hcutoff:500 ]", + "[ 27/8 → 7/2 | s:hh hcutoff:500 ]", + "[ 7/2 → 29/8 | s:hh hcutoff:500 ]", + "[ 29/8 → 15/4 | s:bd hcutoff:500 ]", + "[ 29/8 → 15/4 | s:hh hcutoff:500 ]", + "[ 15/4 → 31/8 | s:hh hcutoff:500 ]", + "[ 15/4 → 4/1 | s:sd hcutoff:500 ]", + "[ 31/8 → 4/1 | s:hh hcutoff:500 ]", ] `; exports[`runs examples > example "hpf" example index 1 1`] = ` [ - "[ 0/1 → 1/4 | s:hh hcutoff:2000 ]", - "[ 0/1 → 1/2 | s:bd hcutoff:2000 ]", - "[ 1/4 → 1/2 | s:hh hcutoff:2000 ]", - "[ 1/2 → 3/4 | s:hh hcutoff:2000 ]", - "[ 1/2 → 1/1 | s:sd hcutoff:2000 ]", - "[ 3/4 → 1/1 | s:hh hcutoff:2000 ]", - "[ 1/1 → 5/4 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 1/1 → 3/2 | s:bd hcutoff:2000 hresonance:25 ]", - "[ 5/4 → 3/2 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 3/2 → 7/4 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 3/2 → 2/1 | s:sd hcutoff:2000 hresonance:25 ]", - "[ 7/4 → 2/1 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 2/1 → 9/4 | s:hh hcutoff:2000 ]", - "[ 2/1 → 5/2 | s:bd hcutoff:2000 ]", - "[ 9/4 → 5/2 | s:hh hcutoff:2000 ]", - "[ 5/2 → 11/4 | s:hh hcutoff:2000 ]", - "[ 5/2 → 3/1 | s:sd hcutoff:2000 ]", - "[ 11/4 → 3/1 | s:hh hcutoff:2000 ]", - "[ 3/1 → 13/4 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 3/1 → 7/2 | s:bd hcutoff:2000 hresonance:25 ]", - "[ 13/4 → 7/2 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 7/2 → 15/4 | s:hh hcutoff:2000 hresonance:25 ]", - "[ 7/2 → 4/1 | s:sd hcutoff:2000 hresonance:25 ]", - "[ 15/4 → 4/1 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 0/1 → 1/8 | s:hh hcutoff:2000 ]", + "[ 0/1 → 1/4 | s:bd hcutoff:2000 ]", + "[ 1/8 → 1/4 | s:hh hcutoff:2000 ]", + "[ 1/4 → 3/8 | s:hh hcutoff:2000 ]", + "[ 1/4 → 1/2 | s:sd hcutoff:2000 ]", + "[ 3/8 → 1/2 | s:hh hcutoff:2000 ]", + "[ 1/2 → 5/8 | s:hh hcutoff:2000 ]", + "[ 5/8 → 3/4 | s:bd hcutoff:2000 ]", + "[ 5/8 → 3/4 | s:hh hcutoff:2000 ]", + "[ 3/4 → 7/8 | s:hh hcutoff:2000 ]", + "[ 3/4 → 1/1 | s:sd hcutoff:2000 ]", + "[ 7/8 → 1/1 | s:hh hcutoff:2000 ]", + "[ 1/1 → 9/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 1/1 → 5/4 | s:bd hcutoff:2000 hresonance:25 ]", + "[ 9/8 → 5/4 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 5/4 → 11/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 5/4 → 3/2 | s:sd hcutoff:2000 hresonance:25 ]", + "[ 11/8 → 3/2 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 3/2 → 13/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 13/8 → 7/4 | s:bd hcutoff:2000 hresonance:25 ]", + "[ 13/8 → 7/4 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 7/4 → 15/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 7/4 → 2/1 | s:sd hcutoff:2000 hresonance:25 ]", + "[ 15/8 → 2/1 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 2/1 → 17/8 | s:hh hcutoff:2000 ]", + "[ 2/1 → 9/4 | s:bd hcutoff:2000 ]", + "[ 17/8 → 9/4 | s:hh hcutoff:2000 ]", + "[ 9/4 → 19/8 | s:hh hcutoff:2000 ]", + "[ 9/4 → 5/2 | s:sd hcutoff:2000 ]", + "[ 19/8 → 5/2 | s:hh hcutoff:2000 ]", + "[ 5/2 → 21/8 | s:hh hcutoff:2000 ]", + "[ 21/8 → 11/4 | s:bd hcutoff:2000 ]", + "[ 21/8 → 11/4 | s:hh hcutoff:2000 ]", + "[ 11/4 → 23/8 | s:hh hcutoff:2000 ]", + "[ 11/4 → 3/1 | s:sd hcutoff:2000 ]", + "[ 23/8 → 3/1 | s:hh hcutoff:2000 ]", + "[ 3/1 → 25/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 3/1 → 13/4 | s:bd hcutoff:2000 hresonance:25 ]", + "[ 25/8 → 13/4 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 13/4 → 27/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 13/4 → 7/2 | s:sd hcutoff:2000 hresonance:25 ]", + "[ 27/8 → 7/2 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 7/2 → 29/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 29/8 → 15/4 | s:bd hcutoff:2000 hresonance:25 ]", + "[ 29/8 → 15/4 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 15/4 → 31/8 | s:hh hcutoff:2000 hresonance:25 ]", + "[ 15/4 → 4/1 | s:sd hcutoff:2000 hresonance:25 ]", + "[ 31/8 → 4/1 | s:hh hcutoff:2000 hresonance:25 ]", ] `; exports[`runs examples > example "hpq" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh hcutoff:2000 hresonance:0 ]", - "[ 0/1 → 1/2 | s:bd hcutoff:2000 hresonance:0 ]", - "[ 1/4 → 1/2 | s:hh hcutoff:2000 hresonance:0 ]", - "[ 1/2 → 3/4 | s:hh hcutoff:2000 hresonance:0 ]", - "[ 1/2 → 1/1 | s:sd hcutoff:2000 hresonance:0 ]", - "[ 3/4 → 1/1 | s:hh hcutoff:2000 hresonance:0 ]", - "[ 1/1 → 5/4 | s:hh hcutoff:2000 hresonance:10 ]", - "[ 1/1 → 3/2 | s:bd hcutoff:2000 hresonance:10 ]", - "[ 5/4 → 3/2 | s:hh hcutoff:2000 hresonance:10 ]", - "[ 3/2 → 7/4 | s:hh hcutoff:2000 hresonance:10 ]", - "[ 3/2 → 2/1 | s:sd hcutoff:2000 hresonance:10 ]", - "[ 7/4 → 2/1 | s:hh hcutoff:2000 hresonance:10 ]", - "[ 2/1 → 9/4 | s:hh hcutoff:2000 hresonance:20 ]", - "[ 2/1 → 5/2 | s:bd hcutoff:2000 hresonance:20 ]", - "[ 9/4 → 5/2 | s:hh hcutoff:2000 hresonance:20 ]", - "[ 5/2 → 11/4 | s:hh hcutoff:2000 hresonance:20 ]", - "[ 5/2 → 3/1 | s:sd hcutoff:2000 hresonance:20 ]", - "[ 11/4 → 3/1 | s:hh hcutoff:2000 hresonance:20 ]", - "[ 3/1 → 13/4 | s:hh hcutoff:2000 hresonance:30 ]", - "[ 3/1 → 7/2 | s:bd hcutoff:2000 hresonance:30 ]", - "[ 13/4 → 7/2 | s:hh hcutoff:2000 hresonance:30 ]", - "[ 7/2 → 15/4 | s:hh hcutoff:2000 hresonance:30 ]", - "[ 7/2 → 4/1 | s:sd hcutoff:2000 hresonance:30 ]", - "[ 15/4 → 4/1 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 0/1 → 1/8 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 0/1 → 1/4 | s:bd hcutoff:2000 hresonance:0 ]", + "[ 1/8 → 1/4 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 1/4 → 3/8 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 1/4 → 1/2 | s:sd hcutoff:2000 hresonance:0 ]", + "[ 3/8 → 1/2 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 1/2 → 5/8 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 5/8 → 3/4 | s:bd hcutoff:2000 hresonance:0 ]", + "[ 5/8 → 3/4 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 3/4 → 7/8 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 3/4 → 1/1 | s:sd hcutoff:2000 hresonance:0 ]", + "[ 7/8 → 1/1 | s:hh hcutoff:2000 hresonance:0 ]", + "[ 1/1 → 9/8 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 1/1 → 5/4 | s:bd hcutoff:2000 hresonance:10 ]", + "[ 9/8 → 5/4 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 5/4 → 11/8 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 5/4 → 3/2 | s:sd hcutoff:2000 hresonance:10 ]", + "[ 11/8 → 3/2 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 3/2 → 13/8 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 13/8 → 7/4 | s:bd hcutoff:2000 hresonance:10 ]", + "[ 13/8 → 7/4 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 7/4 → 15/8 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 7/4 → 2/1 | s:sd hcutoff:2000 hresonance:10 ]", + "[ 15/8 → 2/1 | s:hh hcutoff:2000 hresonance:10 ]", + "[ 2/1 → 17/8 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 2/1 → 9/4 | s:bd hcutoff:2000 hresonance:20 ]", + "[ 17/8 → 9/4 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 9/4 → 19/8 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 9/4 → 5/2 | s:sd hcutoff:2000 hresonance:20 ]", + "[ 19/8 → 5/2 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 5/2 → 21/8 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 21/8 → 11/4 | s:bd hcutoff:2000 hresonance:20 ]", + "[ 21/8 → 11/4 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 11/4 → 23/8 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 11/4 → 3/1 | s:sd hcutoff:2000 hresonance:20 ]", + "[ 23/8 → 3/1 | s:hh hcutoff:2000 hresonance:20 ]", + "[ 3/1 → 25/8 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 3/1 → 13/4 | s:bd hcutoff:2000 hresonance:30 ]", + "[ 25/8 → 13/4 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 13/4 → 27/8 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 13/4 → 7/2 | s:sd hcutoff:2000 hresonance:30 ]", + "[ 27/8 → 7/2 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 7/2 → 29/8 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 29/8 → 15/4 | s:bd hcutoff:2000 hresonance:30 ]", + "[ 29/8 → 15/4 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 15/4 → 31/8 | s:hh hcutoff:2000 hresonance:30 ]", + "[ 15/4 → 4/1 | s:sd hcutoff:2000 hresonance:30 ]", + "[ 31/8 → 4/1 | s:hh hcutoff:2000 hresonance:30 ]", ] `; exports[`runs examples > example "hprelease" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth clip:0.5 hcutoff:500 hpenv:4 hprelease:0.5 release:0.5 ]", ] `; exports[`runs examples > example "hpsustain" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth hcutoff:500 hpdecay:0.5 hpsustain:0 hpenv:4 ]", ] `; @@ -2500,31 +3108,55 @@ exports[`runs examples > example "invert" example index 0 1`] = ` exports[`runs examples > example "irand" example index 0 1`] = ` [ - "[ 0/1 → 1/8 | note:Bb3 ]", + "[ 0/1 → 1/4 | note:Ab3 ]", + "[ 1/4 → 3/8 | note:G3 ]", "[ 3/8 → 1/2 | note:Eb3 ]", - "[ 3/4 → 7/8 | note:Bb3 ]", - "[ 1/1 → 9/8 | note:G3 ]", + "[ 1/2 → 3/4 | note:D3 ]", + "[ 3/4 → 5/6 | note:Ab3 ]", + "[ 5/6 → 11/12 | note:F3 ]", + "[ 11/12 → 1/1 | note:Ab3 ]", + "[ 1/1 → 5/4 | note:Ab3 ]", + "[ 5/4 → 11/8 | note:C3 ]", "[ 11/8 → 3/2 | note:G3 ]", - "[ 7/4 → 15/8 | note:F3 ]", - "[ 2/1 → 17/8 | note:Eb3 ]", + "[ 3/2 → 7/4 | note:F3 ]", + "[ 7/4 → 11/6 | note:Ab3 ]", + "[ 11/6 → 23/12 | note:G3 ]", + "[ 23/12 → 2/1 | note:F3 ]", + "[ 2/1 → 9/4 | note:C4 ]", + "[ 9/4 → 19/8 | note:Ab3 ]", "[ 19/8 → 5/2 | note:D3 ]", - "[ 11/4 → 23/8 | note:C4 ]", - "[ 3/1 → 25/8 | note:C3 ]", + "[ 5/2 → 11/4 | note:D3 ]", + "[ 11/4 → 17/6 | note:C3 ]", + "[ 17/6 → 35/12 | note:C3 ]", + "[ 35/12 → 3/1 | note:G3 ]", + "[ 3/1 → 13/4 | note:Eb3 ]", + "[ 13/4 → 27/8 | note:Eb3 ]", "[ 27/8 → 7/2 | note:Bb3 ]", - "[ 15/4 → 31/8 | note:C3 ]", + "[ 7/2 → 15/4 | note:C4 ]", + "[ 15/4 → 23/6 | note:D3 ]", + "[ 23/6 → 47/12 | note:Ab3 ]", + "[ 47/12 → 4/1 | note:Eb3 ]", ] `; exports[`runs examples > example "iresponse" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.8 ir:shaker_large i:0 ]", - "[ 1/2 → 1/1 | s:sd room:0.8 ir:shaker_large i:0 ]", - "[ 1/1 → 3/2 | s:bd room:0.8 ir:shaker_large i:2 ]", - "[ 3/2 → 2/1 | s:sd room:0.8 ir:shaker_large i:2 ]", - "[ 2/1 → 5/2 | s:bd room:0.8 ir:shaker_large i:0 ]", - "[ 5/2 → 3/1 | s:sd room:0.8 ir:shaker_large i:0 ]", - "[ 3/1 → 7/2 | s:bd room:0.8 ir:shaker_large i:2 ]", - "[ 7/2 → 4/1 | s:sd room:0.8 ir:shaker_large i:2 ]", + "[ 0/1 → 1/4 | s:bd room:0.8 ir:shaker_large i:0 ]", + "[ 1/4 → 1/2 | s:sd room:0.8 ir:shaker_large i:0 ]", + "[ 5/8 → 3/4 | s:bd room:0.8 ir:shaker_large i:0 ]", + "[ 3/4 → 1/1 | s:sd room:0.8 ir:shaker_large i:0 ]", + "[ 1/1 → 5/4 | s:bd room:0.8 ir:shaker_large i:2 ]", + "[ 5/4 → 3/2 | s:sd room:0.8 ir:shaker_large i:2 ]", + "[ 13/8 → 7/4 | s:bd room:0.8 ir:shaker_large i:2 ]", + "[ 7/4 → 2/1 | s:sd room:0.8 ir:shaker_large i:2 ]", + "[ 2/1 → 9/4 | s:bd room:0.8 ir:shaker_large i:0 ]", + "[ 9/4 → 5/2 | s:sd room:0.8 ir:shaker_large i:0 ]", + "[ 21/8 → 11/4 | s:bd room:0.8 ir:shaker_large i:0 ]", + "[ 11/4 → 3/1 | s:sd room:0.8 ir:shaker_large i:0 ]", + "[ 3/1 → 13/4 | s:bd room:0.8 ir:shaker_large i:2 ]", + "[ 13/4 → 7/2 | s:sd room:0.8 ir:shaker_large i:2 ]", + "[ 29/8 → 15/4 | s:bd room:0.8 ir:shaker_large i:2 ]", + "[ 15/4 → 4/1 | s:sd room:0.8 ir:shaker_large i:2 ]", ] `; @@ -2572,91 +3204,245 @@ exports[`runs examples > example "iterBack" example index 0 1`] = ` exports[`runs examples > example "jux" example index 0 1`] = ` [ - "[ 0/1 → 1/5 | s:lt pan:0 ]", - "[ 0/1 → 1/5 | s:hh pan:1 ]", - "[ 1/5 → 2/5 | s:ht pan:0 ]", - "[ 1/5 → 2/5 | s:ht pan:1 ]", - "[ 2/5 → 3/5 | s:mt pan:0 ]", - "[ 2/5 → 3/5 | s:mt pan:1 ]", - "[ 3/5 → 4/5 | s:ht pan:0 ]", - "[ 3/5 → 4/5 | s:ht pan:1 ]", - "[ 4/5 → 1/1 | s:hh pan:0 ]", - "[ 4/5 → 1/1 | s:lt pan:1 ]", - "[ 1/1 → 6/5 | s:lt pan:0 ]", - "[ 1/1 → 6/5 | s:hh pan:1 ]", - "[ 6/5 → 7/5 | s:ht pan:0 ]", - "[ 6/5 → 7/5 | s:ht pan:1 ]", - "[ 7/5 → 8/5 | s:mt pan:0 ]", - "[ 7/5 → 8/5 | s:mt pan:1 ]", - "[ 8/5 → 9/5 | s:ht pan:0 ]", - "[ 8/5 → 9/5 | s:ht pan:1 ]", - "[ 9/5 → 2/1 | s:hh pan:0 ]", - "[ 9/5 → 2/1 | s:lt pan:1 ]", - "[ 2/1 → 11/5 | s:lt pan:0 ]", - "[ 2/1 → 11/5 | s:hh pan:1 ]", - "[ 11/5 → 12/5 | s:ht pan:0 ]", - "[ 11/5 → 12/5 | s:ht pan:1 ]", - "[ 12/5 → 13/5 | s:mt pan:0 ]", - "[ 12/5 → 13/5 | s:mt pan:1 ]", - "[ 13/5 → 14/5 | s:ht pan:0 ]", - "[ 13/5 → 14/5 | s:ht pan:1 ]", - "[ 14/5 → 3/1 | s:hh pan:0 ]", - "[ 14/5 → 3/1 | s:lt pan:1 ]", - "[ 3/1 → 16/5 | s:lt pan:0 ]", - "[ 3/1 → 16/5 | s:hh pan:1 ]", - "[ 16/5 → 17/5 | s:ht pan:0 ]", - "[ 16/5 → 17/5 | s:ht pan:1 ]", - "[ 17/5 → 18/5 | s:mt pan:0 ]", - "[ 17/5 → 18/5 | s:mt pan:1 ]", - "[ 18/5 → 19/5 | s:ht pan:0 ]", - "[ 18/5 → 19/5 | s:ht pan:1 ]", - "[ 19/5 → 4/1 | s:hh pan:0 ]", - "[ 19/5 → 4/1 | s:lt pan:1 ]", + "[ 0/1 → 1/8 | s:bd pan:0 ]", + "[ 0/1 → 1/8 | s:hh pan:1 ]", + "[ 1/8 → 1/4 | s:lt pan:0 ]", + "[ 1/8 → 1/4 | s:bd pan:1 ]", + "[ 5/16 → 3/8 | s:ht pan:0 ]", + "[ 3/8 → 1/2 | s:mt pan:0 ]", + "[ 3/8 → 1/2 | s:cp pan:1 ]", + "[ 1/2 → 5/8 | s:cp pan:0 ]", + "[ 1/2 → 5/8 | s:mt pan:1 ]", + "[ 5/8 → 11/16 | s:ht pan:1 ]", + "[ 3/4 → 7/8 | s:bd pan:0 ]", + "[ 3/4 → 7/8 | s:lt pan:1 ]", + "[ 7/8 → 1/1 | s:hh pan:0 ]", + "[ 7/8 → 1/1 | s:bd pan:1 ]", + "[ 1/1 → 9/8 | s:bd pan:0 ]", + "[ 1/1 → 9/8 | s:hh pan:1 ]", + "[ 9/8 → 5/4 | s:lt pan:0 ]", + "[ 9/8 → 5/4 | s:bd pan:1 ]", + "[ 21/16 → 11/8 | s:ht pan:0 ]", + "[ 11/8 → 3/2 | s:mt pan:0 ]", + "[ 11/8 → 3/2 | s:cp pan:1 ]", + "[ 3/2 → 13/8 | s:cp pan:0 ]", + "[ 3/2 → 13/8 | s:mt pan:1 ]", + "[ 13/8 → 27/16 | s:ht pan:1 ]", + "[ 7/4 → 15/8 | s:bd pan:0 ]", + "[ 7/4 → 15/8 | s:lt pan:1 ]", + "[ 15/8 → 2/1 | s:hh pan:0 ]", + "[ 15/8 → 2/1 | s:bd pan:1 ]", + "[ 2/1 → 17/8 | s:bd pan:0 ]", + "[ 2/1 → 17/8 | s:hh pan:1 ]", + "[ 17/8 → 9/4 | s:lt pan:0 ]", + "[ 17/8 → 9/4 | s:bd pan:1 ]", + "[ 37/16 → 19/8 | s:ht pan:0 ]", + "[ 19/8 → 5/2 | s:mt pan:0 ]", + "[ 19/8 → 5/2 | s:cp pan:1 ]", + "[ 5/2 → 21/8 | s:cp pan:0 ]", + "[ 5/2 → 21/8 | s:mt pan:1 ]", + "[ 21/8 → 43/16 | s:ht pan:1 ]", + "[ 11/4 → 23/8 | s:bd pan:0 ]", + "[ 11/4 → 23/8 | s:lt pan:1 ]", + "[ 23/8 → 3/1 | s:hh pan:0 ]", + "[ 23/8 → 3/1 | s:bd pan:1 ]", + "[ 3/1 → 25/8 | s:bd pan:0 ]", + "[ 3/1 → 25/8 | s:hh pan:1 ]", + "[ 25/8 → 13/4 | s:lt pan:0 ]", + "[ 25/8 → 13/4 | s:bd pan:1 ]", + "[ 53/16 → 27/8 | s:ht pan:0 ]", + "[ 27/8 → 7/2 | s:mt pan:0 ]", + "[ 27/8 → 7/2 | s:cp pan:1 ]", + "[ 7/2 → 29/8 | s:cp pan:0 ]", + "[ 7/2 → 29/8 | s:mt pan:1 ]", + "[ 29/8 → 59/16 | s:ht pan:1 ]", + "[ 15/4 → 31/8 | s:bd pan:0 ]", + "[ 15/4 → 31/8 | s:lt pan:1 ]", + "[ 31/8 → 4/1 | s:hh pan:0 ]", + "[ 31/8 → 4/1 | s:bd pan:1 ]", +] +`; + +exports[`runs examples > example "jux" example index 1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd pan:0 ]", + "[ 1/16 → 1/8 | s:bd pan:1 ]", + "[ 1/8 → 1/4 | s:lt pan:0 ]", + "[ 3/16 → 1/4 | s:lt pan:1 ]", + "[ 5/16 → 3/8 | s:ht pan:0 ]", + "[ 11/32 → 3/8 | s:ht pan:1 ]", + "[ 3/8 → 1/2 | s:mt pan:0 ]", + "[ 7/16 → 1/2 | s:mt pan:1 ]", + "[ 1/2 → 5/8 | s:cp pan:0 ]", + "[ 9/16 → 5/8 | s:cp pan:1 ]", + "[ 3/4 → 7/8 | s:bd pan:0 ]", + "[ 13/16 → 7/8 | s:bd pan:1 ]", + "[ 7/8 → 1/1 | s:hh pan:0 ]", + "[ 15/16 → 1/1 | s:hh pan:1 ]", + "[ 1/1 → 9/8 | s:bd pan:0 ]", + "[ 17/16 → 9/8 | s:bd pan:1 ]", + "[ 9/8 → 5/4 | s:lt pan:0 ]", + "[ 19/16 → 5/4 | s:lt pan:1 ]", + "[ 21/16 → 11/8 | s:ht pan:0 ]", + "[ 43/32 → 11/8 | s:ht pan:1 ]", + "[ 11/8 → 3/2 | s:mt pan:0 ]", + "[ 23/16 → 3/2 | s:mt pan:1 ]", + "[ 3/2 → 13/8 | s:cp pan:0 ]", + "[ 25/16 → 13/8 | s:cp pan:1 ]", + "[ 7/4 → 15/8 | s:bd pan:0 ]", + "[ 29/16 → 15/8 | s:bd pan:1 ]", + "[ 15/8 → 2/1 | s:hh pan:0 ]", + "[ 31/16 → 2/1 | s:hh pan:1 ]", + "[ 2/1 → 17/8 | s:bd pan:0 ]", + "[ 33/16 → 17/8 | s:bd pan:1 ]", + "[ 17/8 → 9/4 | s:lt pan:0 ]", + "[ 35/16 → 9/4 | s:lt pan:1 ]", + "[ 37/16 → 19/8 | s:ht pan:0 ]", + "[ 75/32 → 19/8 | s:ht pan:1 ]", + "[ 19/8 → 5/2 | s:mt pan:0 ]", + "[ 39/16 → 5/2 | s:mt pan:1 ]", + "[ 5/2 → 21/8 | s:cp pan:0 ]", + "[ 41/16 → 21/8 | s:cp pan:1 ]", + "[ 11/4 → 23/8 | s:bd pan:0 ]", + "[ 45/16 → 23/8 | s:bd pan:1 ]", + "[ 23/8 → 3/1 | s:hh pan:0 ]", + "[ 47/16 → 3/1 | s:hh pan:1 ]", + "[ 3/1 → 25/8 | s:bd pan:0 ]", + "[ 49/16 → 25/8 | s:bd pan:1 ]", + "[ 25/8 → 13/4 | s:lt pan:0 ]", + "[ 51/16 → 13/4 | s:lt pan:1 ]", + "[ 53/16 → 27/8 | s:ht pan:0 ]", + "[ 107/32 → 27/8 | s:ht pan:1 ]", + "[ 27/8 → 7/2 | s:mt pan:0 ]", + "[ 55/16 → 7/2 | s:mt pan:1 ]", + "[ 7/2 → 29/8 | s:cp pan:0 ]", + "[ 57/16 → 29/8 | s:cp pan:1 ]", + "[ 15/4 → 31/8 | s:bd pan:0 ]", + "[ 61/16 → 31/8 | s:bd pan:1 ]", + "[ 31/8 → 4/1 | s:hh pan:0 ]", + "[ 63/16 → 4/1 | s:hh pan:1 ]", +] +`; + +exports[`runs examples > example "jux" example index 2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd pan:0 ]", + "[ 0/1 → 1/8 | s:bd pan:1 ]", + "[ 1/8 → 1/4 | s:lt pan:0 ]", + "[ 1/8 → 1/4 | s:lt pan:1 ]", + "[ 5/16 → 3/8 | s:ht pan:0 ]", + "[ 5/16 → 3/8 | s:ht pan:1 ]", + "[ 3/8 → 1/2 | s:mt pan:0 ]", + "[ 3/8 → 1/2 | s:mt pan:1 ]", + "[ 1/2 → 5/8 | s:cp pan:0 ]", + "[ 1/2 → 5/8 | s:cp pan:1 ]", + "[ 3/4 → 7/8 | s:bd pan:0 ]", + "[ 3/4 → 7/8 | s:bd pan:1 ]", + "[ 7/8 → 1/1 | s:hh pan:0 ]", + "[ 7/8 → 1/1 | s:hh pan:1 ]", + "[ 1/1 → 9/8 | s:bd pan:0 ]", + "[ 17/16 → 9/8 | s:ht pan:1 ]", + "[ 9/8 → 5/4 | s:lt pan:0 ]", + "[ 9/8 → 5/4 | s:mt pan:1 ]", + "[ 5/4 → 11/8 | s:cp pan:1 ]", + "[ 21/16 → 11/8 | s:ht pan:0 ]", + "[ 11/8 → 3/2 | s:mt pan:0 ]", + "[ 3/2 → 13/8 | s:cp pan:0 ]", + "[ 3/2 → 13/8 | s:bd pan:1 ]", + "[ 13/8 → 7/4 | s:hh pan:1 ]", + "[ 7/4 → 15/8 | s:bd pan:0 ]", + "[ 7/4 → 15/8 | s:bd pan:1 ]", + "[ 15/8 → 2/1 | s:hh pan:0 ]", + "[ 15/8 → 2/1 | s:lt pan:1 ]", + "[ 2/1 → 17/8 | s:bd pan:0 ]", + "[ 2/1 → 17/8 | s:cp pan:1 ]", + "[ 17/8 → 9/4 | s:lt pan:0 ]", + "[ 9/4 → 19/8 | s:bd pan:1 ]", + "[ 37/16 → 19/8 | s:ht pan:0 ]", + "[ 19/8 → 5/2 | s:mt pan:0 ]", + "[ 19/8 → 5/2 | s:hh pan:1 ]", + "[ 5/2 → 21/8 | s:cp pan:0 ]", + "[ 5/2 → 21/8 | s:bd pan:1 ]", + "[ 21/8 → 11/4 | s:lt pan:1 ]", + "[ 11/4 → 23/8 | s:bd pan:0 ]", + "[ 45/16 → 23/8 | s:ht pan:1 ]", + "[ 23/8 → 3/1 | s:hh pan:0 ]", + "[ 23/8 → 3/1 | s:mt pan:1 ]", + "[ 3/1 → 25/8 | s:bd pan:0 ]", + "[ 3/1 → 25/8 | s:bd pan:1 ]", + "[ 25/8 → 13/4 | s:lt pan:0 ]", + "[ 25/8 → 13/4 | s:hh pan:1 ]", + "[ 13/4 → 27/8 | s:bd pan:1 ]", + "[ 53/16 → 27/8 | s:ht pan:0 ]", + "[ 27/8 → 7/2 | s:mt pan:0 ]", + "[ 27/8 → 7/2 | s:lt pan:1 ]", + "[ 7/2 → 29/8 | s:cp pan:0 ]", + "[ 57/16 → 29/8 | s:ht pan:1 ]", + "[ 29/8 → 15/4 | s:mt pan:1 ]", + "[ 15/4 → 31/8 | s:bd pan:0 ]", + "[ 15/4 → 31/8 | s:cp pan:1 ]", + "[ 31/8 → 4/1 | s:hh pan:0 ]", ] `; exports[`runs examples > example "juxBy" example index 0 1`] = ` [ - "[ 0/1 → 1/5 | s:lt pan:0.5 ]", - "[ 0/1 → 1/5 | s:hh pan:0.5 ]", - "[ 1/5 → 2/5 | s:ht pan:0.5 ]", - "[ 1/5 → 2/5 | s:ht pan:0.5 ]", - "[ 2/5 → 3/5 | s:mt pan:0.5 ]", - "[ 2/5 → 3/5 | s:mt pan:0.5 ]", - "[ 3/5 → 4/5 | s:ht pan:0.5 ]", - "[ 3/5 → 4/5 | s:ht pan:0.5 ]", - "[ 4/5 → 1/1 | s:hh pan:0.5 ]", - "[ 4/5 → 1/1 | s:lt pan:0.5 ]", - "[ 1/1 → 6/5 | s:lt pan:0.5 ]", - "[ 1/1 → 6/5 | s:hh pan:0.5 ]", - "[ 6/5 → 7/5 | s:ht pan:0.5 ]", - "[ 6/5 → 7/5 | s:ht pan:0.5 ]", - "[ 7/5 → 8/5 | s:mt pan:0.5 ]", - "[ 7/5 → 8/5 | s:mt pan:0.5 ]", - "[ 8/5 → 9/5 | s:ht pan:0.5 ]", - "[ 8/5 → 9/5 | s:ht pan:0.5 ]", - "[ 9/5 → 2/1 | s:hh pan:0.5 ]", - "[ 9/5 → 2/1 | s:lt pan:0.5 ]", - "[ 2/1 → 11/5 | s:lt pan:0.25 ]", - "[ 2/1 → 11/5 | s:hh pan:0.75 ]", - "[ 11/5 → 12/5 | s:ht pan:0.25 ]", - "[ 11/5 → 12/5 | s:ht pan:0.75 ]", - "[ 12/5 → 13/5 | s:mt pan:0.25 ]", - "[ 12/5 → 13/5 | s:mt pan:0.75 ]", - "[ 13/5 → 14/5 | s:ht pan:0.25 ]", - "[ 13/5 → 14/5 | s:ht pan:0.75 ]", - "[ 14/5 → 3/1 | s:hh pan:0.25 ]", - "[ 14/5 → 3/1 | s:lt pan:0.75 ]", - "[ 3/1 → 16/5 | s:lt pan:0.25 ]", - "[ 3/1 → 16/5 | s:hh pan:0.75 ]", - "[ 16/5 → 17/5 | s:ht pan:0.25 ]", - "[ 16/5 → 17/5 | s:ht pan:0.75 ]", - "[ 17/5 → 18/5 | s:mt pan:0.25 ]", - "[ 17/5 → 18/5 | s:mt pan:0.75 ]", - "[ 18/5 → 19/5 | s:ht pan:0.25 ]", - "[ 18/5 → 19/5 | s:ht pan:0.75 ]", - "[ 19/5 → 4/1 | s:hh pan:0.25 ]", - "[ 19/5 → 4/1 | s:lt pan:0.75 ]", + "[ 0/1 → 1/8 | s:bd pan:0.5 ]", + "[ 0/1 → 1/8 | s:hh pan:0.5 ]", + "[ 1/8 → 1/4 | s:lt pan:0.5 ]", + "[ 1/8 → 1/4 | s:bd pan:0.5 ]", + "[ 5/16 → 3/8 | s:ht pan:0.5 ]", + "[ 3/8 → 1/2 | s:mt pan:0.5 ]", + "[ 3/8 → 1/2 | s:cp pan:0.5 ]", + "[ 1/2 → 5/8 | s:cp pan:0.5 ]", + "[ 1/2 → 5/8 | s:mt pan:0.5 ]", + "[ 5/8 → 11/16 | s:ht pan:0.5 ]", + "[ 3/4 → 7/8 | s:bd pan:0.5 ]", + "[ 3/4 → 7/8 | s:lt pan:0.5 ]", + "[ 7/8 → 1/1 | s:hh pan:0.5 ]", + "[ 7/8 → 1/1 | s:bd pan:0.5 ]", + "[ 1/1 → 9/8 | s:bd pan:0.5 ]", + "[ 1/1 → 9/8 | s:hh pan:0.5 ]", + "[ 9/8 → 5/4 | s:lt pan:0.5 ]", + "[ 9/8 → 5/4 | s:bd pan:0.5 ]", + "[ 21/16 → 11/8 | s:ht pan:0.5 ]", + "[ 11/8 → 3/2 | s:mt pan:0.5 ]", + "[ 11/8 → 3/2 | s:cp pan:0.5 ]", + "[ 3/2 → 13/8 | s:cp pan:0.5 ]", + "[ 3/2 → 13/8 | s:mt pan:0.5 ]", + "[ 13/8 → 27/16 | s:ht pan:0.5 ]", + "[ 7/4 → 15/8 | s:bd pan:0.5 ]", + "[ 7/4 → 15/8 | s:lt pan:0.5 ]", + "[ 15/8 → 2/1 | s:hh pan:0.5 ]", + "[ 15/8 → 2/1 | s:bd pan:0.5 ]", + "[ 2/1 → 17/8 | s:bd pan:0.25 ]", + "[ 2/1 → 17/8 | s:hh pan:0.75 ]", + "[ 17/8 → 9/4 | s:lt pan:0.25 ]", + "[ 17/8 → 9/4 | s:bd pan:0.75 ]", + "[ 37/16 → 19/8 | s:ht pan:0.25 ]", + "[ 19/8 → 5/2 | s:mt pan:0.25 ]", + "[ 19/8 → 5/2 | s:cp pan:0.75 ]", + "[ 5/2 → 21/8 | s:cp pan:0.25 ]", + "[ 5/2 → 21/8 | s:mt pan:0.75 ]", + "[ 21/8 → 43/16 | s:ht pan:0.75 ]", + "[ 11/4 → 23/8 | s:bd pan:0.25 ]", + "[ 11/4 → 23/8 | s:lt pan:0.75 ]", + "[ 23/8 → 3/1 | s:hh pan:0.25 ]", + "[ 23/8 → 3/1 | s:bd pan:0.75 ]", + "[ 3/1 → 25/8 | s:bd pan:0.25 ]", + "[ 3/1 → 25/8 | s:hh pan:0.75 ]", + "[ 25/8 → 13/4 | s:lt pan:0.25 ]", + "[ 25/8 → 13/4 | s:bd pan:0.75 ]", + "[ 53/16 → 27/8 | s:ht pan:0.25 ]", + "[ 27/8 → 7/2 | s:mt pan:0.25 ]", + "[ 27/8 → 7/2 | s:cp pan:0.75 ]", + "[ 7/2 → 29/8 | s:cp pan:0.25 ]", + "[ 7/2 → 29/8 | s:mt pan:0.75 ]", + "[ 29/8 → 59/16 | s:ht pan:0.75 ]", + "[ 15/4 → 31/8 | s:bd pan:0.25 ]", + "[ 15/4 → 31/8 | s:lt pan:0.75 ]", + "[ 31/8 → 4/1 | s:hh pan:0.25 ]", + "[ 31/8 → 4/1 | s:bd pan:0.75 ]", ] `; @@ -2696,24 +3482,42 @@ exports[`runs examples > example "late" example index 0 1`] = ` exports[`runs examples > example "layer" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:C3 ]", - "[ 0/1 → 1/4 | note:Eb3 ]", - "[ 1/4 → 1/2 | note:Eb3 ]", - "[ 1/4 → 1/2 | note:G3 ]", - "[ 1/2 → 3/4 | note:G3 ]", - "[ 1/2 → 3/4 | note:Bb3 ]", - "[ 3/4 → 1/1 | note:Bb3 ]", - "[ 3/4 → 1/1 | note:D4 ]", - "[ 5/4 → 3/2 | note:G3 ]", - "[ 5/4 → 3/2 | note:Bb3 ]", - "[ 7/4 → 2/1 | note:Eb3 ]", - "[ 7/4 → 2/1 | note:G3 ]", - "[ 2/1 → 9/4 | note:C3 ]", - "[ 2/1 → 9/4 | note:Eb3 ]", - "[ 9/4 → 5/2 | note:C3 ]", - "[ 9/4 → 5/2 | note:Eb3 ]", - "[ 5/2 → 11/4 | note:C3 ]", - "[ 5/2 → 11/4 | note:Eb3 ]", + "[ 0/1 → 1/8 | note:C3 ]", + "[ 0/1 → 1/8 | note:Eb3 ]", + "[ 1/8 → 1/4 | note:Eb3 ]", + "[ 1/8 → 1/4 | note:G3 ]", + "[ 1/4 → 3/8 | note:G3 ]", + "[ 1/4 → 3/8 | note:Bb3 ]", + "[ 3/8 → 1/2 | note:Bb3 ]", + "[ 3/8 → 1/2 | note:D4 ]", + "[ 5/8 → 3/4 | note:G3 ]", + "[ 5/8 → 3/4 | note:Bb3 ]", + "[ 7/8 → 1/1 | note:Eb3 ]", + "[ 7/8 → 1/1 | note:G3 ]", + "[ 1/1 → 9/8 | note:C3 ]", + "[ 1/1 → 9/8 | note:Eb3 ]", + "[ 9/8 → 5/4 | note:C3 ]", + "[ 9/8 → 5/4 | note:Eb3 ]", + "[ 5/4 → 11/8 | note:C3 ]", + "[ 5/4 → 11/8 | note:Eb3 ]", + "[ 2/1 → 17/8 | note:C3 ]", + "[ 2/1 → 17/8 | note:Eb3 ]", + "[ 17/8 → 9/4 | note:Eb3 ]", + "[ 17/8 → 9/4 | note:G3 ]", + "[ 9/4 → 19/8 | note:G3 ]", + "[ 9/4 → 19/8 | note:Bb3 ]", + "[ 19/8 → 5/2 | note:Bb3 ]", + "[ 19/8 → 5/2 | note:D4 ]", + "[ 21/8 → 11/4 | note:G3 ]", + "[ 21/8 → 11/4 | note:Bb3 ]", + "[ 23/8 → 3/1 | note:Eb3 ]", + "[ 23/8 → 3/1 | note:G3 ]", + "[ 3/1 → 25/8 | note:C3 ]", + "[ 3/1 → 25/8 | note:Eb3 ]", + "[ 25/8 → 13/4 | note:C3 ]", + "[ 25/8 → 13/4 | note:Eb3 ]", + "[ 13/4 → 27/8 | note:C3 ]", + "[ 13/4 → 27/8 | note:Eb3 ]", ] `; @@ -2832,10 +3636,10 @@ exports[`runs examples > example "loop" example index 0 1`] = ` exports[`runs examples > example "loopAt" example index 0 1`] = ` [ - "[ (0/1 → 1/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (1/1 → 2/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (2/1 → 3/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", - "[ 0/1 ⇜ (3/1 → 4/1) | s:rhodes speed:0.25 unit:c ]", + "[ (0/1 → 1/1) ⇝ 2/1 | s:rhodes speed:0.25 unit:c ]", + "[ 0/1 ⇜ (1/1 → 2/1) | s:rhodes speed:0.25 unit:c ]", + "[ (2/1 → 3/1) ⇝ 4/1 | s:rhodes speed:0.25 unit:c ]", + "[ 2/1 ⇜ (3/1 → 4/1) | s:rhodes speed:0.25 unit:c ]", ] `; @@ -2868,137 +3672,273 @@ exports[`runs examples > example "loopEnd" example index 0 1`] = ` exports[`runs examples > example "lpattack" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", ] `; exports[`runs examples > example "lpdecay" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0.2 lpenv:4 ]", ] `; exports[`runs examples > example "lpenv" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth cutoff:500 lpattack:0.5 lpenv:4 ]", ] `; exports[`runs examples > example "lpf" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | s:hh cutoff:4000 ]", - "[ 0/1 → 1/2 | s:bd cutoff:4000 ]", - "[ 1/3 → 2/3 | s:hh cutoff:4000 ]", - "[ 1/2 → 1/1 | s:sd cutoff:4000 ]", - "[ 2/3 → 1/1 | s:hh cutoff:4000 ]", - "[ 1/1 → 4/3 | s:hh cutoff:2000 ]", - "[ 1/1 → 3/2 | s:bd cutoff:2000 ]", - "[ 4/3 → 5/3 | s:hh cutoff:2000 ]", - "[ 3/2 → 2/1 | s:sd cutoff:2000 ]", - "[ 5/3 → 2/1 | s:hh cutoff:2000 ]", - "[ 2/1 → 7/3 | s:hh cutoff:1000 ]", - "[ 2/1 → 5/2 | s:bd cutoff:1000 ]", - "[ 7/3 → 8/3 | s:hh cutoff:1000 ]", - "[ 5/2 → 3/1 | s:sd cutoff:1000 ]", - "[ 8/3 → 3/1 | s:hh cutoff:1000 ]", - "[ 3/1 → 10/3 | s:hh cutoff:500 ]", - "[ 3/1 → 7/2 | s:bd cutoff:500 ]", - "[ 10/3 → 11/3 | s:hh cutoff:500 ]", - "[ 7/2 → 4/1 | s:sd cutoff:500 ]", - "[ 11/3 → 4/1 | s:hh cutoff:500 ]", + "[ 0/1 → 1/6 | s:hh cutoff:4000 ]", + "[ 0/1 → 1/4 | s:bd cutoff:4000 ]", + "[ 1/6 → 1/3 | s:hh cutoff:4000 ]", + "[ 1/4 → 1/2 | s:sd cutoff:4000 ]", + "[ 1/3 → 1/2 | s:hh cutoff:4000 ]", + "[ 1/2 → 2/3 | s:hh cutoff:4000 ]", + "[ 5/8 → 3/4 | s:bd cutoff:4000 ]", + "[ 2/3 → 5/6 | s:hh cutoff:4000 ]", + "[ 3/4 → 1/1 | s:sd cutoff:4000 ]", + "[ 5/6 → 1/1 | s:hh cutoff:4000 ]", + "[ 1/1 → 7/6 | s:hh cutoff:2000 ]", + "[ 1/1 → 5/4 | s:bd cutoff:2000 ]", + "[ 7/6 → 4/3 | s:hh cutoff:2000 ]", + "[ 5/4 → 3/2 | s:sd cutoff:2000 ]", + "[ 4/3 → 3/2 | s:hh cutoff:2000 ]", + "[ 3/2 → 5/3 | s:hh cutoff:2000 ]", + "[ 13/8 → 7/4 | s:bd cutoff:2000 ]", + "[ 5/3 → 11/6 | s:hh cutoff:2000 ]", + "[ 7/4 → 2/1 | s:sd cutoff:2000 ]", + "[ 11/6 → 2/1 | s:hh cutoff:2000 ]", + "[ 2/1 → 13/6 | s:hh cutoff:1000 ]", + "[ 2/1 → 9/4 | s:bd cutoff:1000 ]", + "[ 13/6 → 7/3 | s:hh cutoff:1000 ]", + "[ 9/4 → 5/2 | s:sd cutoff:1000 ]", + "[ 7/3 → 5/2 | s:hh cutoff:1000 ]", + "[ 5/2 → 8/3 | s:hh cutoff:1000 ]", + "[ 21/8 → 11/4 | s:bd cutoff:1000 ]", + "[ 8/3 → 17/6 | s:hh cutoff:1000 ]", + "[ 11/4 → 3/1 | s:sd cutoff:1000 ]", + "[ 17/6 → 3/1 | s:hh cutoff:1000 ]", + "[ 3/1 → 19/6 | s:hh cutoff:500 ]", + "[ 3/1 → 13/4 | s:bd cutoff:500 ]", + "[ 19/6 → 10/3 | s:hh cutoff:500 ]", + "[ 13/4 → 7/2 | s:sd cutoff:500 ]", + "[ 10/3 → 7/2 | s:hh cutoff:500 ]", + "[ 7/2 → 11/3 | s:hh cutoff:500 ]", + "[ 29/8 → 15/4 | s:bd cutoff:500 ]", + "[ 11/3 → 23/6 | s:hh cutoff:500 ]", + "[ 15/4 → 4/1 | s:sd cutoff:500 ]", + "[ 23/6 → 4/1 | s:hh cutoff:500 ]", ] `; exports[`runs examples > example "lpf" example index 1 1`] = ` [ - "[ 0/1 → 1/8 | s:bd cutoff:1000 resonance:0 ]", - "[ 1/8 → 1/4 | s:bd cutoff:1000 resonance:0 ]", - "[ 1/4 → 3/8 | s:bd cutoff:1000 resonance:10 ]", - "[ 3/8 → 1/2 | s:bd cutoff:1000 resonance:10 ]", - "[ 1/2 → 5/8 | s:bd cutoff:1000 resonance:20 ]", - "[ 5/8 → 3/4 | s:bd cutoff:1000 resonance:20 ]", - "[ 3/4 → 7/8 | s:bd cutoff:1000 resonance:30 ]", - "[ 7/8 → 1/1 | s:bd cutoff:1000 resonance:30 ]", - "[ 1/1 → 9/8 | s:bd cutoff:1000 resonance:0 ]", - "[ 9/8 → 5/4 | s:bd cutoff:1000 resonance:0 ]", - "[ 5/4 → 11/8 | s:bd cutoff:1000 resonance:10 ]", - "[ 11/8 → 3/2 | s:bd cutoff:1000 resonance:10 ]", - "[ 3/2 → 13/8 | s:bd cutoff:1000 resonance:20 ]", - "[ 13/8 → 7/4 | s:bd cutoff:1000 resonance:20 ]", - "[ 7/4 → 15/8 | s:bd cutoff:1000 resonance:30 ]", - "[ 15/8 → 2/1 | s:bd cutoff:1000 resonance:30 ]", - "[ 2/1 → 17/8 | s:bd cutoff:1000 resonance:0 ]", - "[ 17/8 → 9/4 | s:bd cutoff:1000 resonance:0 ]", - "[ 9/4 → 19/8 | s:bd cutoff:1000 resonance:10 ]", - "[ 19/8 → 5/2 | s:bd cutoff:1000 resonance:10 ]", - "[ 5/2 → 21/8 | s:bd cutoff:1000 resonance:20 ]", - "[ 21/8 → 11/4 | s:bd cutoff:1000 resonance:20 ]", - "[ 11/4 → 23/8 | s:bd cutoff:1000 resonance:30 ]", - "[ 23/8 → 3/1 | s:bd cutoff:1000 resonance:30 ]", - "[ 3/1 → 25/8 | s:bd cutoff:1000 resonance:0 ]", - "[ 25/8 → 13/4 | s:bd cutoff:1000 resonance:0 ]", - "[ 13/4 → 27/8 | s:bd cutoff:1000 resonance:10 ]", - "[ 27/8 → 7/2 | s:bd cutoff:1000 resonance:10 ]", - "[ 7/2 → 29/8 | s:bd cutoff:1000 resonance:20 ]", - "[ 29/8 → 15/4 | s:bd cutoff:1000 resonance:20 ]", - "[ 15/4 → 31/8 | s:bd cutoff:1000 resonance:30 ]", - "[ 31/8 → 4/1 | s:bd cutoff:1000 resonance:30 ]", + "[ 0/1 → 1/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 1/16 → 1/8 | s:bd cutoff:1000 resonance:0 ]", + "[ 1/8 → 3/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 3/16 → 1/4 | s:bd cutoff:1000 resonance:0 ]", + "[ 1/4 → 5/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 5/16 → 3/8 | s:bd cutoff:1000 resonance:10 ]", + "[ 3/8 → 7/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 7/16 → 1/2 | s:bd cutoff:1000 resonance:10 ]", + "[ 1/2 → 9/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 9/16 → 5/8 | s:bd cutoff:1000 resonance:20 ]", + "[ 5/8 → 11/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 11/16 → 3/4 | s:bd cutoff:1000 resonance:20 ]", + "[ 3/4 → 13/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 13/16 → 7/8 | s:bd cutoff:1000 resonance:30 ]", + "[ 7/8 → 15/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 15/16 → 1/1 | s:bd cutoff:1000 resonance:30 ]", + "[ 1/1 → 17/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 17/16 → 9/8 | s:bd cutoff:1000 resonance:0 ]", + "[ 9/8 → 19/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 19/16 → 5/4 | s:bd cutoff:1000 resonance:0 ]", + "[ 5/4 → 21/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 21/16 → 11/8 | s:bd cutoff:1000 resonance:10 ]", + "[ 11/8 → 23/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 23/16 → 3/2 | s:bd cutoff:1000 resonance:10 ]", + "[ 3/2 → 25/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 25/16 → 13/8 | s:bd cutoff:1000 resonance:20 ]", + "[ 13/8 → 27/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 27/16 → 7/4 | s:bd cutoff:1000 resonance:20 ]", + "[ 7/4 → 29/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 29/16 → 15/8 | s:bd cutoff:1000 resonance:30 ]", + "[ 15/8 → 31/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 31/16 → 2/1 | s:bd cutoff:1000 resonance:30 ]", + "[ 2/1 → 33/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 33/16 → 17/8 | s:bd cutoff:1000 resonance:0 ]", + "[ 17/8 → 35/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 35/16 → 9/4 | s:bd cutoff:1000 resonance:0 ]", + "[ 9/4 → 37/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 37/16 → 19/8 | s:bd cutoff:1000 resonance:10 ]", + "[ 19/8 → 39/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 39/16 → 5/2 | s:bd cutoff:1000 resonance:10 ]", + "[ 5/2 → 41/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 41/16 → 21/8 | s:bd cutoff:1000 resonance:20 ]", + "[ 21/8 → 43/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 43/16 → 11/4 | s:bd cutoff:1000 resonance:20 ]", + "[ 11/4 → 45/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 45/16 → 23/8 | s:bd cutoff:1000 resonance:30 ]", + "[ 23/8 → 47/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 47/16 → 3/1 | s:bd cutoff:1000 resonance:30 ]", + "[ 3/1 → 49/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 49/16 → 25/8 | s:bd cutoff:1000 resonance:0 ]", + "[ 25/8 → 51/16 | s:bd cutoff:1000 resonance:0 ]", + "[ 51/16 → 13/4 | s:bd cutoff:1000 resonance:0 ]", + "[ 13/4 → 53/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 53/16 → 27/8 | s:bd cutoff:1000 resonance:10 ]", + "[ 27/8 → 55/16 | s:bd cutoff:1000 resonance:10 ]", + "[ 55/16 → 7/2 | s:bd cutoff:1000 resonance:10 ]", + "[ 7/2 → 57/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 57/16 → 29/8 | s:bd cutoff:1000 resonance:20 ]", + "[ 29/8 → 59/16 | s:bd cutoff:1000 resonance:20 ]", + "[ 59/16 → 15/4 | s:bd cutoff:1000 resonance:20 ]", + "[ 15/4 → 61/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 61/16 → 31/8 | s:bd cutoff:1000 resonance:30 ]", + "[ 31/8 → 63/16 | s:bd cutoff:1000 resonance:30 ]", + "[ 63/16 → 4/1 | s:bd cutoff:1000 resonance:30 ]", ] `; exports[`runs examples > example "lpq" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:2000 resonance:0 ]", - "[ 0/1 → 1/2 | s:bd cutoff:2000 resonance:0 ]", - "[ 1/4 → 1/2 | s:hh cutoff:2000 resonance:0 ]", - "[ 1/2 → 3/4 | s:hh cutoff:2000 resonance:0 ]", - "[ 1/2 → 1/1 | s:sd cutoff:2000 resonance:0 ]", - "[ 3/4 → 1/1 | s:hh cutoff:2000 resonance:0 ]", - "[ 1/1 → 5/4 | s:hh cutoff:2000 resonance:10 ]", - "[ 1/1 → 3/2 | s:bd cutoff:2000 resonance:10 ]", - "[ 5/4 → 3/2 | s:hh cutoff:2000 resonance:10 ]", - "[ 3/2 → 7/4 | s:hh cutoff:2000 resonance:10 ]", - "[ 3/2 → 2/1 | s:sd cutoff:2000 resonance:10 ]", - "[ 7/4 → 2/1 | s:hh cutoff:2000 resonance:10 ]", - "[ 2/1 → 9/4 | s:hh cutoff:2000 resonance:20 ]", - "[ 2/1 → 5/2 | s:bd cutoff:2000 resonance:20 ]", - "[ 9/4 → 5/2 | s:hh cutoff:2000 resonance:20 ]", - "[ 5/2 → 11/4 | s:hh cutoff:2000 resonance:20 ]", - "[ 5/2 → 3/1 | s:sd cutoff:2000 resonance:20 ]", - "[ 11/4 → 3/1 | s:hh cutoff:2000 resonance:20 ]", - "[ 3/1 → 13/4 | s:hh cutoff:2000 resonance:30 ]", - "[ 3/1 → 7/2 | s:bd cutoff:2000 resonance:30 ]", - "[ 13/4 → 7/2 | s:hh cutoff:2000 resonance:30 ]", - "[ 7/2 → 15/4 | s:hh cutoff:2000 resonance:30 ]", - "[ 7/2 → 4/1 | s:sd cutoff:2000 resonance:30 ]", - "[ 15/4 → 4/1 | s:hh cutoff:2000 resonance:30 ]", + "[ 0/1 → 1/8 | s:hh cutoff:2000 resonance:0 ]", + "[ 0/1 → 1/4 | s:bd cutoff:2000 resonance:0 ]", + "[ 1/8 → 1/4 | s:hh cutoff:2000 resonance:0 ]", + "[ 1/4 → 3/8 | s:hh cutoff:2000 resonance:0 ]", + "[ 1/4 → 1/2 | s:sd cutoff:2000 resonance:0 ]", + "[ 3/8 → 1/2 | s:hh cutoff:2000 resonance:0 ]", + "[ 1/2 → 5/8 | s:hh cutoff:2000 resonance:0 ]", + "[ 5/8 → 3/4 | s:bd cutoff:2000 resonance:0 ]", + "[ 5/8 → 3/4 | s:hh cutoff:2000 resonance:0 ]", + "[ 3/4 → 7/8 | s:hh cutoff:2000 resonance:0 ]", + "[ 3/4 → 1/1 | s:sd cutoff:2000 resonance:0 ]", + "[ 7/8 → 1/1 | s:hh cutoff:2000 resonance:0 ]", + "[ 1/1 → 9/8 | s:hh cutoff:2000 resonance:10 ]", + "[ 1/1 → 5/4 | s:bd cutoff:2000 resonance:10 ]", + "[ 9/8 → 5/4 | s:hh cutoff:2000 resonance:10 ]", + "[ 5/4 → 11/8 | s:hh cutoff:2000 resonance:10 ]", + "[ 5/4 → 3/2 | s:sd cutoff:2000 resonance:10 ]", + "[ 11/8 → 3/2 | s:hh cutoff:2000 resonance:10 ]", + "[ 3/2 → 13/8 | s:hh cutoff:2000 resonance:10 ]", + "[ 13/8 → 7/4 | s:bd cutoff:2000 resonance:10 ]", + "[ 13/8 → 7/4 | s:hh cutoff:2000 resonance:10 ]", + "[ 7/4 → 15/8 | s:hh cutoff:2000 resonance:10 ]", + "[ 7/4 → 2/1 | s:sd cutoff:2000 resonance:10 ]", + "[ 15/8 → 2/1 | s:hh cutoff:2000 resonance:10 ]", + "[ 2/1 → 17/8 | s:hh cutoff:2000 resonance:20 ]", + "[ 2/1 → 9/4 | s:bd cutoff:2000 resonance:20 ]", + "[ 17/8 → 9/4 | s:hh cutoff:2000 resonance:20 ]", + "[ 9/4 → 19/8 | s:hh cutoff:2000 resonance:20 ]", + "[ 9/4 → 5/2 | s:sd cutoff:2000 resonance:20 ]", + "[ 19/8 → 5/2 | s:hh cutoff:2000 resonance:20 ]", + "[ 5/2 → 21/8 | s:hh cutoff:2000 resonance:20 ]", + "[ 21/8 → 11/4 | s:bd cutoff:2000 resonance:20 ]", + "[ 21/8 → 11/4 | s:hh cutoff:2000 resonance:20 ]", + "[ 11/4 → 23/8 | s:hh cutoff:2000 resonance:20 ]", + "[ 11/4 → 3/1 | s:sd cutoff:2000 resonance:20 ]", + "[ 23/8 → 3/1 | s:hh cutoff:2000 resonance:20 ]", + "[ 3/1 → 25/8 | s:hh cutoff:2000 resonance:30 ]", + "[ 3/1 → 13/4 | s:bd cutoff:2000 resonance:30 ]", + "[ 25/8 → 13/4 | s:hh cutoff:2000 resonance:30 ]", + "[ 13/4 → 27/8 | s:hh cutoff:2000 resonance:30 ]", + "[ 13/4 → 7/2 | s:sd cutoff:2000 resonance:30 ]", + "[ 27/8 → 7/2 | s:hh cutoff:2000 resonance:30 ]", + "[ 7/2 → 29/8 | s:hh cutoff:2000 resonance:30 ]", + "[ 29/8 → 15/4 | s:bd cutoff:2000 resonance:30 ]", + "[ 29/8 → 15/4 | s:hh cutoff:2000 resonance:30 ]", + "[ 15/4 → 31/8 | s:hh cutoff:2000 resonance:30 ]", + "[ 15/4 → 4/1 | s:sd cutoff:2000 resonance:30 ]", + "[ 31/8 → 4/1 | s:hh cutoff:2000 resonance:30 ]", ] `; exports[`runs examples > example "lprelease" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth clip:0.5 cutoff:500 lpenv:4 lprelease:0.5 release:0.5 ]", ] `; exports[`runs examples > example "lpsustain" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", - "[ 1/1 → 2/1 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", - "[ 2/1 → 3/1 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", - "[ 3/1 → 4/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 1/4 → 1/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 1/2 → 3/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 5/4 → 3/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 3/2 → 7/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 7/4 → 2/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 9/4 → 5/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 5/2 → 11/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 13/4 → 7/2 | note:e2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 7/2 → 15/4 | note:f2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", + "[ 15/4 → 4/1 | note:g2 s:sawtooth cutoff:500 lpdecay:0.5 lpsustain:0 lpenv:4 ]", ] `; @@ -3038,61 +3978,95 @@ exports[`runs examples > example "lsize" example index 0 1`] = ` exports[`runs examples > example "mask" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c ]", - "[ 1/2 → 1/1 | note:eb ]", - "[ 1/2 → 1/1 | note:g ]", - "[ 1/1 → 3/2 | note:d ]", - "[ 3/2 → 2/1 | note:eb ]", - "[ 3/2 → 2/1 | note:g ]", - "[ 3/1 → 7/2 | note:d ]", - "[ 7/2 → 4/1 | note:eb ]", - "[ 7/2 → 4/1 | note:g ]", + "[ 0/1 → 1/4 | note:c ]", + "[ 1/4 → 1/2 | note:eb ]", + "[ 1/4 → 1/2 | note:g ]", + "[ 1/2 → 3/4 | note:d ]", + "[ 3/4 → 1/1 | note:eb ]", + "[ 3/4 → 1/1 | note:g ]", + "[ 3/2 → 7/4 | note:d ]", + "[ 7/4 → 2/1 | note:eb ]", + "[ 7/4 → 2/1 | note:g ]", + "[ 2/1 → 9/4 | note:c ]", + "[ 9/4 → 5/2 | note:eb ]", + "[ 9/4 → 5/2 | note:g ]", + "[ 5/2 → 11/4 | note:d ]", + "[ 11/4 → 3/1 | note:eb ]", + "[ 11/4 → 3/1 | note:g ]", + "[ 7/2 → 15/4 | note:d ]", + "[ 15/4 → 4/1 | note:eb ]", + "[ 15/4 → 4/1 | note:g ]", ] `; exports[`runs examples > example "mul" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | freq:150 ]", - "[ 1/3 → 2/3 | freq:225 ]", - "[ 2/3 → 1/1 | freq:249 ]", - "[ 2/3 → 1/1 | freq:300 ]", - "[ 1/1 → 4/3 | freq:150 ]", - "[ 4/3 → 5/3 | freq:225 ]", - "[ 5/3 → 2/1 | freq:249 ]", - "[ 5/3 → 2/1 | freq:349.5 ]", - "[ 2/1 → 7/3 | freq:150 ]", - "[ 7/3 → 8/3 | freq:225 ]", - "[ 8/3 → 3/1 | freq:249 ]", - "[ 8/3 → 3/1 | freq:300 ]", - "[ 3/1 → 10/3 | freq:150 ]", - "[ 10/3 → 11/3 | freq:225 ]", - "[ 11/3 → 4/1 | freq:249 ]", - "[ 11/3 → 4/1 | freq:349.5 ]", + "[ 0/1 → 1/4 | freq:150 ]", + "[ 1/4 → 1/2 | freq:225 ]", + "[ 1/2 → 3/4 | freq:249 ]", + "[ 1/2 → 3/4 | freq:300 ]", + "[ 3/4 → 1/1 | freq:150 ]", + "[ 1/1 → 5/4 | freq:225 ]", + "[ 5/4 → 3/2 | freq:249 ]", + "[ 5/4 → 3/2 | freq:349.5 ]", + "[ 3/2 → 7/4 | freq:150 ]", + "[ 7/4 → 2/1 | freq:225 ]", + "[ 2/1 → 9/4 | freq:249 ]", + "[ 2/1 → 9/4 | freq:300 ]", + "[ 9/4 → 5/2 | freq:150 ]", + "[ 5/2 → 11/4 | freq:225 ]", + "[ 11/4 → 3/1 | freq:249 ]", + "[ 11/4 → 3/1 | freq:349.5 ]", + "[ 3/1 → 13/4 | freq:150 ]", + "[ 13/4 → 7/2 | freq:225 ]", + "[ 7/2 → 15/4 | freq:249 ]", + "[ 7/2 → 15/4 | freq:300 ]", + "[ 15/4 → 4/1 | freq:150 ]", ] `; exports[`runs examples > example "n" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | s:hh n:0 ]", - "[ 0/1 → 1/2 | s:bd n:0 ]", - "[ 1/3 → 2/3 | s:hh n:0 ]", - "[ 1/2 → 1/1 | s:sd n:0 ]", - "[ 2/3 → 1/1 | s:hh n:0 ]", - "[ 1/1 → 4/3 | s:hh n:1 ]", - "[ 1/1 → 3/2 | s:bd n:1 ]", - "[ 4/3 → 5/3 | s:hh n:1 ]", - "[ 3/2 → 2/1 | s:sd n:1 ]", - "[ 5/3 → 2/1 | s:hh n:1 ]", - "[ 2/1 → 7/3 | s:hh n:0 ]", - "[ 2/1 → 5/2 | s:bd n:0 ]", - "[ 7/3 → 8/3 | s:hh n:0 ]", - "[ 5/2 → 3/1 | s:sd n:0 ]", - "[ 8/3 → 3/1 | s:hh n:0 ]", - "[ 3/1 → 10/3 | s:hh n:1 ]", - "[ 3/1 → 7/2 | s:bd n:1 ]", - "[ 10/3 → 11/3 | s:hh n:1 ]", - "[ 7/2 → 4/1 | s:sd n:1 ]", - "[ 11/3 → 4/1 | s:hh n:1 ]", + "[ 0/1 → 1/6 | s:hh n:0 ]", + "[ 0/1 → 1/4 | s:bd n:0 ]", + "[ 1/6 → 1/3 | s:hh n:0 ]", + "[ 1/4 → 1/2 | s:sd n:0 ]", + "[ 1/3 → 1/2 | s:hh n:0 ]", + "[ 1/2 → 2/3 | s:hh n:0 ]", + "[ 5/8 → 3/4 | s:bd n:0 ]", + "[ 2/3 → 5/6 | s:hh n:0 ]", + "[ 3/4 → 1/1 | s:sd n:0 ]", + "[ 5/6 → 1/1 | s:hh n:0 ]", + "[ 1/1 → 7/6 | s:hh n:1 ]", + "[ 1/1 → 5/4 | s:bd n:1 ]", + "[ 7/6 → 4/3 | s:hh n:1 ]", + "[ 5/4 → 3/2 | s:sd n:1 ]", + "[ 4/3 → 3/2 | s:hh n:1 ]", + "[ 3/2 → 5/3 | s:hh n:1 ]", + "[ 13/8 → 7/4 | s:bd n:1 ]", + "[ 5/3 → 11/6 | s:hh n:1 ]", + "[ 7/4 → 2/1 | s:sd n:1 ]", + "[ 11/6 → 2/1 | s:hh n:1 ]", + "[ 2/1 → 13/6 | s:hh n:0 ]", + "[ 2/1 → 9/4 | s:bd n:0 ]", + "[ 13/6 → 7/3 | s:hh n:0 ]", + "[ 9/4 → 5/2 | s:sd n:0 ]", + "[ 7/3 → 5/2 | s:hh n:0 ]", + "[ 5/2 → 8/3 | s:hh n:0 ]", + "[ 21/8 → 11/4 | s:bd n:0 ]", + "[ 8/3 → 17/6 | s:hh n:0 ]", + "[ 11/4 → 3/1 | s:sd n:0 ]", + "[ 17/6 → 3/1 | s:hh n:0 ]", + "[ 3/1 → 19/6 | s:hh n:1 ]", + "[ 3/1 → 13/4 | s:bd n:1 ]", + "[ 19/6 → 10/3 | s:hh n:1 ]", + "[ 13/4 → 7/2 | s:sd n:1 ]", + "[ 10/3 → 7/2 | s:hh n:1 ]", + "[ 7/2 → 11/3 | s:hh n:1 ]", + "[ 29/8 → 15/4 | s:bd n:1 ]", + "[ 11/3 → 23/6 | s:hh n:1 ]", + "[ 15/4 → 4/1 | s:sd n:1 ]", + "[ 23/6 → 4/1 | s:hh n:1 ]", ] `; @@ -3294,22 +4268,38 @@ exports[`runs examples > example "often" example index 0 1`] = ` exports[`runs examples > example "orbit" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 1/3 → 2/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 1/2 → 1/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", - "[ 2/3 → 1/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 1/1 → 4/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 4/3 → 5/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 3/2 → 2/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", - "[ 5/3 → 2/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 2/1 → 7/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 7/3 → 8/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 5/2 → 3/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", - "[ 8/3 → 3/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 3/1 → 10/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 10/3 → 11/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", - "[ 7/2 → 4/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", - "[ 11/3 → 4/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 0/1 → 1/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 1/6 → 1/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 1/4 → 1/2 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 1/3 → 1/2 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 1/2 → 2/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 2/3 → 5/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 3/4 → 1/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 5/6 → 1/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 1/1 → 7/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 7/6 → 4/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 5/4 → 3/2 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 4/3 → 3/2 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 3/2 → 5/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 5/3 → 11/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 7/4 → 2/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 11/6 → 2/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 2/1 → 13/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 13/6 → 7/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 9/4 → 5/2 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 7/3 → 5/2 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 5/2 → 8/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 8/3 → 17/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 11/4 → 3/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 17/6 → 3/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 3/1 → 19/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 19/6 → 10/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 13/4 → 7/2 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 10/3 → 7/2 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 7/2 → 11/3 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 11/3 → 23/6 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", + "[ 15/4 → 4/1 | s:sd delay:0.5 delaytime:0.125 orbit:2 ]", + "[ 23/6 → 4/1 | s:hh delay:0.5 delaytime:0.25 orbit:1 ]", ] `; @@ -3366,34 +4356,83 @@ exports[`runs examples > example "pan" example index 0 1`] = ` ] `; +exports[`runs examples > example "pan" example index 1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd pan:0.5975451610080641 ]", + "[ 1/8 → 1/4 | s:rim pan:0.7777851165098011 ]", + "[ 1/4 → 3/8 | s:sd pan:0.9157348061512727 ]", + "[ 3/8 → 1/2 | s:rim pan:0.9903926402016152 ]", + "[ 1/2 → 5/8 | s:bd pan:0.9903926402016152 ]", + "[ 3/4 → 7/8 | s:cp pan:0.7777851165098011 ]", + "[ 7/8 → 1/1 | s:rim pan:0.5975451610080643 ]", + "[ 1/1 → 9/8 | s:bd pan:0.4024548389919358 ]", + "[ 9/8 → 5/4 | s:rim pan:0.22221488349019902 ]", + "[ 5/4 → 11/8 | s:sd pan:0.08426519384872738 ]", + "[ 11/8 → 3/2 | s:rim pan:0.00960735979838484 ]", + "[ 3/2 → 13/8 | s:bd pan:0.009607359798384785 ]", + "[ 7/4 → 15/8 | s:cp pan:0.2222148834901989 ]", + "[ 15/8 → 2/1 | s:rim pan:0.4024548389919356 ]", + "[ 2/1 → 17/8 | s:bd pan:0.5975451610080641 ]", + "[ 17/8 → 9/4 | s:rim pan:0.7777851165098009 ]", + "[ 9/4 → 19/8 | s:sd pan:0.9157348061512727 ]", + "[ 19/8 → 5/2 | s:rim pan:0.9903926402016152 ]", + "[ 5/2 → 21/8 | s:bd pan:0.9903926402016153 ]", + "[ 11/4 → 23/8 | s:cp pan:0.7777851165098011 ]", + "[ 23/8 → 3/1 | s:rim pan:0.597545161008064 ]", + "[ 3/1 → 25/8 | s:bd pan:0.40245483899193635 ]", + "[ 25/8 → 13/4 | s:rim pan:0.22221488349019913 ]", + "[ 13/4 → 27/8 | s:sd pan:0.08426519384872744 ]", + "[ 27/8 → 7/2 | s:rim pan:0.00960735979838473 ]", + "[ 7/2 → 29/8 | s:bd pan:0.009607359798384674 ]", + "[ 15/4 → 31/8 | s:cp pan:0.2222148834901988 ]", + "[ 31/8 → 4/1 | s:rim pan:0.40245483899193596 ]", +] +`; + exports[`runs examples > example "panchor" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c penv:12 panchor:0 ]", - "[ 1/1 → 2/1 | note:c penv:12 panchor:0.5 ]", - "[ 2/1 → 3/1 | note:c penv:12 panchor:1 ]", - "[ 3/1 → 4/1 | note:c penv:12 panchor:0.5 ]", + "[ 0/1 → 1/2 | note:c penv:12 panchor:0 ]", + "[ 1/2 → 1/1 | note:c4 penv:12 panchor:0 ]", + "[ 1/1 → 3/2 | note:c penv:12 panchor:0.5 ]", + "[ 3/2 → 2/1 | note:c4 penv:12 panchor:0.5 ]", + "[ 2/1 → 5/2 | note:c penv:12 panchor:1 ]", + "[ 5/2 → 3/1 | note:c4 penv:12 panchor:1 ]", + "[ 3/1 → 7/2 | note:c penv:12 panchor:0.5 ]", + "[ 7/2 → 4/1 | note:c4 penv:12 panchor:0.5 ]", ] `; exports[`runs examples > example "pattack" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:c pattack:0 ]", - "[ 1/1 → 2/1 | note:eb pattack:0.1 ]", - "[ 2/1 → 3/1 | note:g pattack:0.25 ]", - "[ 3/1 → 4/1 | note:bb pattack:0.5 ]", + "[ 0/1 → 1/2 | note:c pattack:0 ]", + "[ 1/2 → 1/1 | note:eb pattack:0.1 ]", + "[ 1/1 → 3/2 | note:g pattack:0.25 ]", + "[ 3/2 → 2/1 | note:bb pattack:0.5 ]", + "[ 2/1 → 5/2 | note:c pattack:0 ]", + "[ 5/2 → 3/1 | note:eb pattack:0.1 ]", + "[ 3/1 → 7/2 | note:g pattack:0.25 ]", + "[ 7/2 → 4/1 | note:bb pattack:0.5 ]", ] `; exports[`runs examples > example "pcurve" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", - "[ 1/2 → 1/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", - "[ 1/1 → 3/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", - "[ 3/2 → 2/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", - "[ 2/1 → 5/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", - "[ 5/2 → 3/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", - "[ 3/1 → 7/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", - "[ 7/2 → 4/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 0/1 → 1/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 1/4 → 1/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 1/2 → 3/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 3/4 → 1/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 1/1 → 5/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 5/4 → 3/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 3/2 → 7/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 7/4 → 2/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 2/1 → 9/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 9/4 → 5/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 5/2 → 11/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 11/4 → 3/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:0 ]", + "[ 3/1 → 13/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 13/4 → 7/2 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 7/2 → 15/4 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", + "[ 15/4 → 4/1 | note:g1 s:sine pdecay:0.5 penv:32 pcurve:1 ]", ] `; @@ -3417,30 +4456,54 @@ exports[`runs examples > example "penv" example index 0 1`] = ` exports[`runs examples > example "perlin" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:512.5097280354112 ]", - "[ 0/1 → 1/2 | s:bd cutoff:580.6710979013587 ]", - "[ 1/4 → 1/2 | s:hh cutoff:714.4728658238364 ]", - "[ 1/2 → 3/4 | s:hh cutoff:1064.8403818270253 ]", - "[ 1/2 → 1/1 | s:sd cutoff:1198.642149749503 ]", - "[ 3/4 → 1/1 | s:hh cutoff:1266.8035196154506 ]", - "[ 1/1 → 5/4 | s:hh cutoff:1289.9073678111108 ]", - "[ 1/1 → 3/2 | s:bd cutoff:1347.6312240454718 ]", - "[ 5/4 → 3/2 | s:hh cutoff:1460.943999751862 ]", - "[ 3/2 → 7/4 | s:hh cutoff:1757.659927890245 ]", - "[ 3/2 → 2/1 | s:sd cutoff:1870.9727035966353 ]", - "[ 7/4 → 2/1 | s:hh cutoff:1928.6965598309962 ]", - "[ 2/1 → 9/4 | s:hh cutoff:1921.4187992119491 ]", - "[ 2/1 → 5/2 | s:bd cutoff:1824.0408328365447 ]", - "[ 9/4 → 5/2 | s:hh cutoff:1632.8864578093203 ]", - "[ 5/2 → 11/4 | s:hh cutoff:1132.3378881504027 ]", - "[ 5/2 → 3/1 | s:sd cutoff:941.1835131231783 ]", - "[ 11/4 → 3/1 | s:hh cutoff:843.8055467477739 ]", - "[ 3/1 → 13/4 | s:hh cutoff:822.6507404420431 ]", - "[ 3/1 → 7/2 | s:bd cutoff:804.763165235272 ]", - "[ 13/4 → 7/2 | s:hh cutoff:769.6495929696425 ]", - "[ 7/2 → 15/4 | s:hh cutoff:677.7027130163447 ]", - "[ 7/2 → 4/1 | s:sd cutoff:642.5891407507152 ]", - "[ 15/4 → 4/1 | s:hh cutoff:624.7015655439441 ]", + "[ 0/1 → 1/8 | s:hh cutoff:508.6435442640109 ]", + "[ 0/1 → 1/4 | s:bd cutoff:562.5486401770559 ]", + "[ 1/8 → 1/4 | s:hh cutoff:690.0316279333581 ]", + "[ 1/4 → 3/8 | s:hh cutoff:1201.405408354283 ]", + "[ 1/4 → 1/2 | s:bd cutoff:1572.364329119182 ]", + "[ 3/8 → 1/2 | s:hh cutoff:1996.3885173346725 ]", + "[ 1/2 → 5/8 | s:hh cutoff:2900.177720919636 ]", + "[ 1/2 → 3/4 | s:bd cutoff:3324.2019091351267 ]", + "[ 5/8 → 3/4 | s:hh cutoff:3695.1608299000254 ]", + "[ 3/4 → 7/8 | s:hh cutoff:4206.53461032095 ]", + "[ 3/4 → 1/1 | s:bd cutoff:4334.017598077253 ]", + "[ 7/8 → 1/1 | s:hh cutoff:4387.922693990298 ]", + "[ 1/1 → 9/8 | s:hh cutoff:4403.886201269024 ]", + "[ 1/1 → 5/4 | s:bd cutoff:4449.536839055554 ]", + "[ 9/8 → 5/4 | s:hh cutoff:4557.49842597853 ]", + "[ 5/4 → 11/8 | s:hh cutoff:4990.565816512096 ]", + "[ 5/4 → 3/2 | s:bd cutoff:5304.71999875931 ]", + "[ 11/8 → 3/2 | s:hh cutoff:5663.813592807962 ]", + "[ 3/2 → 13/8 | s:hh cutoff:6429.206045402573 ]", + "[ 3/2 → 7/4 | s:bd cutoff:6788.299639451225 ]", + "[ 13/8 → 7/4 | s:hh cutoff:7102.453821698439 ]", + "[ 7/4 → 15/8 | s:hh cutoff:7535.521212232005 ]", + "[ 7/4 → 2/1 | s:bd cutoff:7643.482799154981 ]", + "[ 15/8 → 2/1 | s:hh cutoff:7689.133436941511 ]", + "[ 2/1 → 17/8 | s:hh cutoff:7684.104898681083 ]", + "[ 2/1 → 9/4 | s:bd cutoff:7607.093996059746 ]", + "[ 17/8 → 9/4 | s:hh cutoff:7424.966874501246 ]", + "[ 9/4 → 19/8 | s:hh cutoff:6694.398535088075 ]", + "[ 9/4 → 5/2 | s:bd cutoff:6164.432289046601 ]", + "[ 19/8 → 5/2 | s:hh cutoff:5558.654951771659 ]", + "[ 5/2 → 21/8 | s:hh cutoff:4267.466778026956 ]", + "[ 5/2 → 11/4 | s:bd cutoff:3661.6894407520135 ]", + "[ 21/8 → 11/4 | s:hh cutoff:3131.72319471054 ]", + "[ 11/4 → 23/8 | s:hh cutoff:2401.154855297369 ]", + "[ 11/4 → 3/1 | s:bd cutoff:2219.0277337388693 ]", + "[ 23/8 → 3/1 | s:hh cutoff:2142.016831117532 ]", + "[ 3/1 → 25/8 | s:hh cutoff:2127.4000061807656 ]", + "[ 3/1 → 13/4 | s:bd cutoff:2113.2537022102156 ]", + "[ 25/8 → 13/4 | s:hh cutoff:2079.7983662103743 ]", + "[ 13/4 → 27/8 | s:hh cutoff:1945.5986431995261 ]", + "[ 13/4 → 7/2 | s:bd cutoff:1848.2479648482126 ]", + "[ 27/8 → 7/2 | s:hh cutoff:1736.9713785485014 ]", + "[ 7/2 → 29/8 | s:hh cutoff:1499.7901513814345 ]", + "[ 7/2 → 15/4 | s:bd cutoff:1388.5135650817233 ]", + "[ 29/8 → 15/4 | s:hh cutoff:1291.1628867304098 ]", + "[ 15/4 → 31/8 | s:hh cutoff:1156.9631637195616 ]", + "[ 15/4 → 4/1 | s:bd cutoff:1123.5078277197204 ]", + "[ 31/8 → 4/1 | s:hh cutoff:1109.36152374917 ]", ] `; @@ -3800,47 +4863,79 @@ exports[`runs examples > example "polymeter" example index 0 1`] = ` exports[`runs examples > example "polymeterSteps" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c ]", + "[ 0/1 → 1/4 | note:c ]", "[ 0/1 → 1/1 | s:bd ]", - "[ 1/2 → 1/1 | note:d ]", - "[ 1/1 → 3/2 | note:e ]", + "[ 1/4 → 1/2 | note:d ]", + "[ 1/2 → 3/4 | note:e ]", + "[ 3/4 → 1/1 | note:c ]", + "[ 1/1 → 5/4 | note:d ]", "[ 1/1 → 2/1 | s:bd ]", - "[ 3/2 → 2/1 | note:f ]", - "[ 2/1 → 5/2 | note:g ]", + "[ 5/4 → 3/2 | note:e ]", + "[ 3/2 → 7/4 | note:c ]", + "[ 7/4 → 2/1 | note:d ]", + "[ 2/1 → 9/4 | note:e ]", "[ 2/1 → 3/1 | s:bd ]", - "[ 5/2 → 3/1 | note:f ]", - "[ 3/1 → 7/2 | note:e ]", + "[ 9/4 → 5/2 | note:c ]", + "[ 5/2 → 11/4 | note:d ]", + "[ 11/4 → 3/1 | note:e ]", + "[ 3/1 → 13/4 | note:c ]", "[ 3/1 → 4/1 | s:bd ]", - "[ 7/2 → 4/1 | note:d ]", + "[ 13/4 → 7/2 | note:d ]", + "[ 7/2 → 15/4 | note:e ]", + "[ 15/4 → 4/1 | note:c ]", ] `; exports[`runs examples > example "postgain" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 0/1 → 1/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 1/4 → 1/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 1/2 → 3/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 1/2 → 1/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 3/4 → 1/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 1/1 → 5/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 1/1 → 3/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 5/4 → 3/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 3/2 → 7/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 3/2 → 2/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 7/4 → 2/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 2/1 → 9/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 2/1 → 5/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 9/4 → 5/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 5/2 → 11/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 5/2 → 3/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 11/4 → 3/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 3/1 → 13/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 3/1 → 7/2 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 13/4 → 7/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 7/2 → 15/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 7/2 → 4/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", - "[ 15/4 → 4/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 0/1 → 1/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 0/1 → 1/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/8 → 1/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/4 → 3/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/4 → 1/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/8 → 1/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/2 → 5/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 5/8 → 3/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 5/8 → 3/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/4 → 7/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/4 → 1/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 7/8 → 1/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/1 → 9/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 1/1 → 5/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 9/8 → 5/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 5/4 → 11/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 5/4 → 3/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 11/8 → 3/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/2 → 13/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 13/8 → 7/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 13/8 → 7/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 7/4 → 15/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 7/4 → 2/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 15/8 → 2/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 2/1 → 17/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 2/1 → 9/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 17/8 → 9/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 9/4 → 19/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 9/4 → 5/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 19/8 → 5/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 5/2 → 21/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 21/8 → 11/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 21/8 → 11/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 11/4 → 23/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 11/4 → 3/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 23/8 → 3/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/1 → 25/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 3/1 → 13/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 25/8 → 13/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 13/4 → 27/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 13/4 → 7/2 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 27/8 → 7/2 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 7/2 → 29/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 29/8 → 15/4 | s:bd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 29/8 → 15/4 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 15/4 → 31/8 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 15/4 → 4/1 | s:sd compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", + "[ 31/8 → 4/1 | s:hh compressor:-20 compressorRatio:20 compressorKnee:10 compressorAttack:0.002 compressorRelease:0.02 postgain:1.5 ]", ] `; @@ -3908,117 +5003,213 @@ exports[`runs examples > example "queryArc" example index 0 1`] = `[]`; exports[`runs examples > example "rand" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:1527.8233550488949 ]", - "[ 0/1 → 1/2 | s:bd cutoff:1054.6395378187299 ]", - "[ 1/4 → 1/2 | s:hh cutoff:1102.0887736231089 ]", - "[ 1/2 → 3/4 | s:hh cutoff:703.4538015723228 ]", - "[ 1/2 → 1/1 | s:sd cutoff:793.7397202476859 ]", - "[ 3/4 → 1/1 | s:hh cutoff:1096.4466212317348 ]", - "[ 1/1 → 5/4 | s:hh cutoff:1508.7342718616128 ]", - "[ 1/1 → 3/2 | s:bd cutoff:1593.0923046544194 ]", - "[ 5/4 → 3/2 | s:hh cutoff:774.2056278511882 ]", - "[ 3/2 → 7/4 | s:hh cutoff:1245.1320672407746 ]", - "[ 3/2 → 2/1 | s:sd cutoff:807.1068441495299 ]", - "[ 7/4 → 2/1 | s:hh cutoff:1391.8357687070966 ]", - "[ 2/1 → 9/4 | s:hh cutoff:1855.0854409113526 ]", - "[ 2/1 → 5/2 | s:bd cutoff:1018.2237671688199 ]", - "[ 9/4 → 5/2 | s:hh cutoff:1754.75996080786 ]", - "[ 5/2 → 11/4 | s:hh cutoff:740.2902264147997 ]", - "[ 5/2 → 3/1 | s:sd cutoff:1449.8491557314992 ]", - "[ 11/4 → 3/1 | s:hh cutoff:524.3812575936317 ]", - "[ 3/1 → 13/4 | s:hh cutoff:1014.865817502141 ]", - "[ 3/1 → 7/2 | s:bd cutoff:1988.5476073250175 ]", - "[ 13/4 → 7/2 | s:hh cutoff:1113.0377016961575 ]", - "[ 7/2 → 15/4 | s:hh cutoff:1908.7228681892157 ]", - "[ 7/2 → 4/1 | s:sd cutoff:1718.2509833946824 ]", - "[ 15/4 → 4/1 | s:hh cutoff:1604.2498080059886 ]", + "[ 0/1 → 1/8 | s:hh cutoff:6819.558387622237 ]", + "[ 0/1 → 1/4 | s:bd cutoff:5639.116775244474 ]", + "[ 1/8 → 1/4 | s:hh cutoff:2004.9930522218347 ]", + "[ 1/4 → 3/8 | s:hh cutoff:4756.746228784323 ]", + "[ 1/4 → 1/2 | s:bd cutoff:3510.4438681155443 ]", + "[ 3/8 → 1/2 | s:hh cutoff:2761.9159147143364 ]", + "[ 1/2 → 5/8 | s:hh cutoff:1729.9383850768209 ]", + "[ 1/2 → 3/4 | s:bd cutoff:1517.2690078616142 ]", + "[ 5/8 → 3/4 | s:hh cutoff:3566.087872721255 ]", + "[ 3/4 → 7/8 | s:hh cutoff:6137.170048430562 ]", + "[ 3/4 → 1/1 | s:bd cutoff:3482.2331061586738 ]", + "[ 7/8 → 1/1 | s:hh cutoff:5772.184181958437 ]", + "[ 1/1 → 9/8 | s:hh cutoff:4614.746660925448 ]", + "[ 1/1 → 5/4 | s:bd cutoff:5543.671359308064 ]", + "[ 9/8 → 5/4 | s:hh cutoff:1113.0998814478517 ]", + "[ 5/4 → 11/8 | s:hh cutoff:1107.8209029510617 ]", + "[ 5/4 → 3/2 | s:bd cutoff:1871.028139255941 ]", + "[ 11/8 → 3/2 | s:hh cutoff:4310.953143984079 ]", + "[ 3/2 → 13/8 | s:hh cutoff:1781.9574819877744 ]", + "[ 3/2 → 7/4 | s:bd cutoff:4225.660336203873 ]", + "[ 13/8 → 7/4 | s:hh cutoff:2719.179579988122 ]", + "[ 7/4 → 15/8 | s:hh cutoff:4021.807170473039 ]", + "[ 7/4 → 2/1 | s:bd cutoff:4959.178843535483 ]", + "[ 15/8 → 2/1 | s:hh cutoff:7004.444479942322 ]", + "[ 2/1 → 17/8 | s:hh cutoff:2993.588156066835 ]", + "[ 2/1 → 9/4 | s:bd cutoff:7275.427204556763 ]", + "[ 17/8 → 9/4 | s:hh cutoff:777.5058569386601 ]", + "[ 9/4 → 19/8 | s:hh cutoff:5487.157452851534 ]", + "[ 9/4 → 5/2 | s:bd cutoff:6773.7998040392995 ]", + "[ 19/8 → 5/2 | s:hh cutoff:1567.3565790057182 ]", + "[ 5/2 → 21/8 | s:hh cutoff:5051.505241543055 ]", + "[ 5/2 → 11/4 | s:bd cutoff:1701.4511320739985 ]", + "[ 21/8 → 11/4 | s:hh cutoff:4535.26512440294 ]", + "[ 11/4 → 23/8 | s:hh cutoff:7184.7053822129965 ]", + "[ 11/4 → 3/1 | s:bd cutoff:621.9062879681587 ]", + "[ 23/8 → 3/1 | s:hh cutoff:2622.942116111517 ]", + "[ 3/1 → 25/8 | s:hh cutoff:593.8915926963091 ]", + "[ 3/1 → 13/4 | s:bd cutoff:3074.329087510705 ]", + "[ 25/8 → 13/4 | s:hh cutoff:7293.169681914151 ]", + "[ 13/4 → 27/8 | s:hh cutoff:2926.4930188655853 ]", + "[ 13/4 → 7/2 | s:bd cutoff:3565.1885084807873 ]", + "[ 27/8 → 7/2 | s:hh cutoff:6317.582858726382 ]", + "[ 7/2 → 29/8 | s:hh cutoff:6600.099291652441 ]", + "[ 7/2 → 15/4 | s:bd cutoff:7543.614340946078 ]", + "[ 29/8 → 15/4 | s:hh cutoff:7798.531164415181 ]", + "[ 15/4 → 31/8 | s:hh cutoff:1256.6942740231752 ]", + "[ 15/4 → 4/1 | s:bd cutoff:6021.249040029943 ]", + "[ 31/8 → 4/1 | s:hh cutoff:2792.31677018106 ]", ] `; exports[`runs examples > example "range" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:1396.3177415120963 ]", - "[ 0/1 → 1/2 | s:bd cutoff:1537.0125742738173 ]", - "[ 1/4 → 1/2 | s:hh cutoff:1666.6776747647016 ]", - "[ 1/2 → 3/4 | s:hh cutoff:1873.602209226909 ]", - "[ 1/2 → 1/1 | s:sd cutoff:1942.909649383465 ]", - "[ 3/4 → 1/1 | s:hh cutoff:1985.5889603024227 ]", - "[ 1/1 → 5/4 | s:hh cutoff:1985.5889603024227 ]", - "[ 1/1 → 3/2 | s:bd cutoff:1942.909649383465 ]", - "[ 5/4 → 3/2 | s:hh cutoff:1873.602209226909 ]", - "[ 3/2 → 7/4 | s:hh cutoff:1666.6776747647016 ]", - "[ 3/2 → 2/1 | s:sd cutoff:1537.0125742738173 ]", - "[ 7/4 → 2/1 | s:hh cutoff:1396.3177415120965 ]", - "[ 2/1 → 9/4 | s:hh cutoff:1103.6822584879037 ]", - "[ 2/1 → 5/2 | s:bd cutoff:962.9874257261828 ]", - "[ 9/4 → 5/2 | s:hh cutoff:833.3223252352985 ]", - "[ 5/2 → 11/4 | s:hh cutoff:626.3977907730911 ]", - "[ 5/2 → 3/1 | s:sd cutoff:557.0903506165351 ]", - "[ 11/4 → 3/1 | s:hh cutoff:514.4110396975773 ]", - "[ 3/1 → 13/4 | s:hh cutoff:514.4110396975772 ]", - "[ 3/1 → 7/2 | s:bd cutoff:557.090350616535 ]", - "[ 13/4 → 7/2 | s:hh cutoff:626.397790773091 ]", - "[ 7/2 → 15/4 | s:hh cutoff:833.3223252352984 ]", - "[ 7/2 → 4/1 | s:sd cutoff:962.9874257261822 ]", - "[ 15/4 → 4/1 | s:hh cutoff:1103.6822584879035 ]", + "[ 0/1 → 1/8 | s:hh cutoff:2919.6960066389074 ]", + "[ 0/1 → 1/4 | s:bd cutoff:3487.436867076458 ]", + "[ 1/8 → 1/4 | s:hh cutoff:3866.789181894752 ]", + "[ 1/4 → 3/8 | s:hh cutoff:3866.789181894752 ]", + "[ 1/4 → 1/2 | s:sd cutoff:3487.436867076458 ]", + "[ 3/8 → 1/2 | s:hh cutoff:2919.6960066389074 ]", + "[ 1/2 → 5/8 | s:hh cutoff:1580.3039933610933 ]", + "[ 1/2 → 3/4 | s:bd cutoff:1012.563132923542 ]", + "[ 5/8 → 3/4 | s:hh cutoff:633.2108181052486 ]", + "[ 3/4 → 7/8 | s:hh cutoff:633.2108181052483 ]", + "[ 3/4 → 1/1 | s:sd cutoff:1012.5631329235415 ]", + "[ 7/8 → 1/1 | s:hh cutoff:1580.303993361092 ]", + "[ 1/1 → 9/8 | s:hh cutoff:2919.6960066389074 ]", + "[ 1/1 → 5/4 | s:bd cutoff:3487.436867076458 ]", + "[ 9/8 → 5/4 | s:hh cutoff:3866.7891818947514 ]", + "[ 5/4 → 11/8 | s:hh cutoff:3866.789181894752 ]", + "[ 5/4 → 3/2 | s:sd cutoff:3487.4368670764597 ]", + "[ 11/8 → 3/2 | s:hh cutoff:2919.6960066389083 ]", + "[ 3/2 → 13/8 | s:hh cutoff:1580.3039933610928 ]", + "[ 3/2 → 7/4 | s:bd cutoff:1012.5631329235412 ]", + "[ 13/8 → 7/4 | s:hh cutoff:633.2108181052488 ]", + "[ 7/4 → 15/8 | s:hh cutoff:633.2108181052482 ]", + "[ 7/4 → 2/1 | s:sd cutoff:1012.5631329235401 ]", + "[ 15/8 → 2/1 | s:hh cutoff:1580.3039933610914 ]", + "[ 2/1 → 17/8 | s:hh cutoff:2919.696006638907 ]", + "[ 2/1 → 9/4 | s:bd cutoff:3487.436867076459 ]", + "[ 17/8 → 9/4 | s:hh cutoff:3866.7891818947514 ]", + "[ 9/4 → 19/8 | s:hh cutoff:3866.7891818947523 ]", + "[ 9/4 → 5/2 | s:sd cutoff:3487.43686707646 ]", + "[ 19/8 → 5/2 | s:hh cutoff:2919.696006638909 ]", + "[ 5/2 → 21/8 | s:hh cutoff:1580.303993361096 ]", + "[ 5/2 → 11/4 | s:bd cutoff:1012.5631329235415 ]", + "[ 21/8 → 11/4 | s:hh cutoff:633.210818105249 ]", + "[ 11/4 → 23/8 | s:hh cutoff:633.210818105248 ]", + "[ 11/4 → 3/1 | s:sd cutoff:1012.5631329235398 ]", + "[ 23/8 → 3/1 | s:hh cutoff:1580.303993361094 ]", + "[ 3/1 → 25/8 | s:hh cutoff:2919.696006638904 ]", + "[ 3/1 → 13/4 | s:bd cutoff:3487.4368670764584 ]", + "[ 25/8 → 13/4 | s:hh cutoff:3866.789181894751 ]", + "[ 13/4 → 27/8 | s:hh cutoff:3866.7891818947523 ]", + "[ 13/4 → 7/2 | s:sd cutoff:3487.43686707646 ]", + "[ 27/8 → 7/2 | s:hh cutoff:2919.6960066389065 ]", + "[ 7/2 → 29/8 | s:hh cutoff:1580.3039933610964 ]", + "[ 7/2 → 15/4 | s:bd cutoff:1012.5631329235417 ]", + "[ 29/8 → 15/4 | s:hh cutoff:633.210818105249 ]", + "[ 15/4 → 31/8 | s:hh cutoff:633.2108181052479 ]", + "[ 15/4 → 4/1 | s:sd cutoff:1012.5631329235396 ]", + "[ 31/8 → 4/1 | s:hh cutoff:1580.3039933610935 ]", ] `; exports[`runs examples > example "range2" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:1396.3177415120963 ]", - "[ 0/1 → 1/2 | s:bd cutoff:1537.0125742738173 ]", - "[ 1/4 → 1/2 | s:hh cutoff:1666.6776747647016 ]", - "[ 1/2 → 3/4 | s:hh cutoff:1873.602209226909 ]", - "[ 1/2 → 1/1 | s:sd cutoff:1942.909649383465 ]", - "[ 3/4 → 1/1 | s:hh cutoff:1985.5889603024227 ]", - "[ 1/1 → 5/4 | s:hh cutoff:1985.5889603024227 ]", - "[ 1/1 → 3/2 | s:bd cutoff:1942.909649383465 ]", - "[ 5/4 → 3/2 | s:hh cutoff:1873.602209226909 ]", - "[ 3/2 → 7/4 | s:hh cutoff:1666.6776747647016 ]", - "[ 3/2 → 2/1 | s:sd cutoff:1537.0125742738173 ]", - "[ 7/4 → 2/1 | s:hh cutoff:1396.3177415120965 ]", - "[ 2/1 → 9/4 | s:hh cutoff:1103.6822584879037 ]", - "[ 2/1 → 5/2 | s:bd cutoff:962.9874257261828 ]", - "[ 9/4 → 5/2 | s:hh cutoff:833.3223252352985 ]", - "[ 5/2 → 11/4 | s:hh cutoff:626.3977907730911 ]", - "[ 5/2 → 3/1 | s:sd cutoff:557.0903506165351 ]", - "[ 11/4 → 3/1 | s:hh cutoff:514.4110396975773 ]", - "[ 3/1 → 13/4 | s:hh cutoff:514.4110396975772 ]", - "[ 3/1 → 7/2 | s:bd cutoff:557.090350616535 ]", - "[ 13/4 → 7/2 | s:hh cutoff:626.397790773091 ]", - "[ 7/2 → 15/4 | s:hh cutoff:833.3223252352984 ]", - "[ 7/2 → 4/1 | s:sd cutoff:962.9874257261822 ]", - "[ 15/4 → 4/1 | s:hh cutoff:1103.6822584879035 ]", + "[ 0/1 → 1/8 | s:hh cutoff:2919.6960066389074 ]", + "[ 0/1 → 1/4 | s:bd cutoff:3487.436867076458 ]", + "[ 1/8 → 1/4 | s:hh cutoff:3866.789181894752 ]", + "[ 1/4 → 3/8 | s:hh cutoff:3866.789181894752 ]", + "[ 1/4 → 1/2 | s:sd cutoff:3487.436867076458 ]", + "[ 3/8 → 1/2 | s:hh cutoff:2919.6960066389074 ]", + "[ 1/2 → 5/8 | s:hh cutoff:1580.3039933610933 ]", + "[ 1/2 → 3/4 | s:bd cutoff:1012.563132923542 ]", + "[ 5/8 → 3/4 | s:hh cutoff:633.2108181052486 ]", + "[ 3/4 → 7/8 | s:hh cutoff:633.2108181052483 ]", + "[ 3/4 → 1/1 | s:sd cutoff:1012.5631329235415 ]", + "[ 7/8 → 1/1 | s:hh cutoff:1580.303993361092 ]", + "[ 1/1 → 9/8 | s:hh cutoff:2919.6960066389074 ]", + "[ 1/1 → 5/4 | s:bd cutoff:3487.436867076458 ]", + "[ 9/8 → 5/4 | s:hh cutoff:3866.7891818947514 ]", + "[ 5/4 → 11/8 | s:hh cutoff:3866.789181894752 ]", + "[ 5/4 → 3/2 | s:sd cutoff:3487.4368670764597 ]", + "[ 11/8 → 3/2 | s:hh cutoff:2919.6960066389083 ]", + "[ 3/2 → 13/8 | s:hh cutoff:1580.3039933610928 ]", + "[ 3/2 → 7/4 | s:bd cutoff:1012.5631329235412 ]", + "[ 13/8 → 7/4 | s:hh cutoff:633.2108181052488 ]", + "[ 7/4 → 15/8 | s:hh cutoff:633.2108181052482 ]", + "[ 7/4 → 2/1 | s:sd cutoff:1012.5631329235401 ]", + "[ 15/8 → 2/1 | s:hh cutoff:1580.3039933610914 ]", + "[ 2/1 → 17/8 | s:hh cutoff:2919.696006638907 ]", + "[ 2/1 → 9/4 | s:bd cutoff:3487.436867076459 ]", + "[ 17/8 → 9/4 | s:hh cutoff:3866.7891818947514 ]", + "[ 9/4 → 19/8 | s:hh cutoff:3866.7891818947523 ]", + "[ 9/4 → 5/2 | s:sd cutoff:3487.43686707646 ]", + "[ 19/8 → 5/2 | s:hh cutoff:2919.696006638909 ]", + "[ 5/2 → 21/8 | s:hh cutoff:1580.303993361096 ]", + "[ 5/2 → 11/4 | s:bd cutoff:1012.5631329235415 ]", + "[ 21/8 → 11/4 | s:hh cutoff:633.210818105249 ]", + "[ 11/4 → 23/8 | s:hh cutoff:633.210818105248 ]", + "[ 11/4 → 3/1 | s:sd cutoff:1012.5631329235398 ]", + "[ 23/8 → 3/1 | s:hh cutoff:1580.303993361094 ]", + "[ 3/1 → 25/8 | s:hh cutoff:2919.696006638904 ]", + "[ 3/1 → 13/4 | s:bd cutoff:3487.4368670764584 ]", + "[ 25/8 → 13/4 | s:hh cutoff:3866.789181894751 ]", + "[ 13/4 → 27/8 | s:hh cutoff:3866.7891818947523 ]", + "[ 13/4 → 7/2 | s:sd cutoff:3487.43686707646 ]", + "[ 27/8 → 7/2 | s:hh cutoff:2919.6960066389065 ]", + "[ 7/2 → 29/8 | s:hh cutoff:1580.3039933610964 ]", + "[ 7/2 → 15/4 | s:bd cutoff:1012.5631329235417 ]", + "[ 29/8 → 15/4 | s:hh cutoff:633.210818105249 ]", + "[ 15/4 → 31/8 | s:hh cutoff:633.2108181052479 ]", + "[ 15/4 → 4/1 | s:sd cutoff:1012.5631329235396 ]", + "[ 31/8 → 4/1 | s:hh cutoff:1580.3039933610935 ]", ] `; exports[`runs examples > example "rangex" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh cutoff:1144.7958299590086 ]", - "[ 0/1 → 1/2 | s:bd cutoff:1303.7646214531312 ]", - "[ 1/4 → 1/2 | s:hh cutoff:1469.7494449054268 ]", - "[ 1/2 → 3/4 | s:hh cutoff:1779.4971377133336 ]", - "[ 1/2 → 1/1 | s:sd cutoff:1897.2102033890155 ]", - "[ 3/4 → 1/1 | s:hh cutoff:1973.5393435463043 ]", - "[ 1/1 → 5/4 | s:hh cutoff:1973.5393435463043 ]", - "[ 1/1 → 3/2 | s:bd cutoff:1897.2102033890155 ]", - "[ 5/4 → 3/2 | s:hh cutoff:1779.4971377133336 ]", - "[ 3/2 → 7/4 | s:hh cutoff:1469.7494449054268 ]", - "[ 3/2 → 2/1 | s:sd cutoff:1303.7646214531312 ]", - "[ 7/4 → 2/1 | s:hh cutoff:1144.7958299590086 ]", - "[ 2/1 → 9/4 | s:hh cutoff:873.5182063301246 ]", - "[ 2/1 → 5/2 | s:bd cutoff:767.0096147304824 ]", - "[ 9/4 → 5/2 | s:hh cutoff:680.3880780266911 ]", - "[ 5/2 → 11/4 | s:hh cutoff:561.9565094018676 ]", - "[ 5/2 → 3/1 | s:sd cutoff:527.0897226958216 ]", - "[ 11/4 → 3/1 | s:hh cutoff:506.70385835991164 ]", - "[ 3/1 → 13/4 | s:hh cutoff:506.7038583599112 ]", - "[ 3/1 → 7/2 | s:bd cutoff:527.0897226958216 ]", - "[ 13/4 → 7/2 | s:hh cutoff:561.9565094018676 ]", - "[ 7/2 → 15/4 | s:hh cutoff:680.3880780266911 ]", - "[ 7/2 → 4/1 | s:sd cutoff:767.0096147304824 ]", - "[ 15/4 → 4/1 | s:hh cutoff:873.5182063301246 ]", + "[ 0/1 → 1/8 | s:hh cutoff:2105.2990079237074 ]", + "[ 0/1 → 1/4 | s:bd cutoff:2949.8879833392693 ]", + "[ 1/8 → 1/4 | s:hh cutoff:3695.6273740439246 ]", + "[ 1/4 → 3/8 | s:hh cutoff:3695.6273740439246 ]", + "[ 1/4 → 1/2 | s:sd cutoff:2949.8879833392693 ]", + "[ 3/8 → 1/2 | s:hh cutoff:2105.2990079237074 ]", + "[ 1/2 → 5/8 | s:hh cutoff:949.9838229499019 ]", + "[ 1/2 → 3/4 | s:bd cutoff:677.9918462313955 ]", + "[ 5/8 → 3/4 | s:hh cutoff:541.1801022058963 ]", + "[ 3/4 → 7/8 | s:hh cutoff:541.1801022058963 ]", + "[ 3/4 → 1/1 | s:sd cutoff:677.9918462313955 ]", + "[ 7/8 → 1/1 | s:hh cutoff:949.9838229499011 ]", + "[ 1/1 → 9/8 | s:hh cutoff:2105.2990079237093 ]", + "[ 1/1 → 5/4 | s:bd cutoff:2949.8879833392693 ]", + "[ 9/8 → 5/4 | s:hh cutoff:3695.6273740439246 ]", + "[ 5/4 → 11/8 | s:hh cutoff:3695.6273740439246 ]", + "[ 5/4 → 3/2 | s:sd cutoff:2949.887983339272 ]", + "[ 11/8 → 3/2 | s:hh cutoff:2105.2990079237093 ]", + "[ 3/2 → 13/8 | s:hh cutoff:949.9838229499019 ]", + "[ 3/2 → 7/4 | s:bd cutoff:677.9918462313955 ]", + "[ 13/8 → 7/4 | s:hh cutoff:541.1801022058963 ]", + "[ 7/4 → 15/8 | s:hh cutoff:541.1801022058963 ]", + "[ 7/4 → 2/1 | s:sd cutoff:677.9918462313948 ]", + "[ 15/8 → 2/1 | s:hh cutoff:949.9838229499011 ]", + "[ 2/1 → 17/8 | s:hh cutoff:2105.2990079237074 ]", + "[ 2/1 → 9/4 | s:bd cutoff:2949.8879833392693 ]", + "[ 17/8 → 9/4 | s:hh cutoff:3695.6273740439246 ]", + "[ 9/4 → 19/8 | s:hh cutoff:3695.6273740439246 ]", + "[ 9/4 → 5/2 | s:sd cutoff:2949.887983339272 ]", + "[ 19/8 → 5/2 | s:hh cutoff:2105.2990079237093 ]", + "[ 5/2 → 21/8 | s:hh cutoff:949.9838229499036 ]", + "[ 5/2 → 11/4 | s:bd cutoff:677.9918462313955 ]", + "[ 21/8 → 11/4 | s:hh cutoff:541.1801022058963 ]", + "[ 11/4 → 23/8 | s:hh cutoff:541.1801022058963 ]", + "[ 11/4 → 3/1 | s:sd cutoff:677.9918462313948 ]", + "[ 23/8 → 3/1 | s:hh cutoff:949.9838229499028 ]", + "[ 3/1 → 25/8 | s:hh cutoff:2105.2990079237034 ]", + "[ 3/1 → 13/4 | s:bd cutoff:2949.8879833392693 ]", + "[ 25/8 → 13/4 | s:hh cutoff:3695.6273740439246 ]", + "[ 13/4 → 27/8 | s:hh cutoff:3695.6273740439246 ]", + "[ 13/4 → 7/2 | s:sd cutoff:2949.887983339272 ]", + "[ 27/8 → 7/2 | s:hh cutoff:2105.2990079237074 ]", + "[ 7/2 → 29/8 | s:hh cutoff:949.9838229499036 ]", + "[ 7/2 → 15/4 | s:bd cutoff:677.9918462313955 ]", + "[ 29/8 → 15/4 | s:hh cutoff:541.1801022058963 ]", + "[ 15/4 → 31/8 | s:hh cutoff:541.1801022058959 ]", + "[ 15/4 → 4/1 | s:sd cutoff:677.9918462313948 ]", + "[ 31/8 → 4/1 | s:hh cutoff:949.9838229499019 ]", ] `; @@ -4061,18 +5252,18 @@ exports[`runs examples > example "rarely" example index 0 1`] = ` exports[`runs examples > example "ratio" example index 0 1`] = ` [ - "[ (0/1 → 1/1) ⇝ 2/1 | freq:110 s:piano ]", - "[ (0/1 → 1/1) ⇝ 2/1 | freq:137.5 s:piano ]", - "[ (0/1 → 1/1) ⇝ 2/1 | freq:165 s:piano ]", - "[ 0/1 ⇜ (1/1 → 2/1) | freq:110 s:piano ]", - "[ 0/1 ⇜ (1/1 → 2/1) | freq:137.5 s:piano ]", - "[ 0/1 ⇜ (1/1 → 2/1) | freq:165 s:piano ]", - "[ (2/1 → 3/1) ⇝ 4/1 | freq:110 s:piano ]", - "[ (2/1 → 3/1) ⇝ 4/1 | freq:137.5 s:piano ]", - "[ (2/1 → 3/1) ⇝ 4/1 | freq:165 s:piano ]", - "[ 2/1 ⇜ (3/1 → 4/1) | freq:110 s:piano ]", - "[ 2/1 ⇜ (3/1 → 4/1) | freq:137.5 s:piano ]", - "[ 2/1 ⇜ (3/1 → 4/1) | freq:165 s:piano ]", + "[ 0/1 → 1/1 | freq:110 s:piano ]", + "[ 0/1 → 1/1 | freq:137.5 s:piano ]", + "[ 0/1 → 1/1 | freq:165 s:piano ]", + "[ 1/1 → 2/1 | freq:110 s:piano ]", + "[ 1/1 → 2/1 | freq:137.5 s:piano ]", + "[ 1/1 → 2/1 | freq:165 s:piano ]", + "[ 2/1 → 3/1 | freq:110 s:piano ]", + "[ 2/1 → 3/1 | freq:137.5 s:piano ]", + "[ 2/1 → 3/1 | freq:165 s:piano ]", + "[ 3/1 → 4/1 | freq:110 s:piano ]", + "[ 3/1 → 4/1 | freq:137.5 s:piano ]", + "[ 3/1 → 4/1 | freq:165 s:piano ]", ] `; @@ -4120,57 +5311,101 @@ exports[`runs examples > example "repeatCycles" example index 0 1`] = ` exports[`runs examples > example "reset" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh ]", - "[ 0/1 → 1/2 | s:bd ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 3/4 | s:hh ]", - "[ 1/2 → 1/1 | s:sd ]", - "[ 3/4 → 1/1 | s:hh ]", - "[ 1/1 → 5/4 | s:hh ]", - "[ 1/1 → 3/2 | s:lt ]", - "[ 5/4 → 3/2 | s:hh ]", - "[ 3/2 → 7/4 | s:hh ]", - "[ 3/2 → 2/1 | s:sd ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 2/1 → 5/2 | s:bd ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:hh ]", - "[ 5/2 → 3/1 | s:sd ]", - "[ 11/4 → 3/1 | s:hh ]", - "[ 3/1 → 25/8 | s:lt ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 0/1 → 1/4 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/4 → 1/2 | s:sd ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 3/4 | s:lt ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 1/1 | s:sd ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 1/1 → 5/4 | s:bd ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 5/4 → 3/2 | s:sd ]", + "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 3/2 → 7/4 | s:lt ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:hh ]", + "[ 7/4 → 2/1 | s:sd ]", + "[ 15/8 → 2/1 | s:hh ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 2/1 → 9/4 | s:bd ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | s:hh ]", + "[ 9/4 → 5/2 | s:sd ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 5/2 → 21/8 | s:hh ]", + "[ 5/2 → 11/4 | s:lt ]", + "[ 21/8 → 11/4 | s:hh ]", + "[ 11/4 → 23/8 | s:hh ]", + "[ 11/4 → 3/1 | s:sd ]", + "[ 23/8 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | s:bd ]", "[ 3/1 → 25/8 | s:hh ]", - "[ 27/8 → 7/2 | s:lt ]", + "[ 13/4 → 27/8 | s:bd ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 27/8 → 7/2 | s:bd ]", "[ 27/8 → 7/2 | s:hh ]", - "[ 15/4 → 31/8 | s:lt ]", + "[ 29/8 → 15/4 | s:bd ]", + "[ 29/8 → 15/4 | s:hh ]", + "[ 15/4 → 31/8 | s:bd ]", "[ 15/4 → 31/8 | s:hh ]", ] `; exports[`runs examples > example "restart" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh ]", - "[ 0/1 → 1/2 | s:bd ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 3/4 | s:hh ]", - "[ 1/2 → 1/1 | s:sd ]", - "[ 3/4 → 1/1 | s:hh ]", - "[ 1/1 → 5/4 | s:hh ]", - "[ 1/1 → 3/2 | s:lt ]", - "[ 5/4 → 3/2 | s:hh ]", - "[ 3/2 → 7/4 | s:hh ]", - "[ 3/2 → 2/1 | s:sd ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 2/1 → 5/2 | s:bd ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:hh ]", - "[ 5/2 → 3/1 | s:sd ]", - "[ 11/4 → 3/1 | s:hh ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 0/1 → 1/4 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/4 → 1/2 | s:sd ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 3/4 | s:lt ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 1/1 | s:sd ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 1/1 → 5/4 | s:bd ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 5/4 → 3/2 | s:sd ]", + "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 3/2 → 7/4 | s:lt ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:hh ]", + "[ 7/4 → 2/1 | s:sd ]", + "[ 15/8 → 2/1 | s:hh ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 2/1 → 9/4 | s:bd ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | s:hh ]", + "[ 9/4 → 5/2 | s:sd ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 5/2 → 21/8 | s:hh ]", + "[ 5/2 → 11/4 | s:lt ]", + "[ 21/8 → 11/4 | s:hh ]", + "[ 11/4 → 23/8 | s:hh ]", + "[ 11/4 → 3/1 | s:sd ]", + "[ 23/8 → 3/1 | s:hh ]", "[ 3/1 → 25/8 | s:bd ]", "[ 3/1 → 25/8 | s:hh ]", + "[ 13/4 → 27/8 | s:bd ]", + "[ 13/4 → 27/8 | s:hh ]", "[ 27/8 → 7/2 | s:bd ]", "[ 27/8 → 7/2 | s:hh ]", + "[ 29/8 → 15/4 | s:bd ]", + "[ 29/8 → 15/4 | s:hh ]", "[ 15/4 → 31/8 | s:bd ]", "[ 15/4 → 31/8 | s:hh ]", ] @@ -4178,26 +5413,39 @@ exports[`runs examples > example "restart" example index 0 1`] = ` exports[`runs examples > example "rev" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:g3 ]", - "[ 1/4 → 1/2 | note:e3 ]", - "[ 1/2 → 3/4 | note:d3 ]", - "[ 3/4 → 1/1 | note:c3 ]", - "[ 1/1 → 5/4 | note:g3 ]", - "[ 5/4 → 3/2 | note:e3 ]", - "[ 3/2 → 7/4 | note:d3 ]", - "[ 7/4 → 2/1 | note:c3 ]", - "[ 2/1 → 9/4 | note:g3 ]", - "[ 9/4 → 5/2 | note:e3 ]", - "[ 5/2 → 11/4 | note:d3 ]", - "[ 11/4 → 3/1 | note:c3 ]", - "[ 3/1 → 13/4 | note:g3 ]", - "[ 13/4 → 7/2 | note:e3 ]", - "[ 7/2 → 15/4 | note:d3 ]", - "[ 15/4 → 4/1 | note:c3 ]", + "[ 0/1 → 1/4 | note:g ]", + "[ 1/4 → 1/2 | note:e ]", + "[ 1/2 → 3/4 | note:d ]", + "[ 3/4 → 1/1 | note:c ]", + "[ 1/1 → 5/4 | note:g ]", + "[ 5/4 → 3/2 | note:e ]", + "[ 3/2 → 7/4 | note:d ]", + "[ 7/4 → 2/1 | note:c ]", + "[ 2/1 → 9/4 | note:g ]", + "[ 9/4 → 5/2 | note:e ]", + "[ 5/2 → 11/4 | note:d ]", + "[ 11/4 → 3/1 | note:c ]", + "[ 3/1 → 13/4 | note:g ]", + "[ 13/4 → 7/2 | note:e ]", + "[ 7/2 → 15/4 | note:d ]", + "[ 15/4 → 4/1 | note:c ]", ] `; exports[`runs examples > example "ribbon" example index 0 1`] = ` +[ + "[ 0/1 → 1/2 | note:d ]", + "[ 1/2 → 1/1 | note:e ]", + "[ 1/1 → 3/2 | note:d ]", + "[ 3/2 → 2/1 | note:e ]", + "[ 2/1 → 5/2 | note:d ]", + "[ 5/2 → 3/1 | note:e ]", + "[ 3/1 → 7/2 | note:d ]", + "[ 7/2 → 4/1 | note:e ]", +] +`; + +exports[`runs examples > example "ribbon" example index 1 1`] = ` [ "[ 0/1 → 1/4 | note:C3 ]", "[ 1/4 → 1/2 | note:G3 ]", @@ -4220,131 +5468,211 @@ exports[`runs examples > example "ribbon" example index 0 1`] = ` exports[`runs examples > example "room" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0 ]", - "[ 1/2 → 1/1 | s:sd room:0 ]", - "[ 1/1 → 3/2 | s:bd room:0.2 ]", - "[ 3/2 → 2/1 | s:sd room:0.2 ]", - "[ 2/1 → 5/2 | s:bd room:0.4 ]", - "[ 5/2 → 3/1 | s:sd room:0.4 ]", - "[ 3/1 → 7/2 | s:bd room:0.6 ]", - "[ 7/2 → 4/1 | s:sd room:0.6 ]", + "[ 0/1 → 1/4 | s:bd room:0 ]", + "[ 1/4 → 1/2 | s:sd room:0 ]", + "[ 5/8 → 3/4 | s:bd room:0 ]", + "[ 3/4 → 1/1 | s:sd room:0 ]", + "[ 1/1 → 5/4 | s:bd room:0.2 ]", + "[ 5/4 → 3/2 | s:sd room:0.2 ]", + "[ 13/8 → 7/4 | s:bd room:0.2 ]", + "[ 7/4 → 2/1 | s:sd room:0.2 ]", + "[ 2/1 → 9/4 | s:bd room:0.4 ]", + "[ 9/4 → 5/2 | s:sd room:0.4 ]", + "[ 21/8 → 11/4 | s:bd room:0.4 ]", + "[ 11/4 → 3/1 | s:sd room:0.4 ]", + "[ 3/1 → 13/4 | s:bd room:0.6 ]", + "[ 13/4 → 7/2 | s:sd room:0.6 ]", + "[ 29/8 → 15/4 | s:bd room:0.6 ]", + "[ 15/4 → 4/1 | s:sd room:0.6 ]", ] `; exports[`runs examples > example "room" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.9 size:1 ]", - "[ 1/2 → 1/1 | s:sd room:0.9 size:1 ]", - "[ 1/1 → 3/2 | s:bd room:0.9 size:4 ]", - "[ 3/2 → 2/1 | s:sd room:0.9 size:4 ]", - "[ 2/1 → 5/2 | s:bd room:0.9 size:1 ]", - "[ 5/2 → 3/1 | s:sd room:0.9 size:1 ]", - "[ 3/1 → 7/2 | s:bd room:0.9 size:4 ]", - "[ 7/2 → 4/1 | s:sd room:0.9 size:4 ]", + "[ 0/1 → 1/4 | s:bd room:0.9 size:1 ]", + "[ 1/4 → 1/2 | s:sd room:0.9 size:1 ]", + "[ 5/8 → 3/4 | s:bd room:0.9 size:1 ]", + "[ 3/4 → 1/1 | s:sd room:0.9 size:1 ]", + "[ 1/1 → 5/4 | s:bd room:0.9 size:4 ]", + "[ 5/4 → 3/2 | s:sd room:0.9 size:4 ]", + "[ 13/8 → 7/4 | s:bd room:0.9 size:4 ]", + "[ 7/4 → 2/1 | s:sd room:0.9 size:4 ]", + "[ 2/1 → 9/4 | s:bd room:0.9 size:1 ]", + "[ 9/4 → 5/2 | s:sd room:0.9 size:1 ]", + "[ 21/8 → 11/4 | s:bd room:0.9 size:1 ]", + "[ 11/4 → 3/1 | s:sd room:0.9 size:1 ]", + "[ 3/1 → 13/4 | s:bd room:0.9 size:4 ]", + "[ 13/4 → 7/2 | s:sd room:0.9 size:4 ]", + "[ 29/8 → 15/4 | s:bd room:0.9 size:4 ]", + "[ 15/4 → 4/1 | s:sd room:0.9 size:4 ]", ] `; exports[`runs examples > example "roomdim" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:10000 roomdim:8000 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:10000 roomdim:8000 ]", ] `; exports[`runs examples > example "roomdim" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:5000 roomdim:400 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:5000 roomdim:400 ]", ] `; exports[`runs examples > example "roomfade" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:10000 roomfade:0.5 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:10000 roomfade:0.5 ]", ] `; exports[`runs examples > example "roomfade" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:5000 roomfade:4 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:5000 roomfade:4 ]", ] `; exports[`runs examples > example "roomlp" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:10000 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:10000 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:10000 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:10000 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:10000 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:10000 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:10000 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:10000 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:10000 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:10000 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:10000 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:10000 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:10000 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:10000 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:10000 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:10000 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:10000 ]", ] `; exports[`runs examples > example "roomlp" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.5 roomlp:5000 ]", - "[ 1/2 → 1/1 | s:sd room:0.5 roomlp:5000 ]", - "[ 1/1 → 3/2 | s:bd room:0.5 roomlp:5000 ]", - "[ 3/2 → 2/1 | s:sd room:0.5 roomlp:5000 ]", - "[ 2/1 → 5/2 | s:bd room:0.5 roomlp:5000 ]", - "[ 5/2 → 3/1 | s:sd room:0.5 roomlp:5000 ]", - "[ 3/1 → 7/2 | s:bd room:0.5 roomlp:5000 ]", - "[ 7/2 → 4/1 | s:sd room:0.5 roomlp:5000 ]", + "[ 0/1 → 1/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 1/4 → 1/2 | s:sd room:0.5 roomlp:5000 ]", + "[ 5/8 → 3/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 3/4 → 1/1 | s:sd room:0.5 roomlp:5000 ]", + "[ 1/1 → 5/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 5/4 → 3/2 | s:sd room:0.5 roomlp:5000 ]", + "[ 13/8 → 7/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 7/4 → 2/1 | s:sd room:0.5 roomlp:5000 ]", + "[ 2/1 → 9/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 9/4 → 5/2 | s:sd room:0.5 roomlp:5000 ]", + "[ 21/8 → 11/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 11/4 → 3/1 | s:sd room:0.5 roomlp:5000 ]", + "[ 3/1 → 13/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 13/4 → 7/2 | s:sd room:0.5 roomlp:5000 ]", + "[ 29/8 → 15/4 | s:bd room:0.5 roomlp:5000 ]", + "[ 15/4 → 4/1 | s:sd room:0.5 roomlp:5000 ]", ] `; exports[`runs examples > example "roomsize" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.8 roomsize:1 ]", - "[ 1/2 → 1/1 | s:sd room:0.8 roomsize:1 ]", - "[ 1/1 → 3/2 | s:bd room:0.8 roomsize:1 ]", - "[ 3/2 → 2/1 | s:sd room:0.8 roomsize:1 ]", - "[ 2/1 → 5/2 | s:bd room:0.8 roomsize:1 ]", - "[ 5/2 → 3/1 | s:sd room:0.8 roomsize:1 ]", - "[ 3/1 → 7/2 | s:bd room:0.8 roomsize:1 ]", - "[ 7/2 → 4/1 | s:sd room:0.8 roomsize:1 ]", + "[ 0/1 → 1/4 | s:bd room:0.8 roomsize:1 ]", + "[ 1/4 → 1/2 | s:sd room:0.8 roomsize:1 ]", + "[ 5/8 → 3/4 | s:bd room:0.8 roomsize:1 ]", + "[ 3/4 → 1/1 | s:sd room:0.8 roomsize:1 ]", + "[ 1/1 → 5/4 | s:bd room:0.8 roomsize:1 ]", + "[ 5/4 → 3/2 | s:sd room:0.8 roomsize:1 ]", + "[ 13/8 → 7/4 | s:bd room:0.8 roomsize:1 ]", + "[ 7/4 → 2/1 | s:sd room:0.8 roomsize:1 ]", + "[ 2/1 → 9/4 | s:bd room:0.8 roomsize:1 ]", + "[ 9/4 → 5/2 | s:sd room:0.8 roomsize:1 ]", + "[ 21/8 → 11/4 | s:bd room:0.8 roomsize:1 ]", + "[ 11/4 → 3/1 | s:sd room:0.8 roomsize:1 ]", + "[ 3/1 → 13/4 | s:bd room:0.8 roomsize:1 ]", + "[ 13/4 → 7/2 | s:sd room:0.8 roomsize:1 ]", + "[ 29/8 → 15/4 | s:bd room:0.8 roomsize:1 ]", + "[ 15/4 → 4/1 | s:sd room:0.8 roomsize:1 ]", ] `; exports[`runs examples > example "roomsize" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | s:bd room:0.8 roomsize:4 ]", - "[ 1/2 → 1/1 | s:sd room:0.8 roomsize:4 ]", - "[ 1/1 → 3/2 | s:bd room:0.8 roomsize:4 ]", - "[ 3/2 → 2/1 | s:sd room:0.8 roomsize:4 ]", - "[ 2/1 → 5/2 | s:bd room:0.8 roomsize:4 ]", - "[ 5/2 → 3/1 | s:sd room:0.8 roomsize:4 ]", - "[ 3/1 → 7/2 | s:bd room:0.8 roomsize:4 ]", - "[ 7/2 → 4/1 | s:sd room:0.8 roomsize:4 ]", + "[ 0/1 → 1/4 | s:bd room:0.8 roomsize:4 ]", + "[ 1/4 → 1/2 | s:sd room:0.8 roomsize:4 ]", + "[ 5/8 → 3/4 | s:bd room:0.8 roomsize:4 ]", + "[ 3/4 → 1/1 | s:sd room:0.8 roomsize:4 ]", + "[ 1/1 → 5/4 | s:bd room:0.8 roomsize:4 ]", + "[ 5/4 → 3/2 | s:sd room:0.8 roomsize:4 ]", + "[ 13/8 → 7/4 | s:bd room:0.8 roomsize:4 ]", + "[ 7/4 → 2/1 | s:sd room:0.8 roomsize:4 ]", + "[ 2/1 → 9/4 | s:bd room:0.8 roomsize:4 ]", + "[ 9/4 → 5/2 | s:sd room:0.8 roomsize:4 ]", + "[ 21/8 → 11/4 | s:bd room:0.8 roomsize:4 ]", + "[ 11/4 → 3/1 | s:sd room:0.8 roomsize:4 ]", + "[ 3/1 → 13/4 | s:bd room:0.8 roomsize:4 ]", + "[ 13/4 → 7/2 | s:sd room:0.8 roomsize:4 ]", + "[ 29/8 → 15/4 | s:bd room:0.8 roomsize:4 ]", + "[ 15/4 → 4/1 | s:sd room:0.8 roomsize:4 ]", ] `; @@ -4379,19 +5707,19 @@ exports[`runs examples > example "run" example index 0 1`] = ` "[ 0/1 → 1/4 | note:C4 ]", "[ 1/4 → 1/2 | note:D4 ]", "[ 1/2 → 3/4 | note:E4 ]", - "[ 3/4 → 1/1 | note:F4 ]", + "[ 3/4 → 1/1 | note:G4 ]", "[ 1/1 → 5/4 | note:C4 ]", "[ 5/4 → 3/2 | note:D4 ]", "[ 3/2 → 7/4 | note:E4 ]", - "[ 7/4 → 2/1 | note:F4 ]", + "[ 7/4 → 2/1 | note:G4 ]", "[ 2/1 → 9/4 | note:C4 ]", "[ 9/4 → 5/2 | note:D4 ]", "[ 5/2 → 11/4 | note:E4 ]", - "[ 11/4 → 3/1 | note:F4 ]", + "[ 11/4 → 3/1 | note:G4 ]", "[ 3/1 → 13/4 | note:C4 ]", "[ 13/4 → 7/2 | note:D4 ]", "[ 7/2 → 15/4 | note:E4 ]", - "[ 15/4 → 4/1 | note:F4 ]", + "[ 15/4 → 4/1 | note:G4 ]", ] `; @@ -4517,43 +5845,91 @@ exports[`runs examples > example "samples" example index 3 1`] = ` exports[`runs examples > example "saw" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c3 clip:0.03125 ]", - "[ 1/4 → 1/2 | note:eb3 clip:0.09375 ]", - "[ 1/4 → 1/2 | note:g3 clip:0.09375 ]", - "[ 1/2 → 3/4 | note:g2 clip:0.15625 ]", - "[ 3/4 → 1/1 | note:g3 clip:0.21875 ]", - "[ 3/4 → 1/1 | note:bb3 clip:0.21875 ]", - "[ 1/1 → 5/4 | note:c3 clip:0.28125 ]", - "[ 5/4 → 3/2 | note:eb3 clip:0.34375 ]", - "[ 5/4 → 3/2 | note:g3 clip:0.34375 ]", - "[ 3/2 → 7/4 | note:g2 clip:0.40625 ]", - "[ 7/4 → 2/1 | note:g3 clip:0.46875 ]", - "[ 7/4 → 2/1 | note:bb3 clip:0.46875 ]", - "[ 2/1 → 9/4 | note:c3 clip:0.53125 ]", - "[ 9/4 → 5/2 | note:eb3 clip:0.59375 ]", - "[ 9/4 → 5/2 | note:g3 clip:0.59375 ]", - "[ 5/2 → 11/4 | note:g2 clip:0.65625 ]", - "[ 11/4 → 3/1 | note:g3 clip:0.71875 ]", - "[ 11/4 → 3/1 | note:bb3 clip:0.71875 ]", - "[ 3/1 → 13/4 | note:c3 clip:0.78125 ]", - "[ 13/4 → 7/2 | note:eb3 clip:0.84375 ]", - "[ 13/4 → 7/2 | note:g3 clip:0.84375 ]", - "[ 7/2 → 15/4 | note:g2 clip:0.90625 ]", - "[ 15/4 → 4/1 | note:g3 clip:0.96875 ]", - "[ 15/4 → 4/1 | note:bb3 clip:0.96875 ]", + "[ 0/1 → 1/8 | note:c3 clip:0.03125 ]", + "[ 1/8 → 1/4 | note:eb3 clip:0.09375 ]", + "[ 1/8 → 1/4 | note:g3 clip:0.09375 ]", + "[ 1/4 → 3/8 | note:g2 clip:0.15625 ]", + "[ 3/8 → 1/2 | note:g3 clip:0.21875 ]", + "[ 3/8 → 1/2 | note:bb3 clip:0.21875 ]", + "[ 1/2 → 5/8 | note:c3 clip:0.28125 ]", + "[ 5/8 → 3/4 | note:eb3 clip:0.34375 ]", + "[ 5/8 → 3/4 | note:g3 clip:0.34375 ]", + "[ 3/4 → 7/8 | note:g2 clip:0.40625 ]", + "[ 7/8 → 1/1 | note:g3 clip:0.46875 ]", + "[ 7/8 → 1/1 | note:bb3 clip:0.46875 ]", + "[ 1/1 → 9/8 | note:c3 clip:0.53125 ]", + "[ 9/8 → 5/4 | note:eb3 clip:0.59375 ]", + "[ 9/8 → 5/4 | note:g3 clip:0.59375 ]", + "[ 5/4 → 11/8 | note:g2 clip:0.65625 ]", + "[ 11/8 → 3/2 | note:g3 clip:0.71875 ]", + "[ 11/8 → 3/2 | note:bb3 clip:0.71875 ]", + "[ 3/2 → 13/8 | note:c3 clip:0.78125 ]", + "[ 13/8 → 7/4 | note:eb3 clip:0.84375 ]", + "[ 13/8 → 7/4 | note:g3 clip:0.84375 ]", + "[ 7/4 → 15/8 | note:g2 clip:0.90625 ]", + "[ 15/8 → 2/1 | note:g3 clip:0.96875 ]", + "[ 15/8 → 2/1 | note:bb3 clip:0.96875 ]", + "[ 2/1 → 17/8 | note:c3 clip:0.03125 ]", + "[ 17/8 → 9/4 | note:eb3 clip:0.09375 ]", + "[ 17/8 → 9/4 | note:g3 clip:0.09375 ]", + "[ 9/4 → 19/8 | note:g2 clip:0.15625 ]", + "[ 19/8 → 5/2 | note:g3 clip:0.21875 ]", + "[ 19/8 → 5/2 | note:bb3 clip:0.21875 ]", + "[ 5/2 → 21/8 | note:c3 clip:0.28125 ]", + "[ 21/8 → 11/4 | note:eb3 clip:0.34375 ]", + "[ 21/8 → 11/4 | note:g3 clip:0.34375 ]", + "[ 11/4 → 23/8 | note:g2 clip:0.40625 ]", + "[ 23/8 → 3/1 | note:g3 clip:0.46875 ]", + "[ 23/8 → 3/1 | note:bb3 clip:0.46875 ]", + "[ 3/1 → 25/8 | note:c3 clip:0.53125 ]", + "[ 25/8 → 13/4 | note:eb3 clip:0.59375 ]", + "[ 25/8 → 13/4 | note:g3 clip:0.59375 ]", + "[ 13/4 → 27/8 | note:g2 clip:0.65625 ]", + "[ 27/8 → 7/2 | note:g3 clip:0.71875 ]", + "[ 27/8 → 7/2 | note:bb3 clip:0.71875 ]", + "[ 7/2 → 29/8 | note:c3 clip:0.78125 ]", + "[ 29/8 → 15/4 | note:eb3 clip:0.84375 ]", + "[ 29/8 → 15/4 | note:g3 clip:0.84375 ]", + "[ 15/4 → 31/8 | note:g2 clip:0.90625 ]", + "[ 31/8 → 4/1 | note:g3 clip:0.96875 ]", + "[ 31/8 → 4/1 | note:bb3 clip:0.96875 ]", ] `; exports[`runs examples > example "saw" example index 1 1`] = ` [ - "[ 0/1 → 1/2 | note:D3 ]", - "[ 1/2 → 1/1 | note:E3 ]", - "[ 1/1 → 3/2 | note:F3 ]", - "[ 3/2 → 2/1 | note:G3 ]", - "[ 2/1 → 5/2 | note:A3 ]", - "[ 5/2 → 3/1 | note:B3 ]", - "[ 3/1 → 7/2 | note:C4 ]", - "[ 7/2 → 4/1 | note:D4 ]", + "[ 0/1 → 1/8 | note:D3 ]", + "[ 1/8 → 1/4 | note:E3 ]", + "[ 1/4 → 3/8 | note:F3 ]", + "[ 3/8 → 1/2 | note:G3 ]", + "[ 1/2 → 5/8 | note:A3 ]", + "[ 5/8 → 3/4 | note:B3 ]", + "[ 3/4 → 7/8 | note:C4 ]", + "[ 7/8 → 1/1 | note:D4 ]", + "[ 1/1 → 9/8 | note:D3 ]", + "[ 9/8 → 5/4 | note:E3 ]", + "[ 5/4 → 11/8 | note:F3 ]", + "[ 11/8 → 3/2 | note:G3 ]", + "[ 3/2 → 13/8 | note:A3 ]", + "[ 13/8 → 7/4 | note:B3 ]", + "[ 7/4 → 15/8 | note:C4 ]", + "[ 15/8 → 2/1 | note:D4 ]", + "[ 2/1 → 17/8 | note:D3 ]", + "[ 17/8 → 9/4 | note:E3 ]", + "[ 9/4 → 19/8 | note:F3 ]", + "[ 19/8 → 5/2 | note:G3 ]", + "[ 5/2 → 21/8 | note:A3 ]", + "[ 21/8 → 11/4 | note:B3 ]", + "[ 11/4 → 23/8 | note:C4 ]", + "[ 23/8 → 3/1 | note:D4 ]", + "[ 3/1 → 25/8 | note:D3 ]", + "[ 25/8 → 13/4 | note:E3 ]", + "[ 13/4 → 27/8 | note:F3 ]", + "[ 27/8 → 7/2 | note:G3 ]", + "[ 7/2 → 29/8 | note:A3 ]", + "[ 29/8 → 15/4 | note:B3 ]", + "[ 15/4 → 31/8 | note:C4 ]", + "[ 31/8 → 4/1 | note:D4 ]", ] `; @@ -4617,38 +5993,38 @@ exports[`runs examples > example "scale" example index 1 1`] = ` exports[`runs examples > example "scale" example index 2 1`] = ` [ - "[ 0/1 → 1/8 | note:C5 s:folkharp ]", - "[ 1/8 → 1/4 | note:F3 s:folkharp ]", - "[ 1/4 → 3/8 | note:F4 s:folkharp ]", - "[ 3/8 → 1/2 | note:A3 s:folkharp ]", - "[ 1/2 → 5/8 | note:F3 s:folkharp ]", - "[ 5/8 → 3/4 | note:C4 s:folkharp ]", - "[ 3/4 → 7/8 | note:A4 s:folkharp ]", - "[ 7/8 → 1/1 | note:G4 s:folkharp ]", - "[ 1/1 → 9/8 | note:F4 s:folkharp ]", - "[ 9/8 → 5/4 | note:D3 s:folkharp ]", - "[ 5/4 → 11/8 | note:D3 s:folkharp ]", - "[ 11/8 → 3/2 | note:D4 s:folkharp ]", - "[ 3/2 → 13/8 | note:F3 s:folkharp ]", - "[ 13/8 → 7/4 | note:A3 s:folkharp ]", - "[ 7/4 → 15/8 | note:D4 s:folkharp ]", - "[ 15/8 → 2/1 | note:C5 s:folkharp ]", - "[ 2/1 → 17/8 | note:A3 s:folkharp ]", - "[ 17/8 → 9/4 | note:C3 s:folkharp ]", - "[ 9/4 → 19/8 | note:G4 s:folkharp ]", - "[ 19/8 → 5/2 | note:F3 s:folkharp ]", - "[ 5/2 → 21/8 | note:F4 s:folkharp ]", - "[ 21/8 → 11/4 | note:D4 s:folkharp ]", - "[ 11/4 → 23/8 | note:D5 s:folkharp ]", - "[ 23/8 → 3/1 | note:G3 s:folkharp ]", - "[ 3/1 → 25/8 | note:C3 s:folkharp ]", - "[ 25/8 → 13/4 | note:D5 s:folkharp ]", - "[ 13/4 → 27/8 | note:A3 s:folkharp ]", - "[ 27/8 → 7/2 | note:A4 s:folkharp ]", - "[ 7/2 → 29/8 | note:C5 s:folkharp ]", - "[ 29/8 → 15/4 | note:F5 s:folkharp ]", - "[ 15/4 → 31/8 | note:D3 s:folkharp ]", - "[ 31/8 → 4/1 | note:A3 s:folkharp ]", + "[ 0/1 → 1/8 | note:D5 s:piano ]", + "[ 1/8 → 1/4 | note:G3 s:piano ]", + "[ 1/4 → 3/8 | note:F4 s:piano ]", + "[ 3/8 → 1/2 | note:A3 s:piano ]", + "[ 1/2 → 5/8 | note:F3 s:piano ]", + "[ 5/8 → 3/4 | note:C4 s:piano ]", + "[ 3/4 → 7/8 | note:C5 s:piano ]", + "[ 7/8 → 1/1 | note:A4 s:piano ]", + "[ 1/1 → 9/8 | note:F4 s:piano ]", + "[ 9/8 → 5/4 | note:D3 s:piano ]", + "[ 5/4 → 11/8 | note:D3 s:piano ]", + "[ 11/8 → 3/2 | note:F4 s:piano ]", + "[ 3/2 → 13/8 | note:G3 s:piano ]", + "[ 13/8 → 7/4 | note:A3 s:piano ]", + "[ 7/4 → 15/8 | note:D4 s:piano ]", + "[ 15/8 → 2/1 | note:D5 s:piano ]", + "[ 2/1 → 17/8 | note:A3 s:piano ]", + "[ 17/8 → 9/4 | note:D3 s:piano ]", + "[ 9/4 → 19/8 | note:G4 s:piano ]", + "[ 19/8 → 5/2 | note:F3 s:piano ]", + "[ 5/2 → 21/8 | note:G4 s:piano ]", + "[ 21/8 → 11/4 | note:F4 s:piano ]", + "[ 11/4 → 23/8 | note:D5 s:piano ]", + "[ 23/8 → 3/1 | note:A3 s:piano ]", + "[ 3/1 → 25/8 | note:D3 s:piano ]", + "[ 25/8 → 13/4 | note:D5 s:piano ]", + "[ 13/4 → 27/8 | note:A3 s:piano ]", + "[ 27/8 → 7/2 | note:C5 s:piano ]", + "[ 7/2 → 29/8 | note:C5 s:piano ]", + "[ 29/8 → 15/4 | note:F5 s:piano ]", + "[ 15/4 → 31/8 | note:F3 s:piano ]", + "[ 31/8 → 4/1 | note:A3 s:piano ]", ] `; @@ -4785,26 +6161,42 @@ exports[`runs examples > example "segment" example index 0 1`] = ` exports[`runs examples > example "seq" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh ]", - "[ 1/4 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | note:c2 ]", - "[ 11/16 → 3/4 | note:c2 ]", - "[ 7/8 → 15/16 | note:c2 ]", - "[ 1/1 → 5/4 | s:hh ]", - "[ 5/4 → 3/2 | s:hh ]", - "[ 3/2 → 25/16 | note:c2 ]", - "[ 27/16 → 7/4 | note:c2 ]", - "[ 15/8 → 31/16 | note:c2 ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 41/16 | note:c2 ]", - "[ 43/16 → 11/4 | note:c2 ]", - "[ 23/8 → 47/16 | note:c2 ]", - "[ 3/1 → 13/4 | s:hh ]", - "[ 13/4 → 7/2 | s:hh ]", - "[ 7/2 → 57/16 | note:c2 ]", - "[ 59/16 → 15/4 | note:c2 ]", - "[ 31/8 → 63/16 | note:c2 ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | note:c4 ]", + "[ 5/8 → 11/16 | note:c4 ]", + "[ 11/16 → 3/4 | note:c4 ]", + "[ 13/16 → 7/8 | note:c4 ]", + "[ 7/8 → 15/16 | note:c4 ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 25/16 | note:c4 ]", + "[ 13/8 → 27/16 | note:c4 ]", + "[ 27/16 → 7/4 | note:c4 ]", + "[ 29/16 → 15/8 | note:c4 ]", + "[ 15/8 → 31/16 | note:c4 ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | s:hh ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 5/2 → 41/16 | note:c4 ]", + "[ 21/8 → 43/16 | note:c4 ]", + "[ 43/16 → 11/4 | note:c4 ]", + "[ 45/16 → 23/8 | note:c4 ]", + "[ 23/8 → 47/16 | note:c4 ]", + "[ 3/1 → 25/8 | s:hh ]", + "[ 25/8 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 27/8 → 7/2 | s:hh ]", + "[ 7/2 → 57/16 | note:c4 ]", + "[ 29/8 → 59/16 | note:c4 ]", + "[ 59/16 → 15/4 | note:c4 ]", + "[ 61/16 → 31/8 | note:c4 ]", + "[ 31/8 → 63/16 | note:c4 ]", ] `; @@ -4831,30 +6223,54 @@ exports[`runs examples > example "seq" example index 0 2`] = ` exports[`runs examples > example "shape" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh shape:0 ]", - "[ 0/1 → 1/2 | s:bd shape:0 ]", - "[ 1/4 → 1/2 | s:hh shape:0 ]", - "[ 1/2 → 3/4 | s:hh shape:0 ]", - "[ 1/2 → 1/1 | s:sd shape:0 ]", - "[ 3/4 → 1/1 | s:hh shape:0 ]", - "[ 1/1 → 5/4 | s:hh shape:0.2 ]", - "[ 1/1 → 3/2 | s:bd shape:0.2 ]", - "[ 5/4 → 3/2 | s:hh shape:0.2 ]", - "[ 3/2 → 7/4 | s:hh shape:0.2 ]", - "[ 3/2 → 2/1 | s:sd shape:0.2 ]", - "[ 7/4 → 2/1 | s:hh shape:0.2 ]", - "[ 2/1 → 9/4 | s:hh shape:0.4 ]", - "[ 2/1 → 5/2 | s:bd shape:0.4 ]", - "[ 9/4 → 5/2 | s:hh shape:0.4 ]", - "[ 5/2 → 11/4 | s:hh shape:0.4 ]", - "[ 5/2 → 3/1 | s:sd shape:0.4 ]", - "[ 11/4 → 3/1 | s:hh shape:0.4 ]", - "[ 3/1 → 13/4 | s:hh shape:0.6 ]", - "[ 3/1 → 7/2 | s:bd shape:0.6 ]", - "[ 13/4 → 7/2 | s:hh shape:0.6 ]", - "[ 7/2 → 15/4 | s:hh shape:0.6 ]", - "[ 7/2 → 4/1 | s:sd shape:0.6 ]", - "[ 15/4 → 4/1 | s:hh shape:0.6 ]", + "[ 0/1 → 1/8 | s:hh shape:0 ]", + "[ 0/1 → 1/4 | s:bd shape:0 ]", + "[ 1/8 → 1/4 | s:hh shape:0 ]", + "[ 1/4 → 3/8 | s:hh shape:0 ]", + "[ 1/4 → 1/2 | s:sd shape:0 ]", + "[ 3/8 → 1/2 | s:hh shape:0 ]", + "[ 1/2 → 5/8 | s:hh shape:0 ]", + "[ 5/8 → 3/4 | s:bd shape:0 ]", + "[ 5/8 → 3/4 | s:hh shape:0 ]", + "[ 3/4 → 7/8 | s:hh shape:0 ]", + "[ 3/4 → 1/1 | s:sd shape:0 ]", + "[ 7/8 → 1/1 | s:hh shape:0 ]", + "[ 1/1 → 9/8 | s:hh shape:0.2 ]", + "[ 1/1 → 5/4 | s:bd shape:0.2 ]", + "[ 9/8 → 5/4 | s:hh shape:0.2 ]", + "[ 5/4 → 11/8 | s:hh shape:0.2 ]", + "[ 5/4 → 3/2 | s:sd shape:0.2 ]", + "[ 11/8 → 3/2 | s:hh shape:0.2 ]", + "[ 3/2 → 13/8 | s:hh shape:0.2 ]", + "[ 13/8 → 7/4 | s:bd shape:0.2 ]", + "[ 13/8 → 7/4 | s:hh shape:0.2 ]", + "[ 7/4 → 15/8 | s:hh shape:0.2 ]", + "[ 7/4 → 2/1 | s:sd shape:0.2 ]", + "[ 15/8 → 2/1 | s:hh shape:0.2 ]", + "[ 2/1 → 17/8 | s:hh shape:0.4 ]", + "[ 2/1 → 9/4 | s:bd shape:0.4 ]", + "[ 17/8 → 9/4 | s:hh shape:0.4 ]", + "[ 9/4 → 19/8 | s:hh shape:0.4 ]", + "[ 9/4 → 5/2 | s:sd shape:0.4 ]", + "[ 19/8 → 5/2 | s:hh shape:0.4 ]", + "[ 5/2 → 21/8 | s:hh shape:0.4 ]", + "[ 21/8 → 11/4 | s:bd shape:0.4 ]", + "[ 21/8 → 11/4 | s:hh shape:0.4 ]", + "[ 11/4 → 23/8 | s:hh shape:0.4 ]", + "[ 11/4 → 3/1 | s:sd shape:0.4 ]", + "[ 23/8 → 3/1 | s:hh shape:0.4 ]", + "[ 3/1 → 25/8 | s:hh shape:0.6 ]", + "[ 3/1 → 13/4 | s:bd shape:0.6 ]", + "[ 25/8 → 13/4 | s:hh shape:0.6 ]", + "[ 13/4 → 27/8 | s:hh shape:0.6 ]", + "[ 13/4 → 7/2 | s:sd shape:0.6 ]", + "[ 27/8 → 7/2 | s:hh shape:0.6 ]", + "[ 7/2 → 29/8 | s:hh shape:0.6 ]", + "[ 29/8 → 15/4 | s:bd shape:0.6 ]", + "[ 29/8 → 15/4 | s:hh shape:0.6 ]", + "[ 15/4 → 31/8 | s:hh shape:0.6 ]", + "[ 15/4 → 4/1 | s:sd shape:0.6 ]", + "[ 31/8 → 4/1 | s:hh shape:0.6 ]", ] `; @@ -4862,101 +6278,162 @@ exports[`runs examples > example "silence" example index 0 1`] = `[]`; exports[`runs examples > example "sine" example index 0 1`] = ` [ - "[ 0/1 → 1/8 | note:Eb4 ]", - "[ 1/8 → 1/4 | note:Ab4 ]", - "[ 1/4 → 3/8 | note:C5 ]", - "[ 3/8 → 1/2 | note:D5 ]", - "[ 1/2 → 5/8 | note:D5 ]", - "[ 5/8 → 3/4 | note:C5 ]", - "[ 3/4 → 7/8 | note:Ab4 ]", - "[ 7/8 → 1/1 | note:Eb4 ]", - "[ 1/1 → 9/8 | note:C4 ]", - "[ 9/8 → 5/4 | note:G3 ]", - "[ 5/4 → 11/8 | note:Eb3 ]", - "[ 11/8 → 3/2 | note:D3 ]", - "[ 3/2 → 13/8 | note:D3 ]", - "[ 13/8 → 7/4 | note:Eb3 ]", - "[ 7/4 → 15/8 | note:G3 ]", - "[ 15/8 → 2/1 | note:C4 ]", - "[ 2/1 → 17/8 | note:Eb4 ]", - "[ 17/8 → 9/4 | note:Ab4 ]", - "[ 9/4 → 19/8 | note:C5 ]", - "[ 19/8 → 5/2 | note:D5 ]", - "[ 5/2 → 21/8 | note:D5 ]", - "[ 21/8 → 11/4 | note:C5 ]", - "[ 11/4 → 23/8 | note:Ab4 ]", - "[ 23/8 → 3/1 | note:Eb4 ]", - "[ 3/1 → 25/8 | note:C4 ]", - "[ 25/8 → 13/4 | note:G3 ]", - "[ 13/4 → 27/8 | note:Eb3 ]", - "[ 27/8 → 7/2 | note:D3 ]", - "[ 7/2 → 29/8 | note:D3 ]", - "[ 29/8 → 15/4 | note:Eb3 ]", - "[ 15/4 → 31/8 | note:G3 ]", - "[ 31/8 → 4/1 | note:C4 ]", + "[ 0/1 → 1/16 | note:Eb4 ]", + "[ 1/16 → 1/8 | note:Ab4 ]", + "[ 1/8 → 3/16 | note:C5 ]", + "[ 3/16 → 1/4 | note:D5 ]", + "[ 1/4 → 5/16 | note:D5 ]", + "[ 5/16 → 3/8 | note:C5 ]", + "[ 3/8 → 7/16 | note:Ab4 ]", + "[ 7/16 → 1/2 | note:Eb4 ]", + "[ 1/2 → 9/16 | note:C4 ]", + "[ 9/16 → 5/8 | note:G3 ]", + "[ 5/8 → 11/16 | note:Eb3 ]", + "[ 11/16 → 3/4 | note:D3 ]", + "[ 3/4 → 13/16 | note:D3 ]", + "[ 13/16 → 7/8 | note:Eb3 ]", + "[ 7/8 → 15/16 | note:G3 ]", + "[ 15/16 → 1/1 | note:C4 ]", + "[ 1/1 → 17/16 | note:Eb4 ]", + "[ 17/16 → 9/8 | note:Ab4 ]", + "[ 9/8 → 19/16 | note:C5 ]", + "[ 19/16 → 5/4 | note:D5 ]", + "[ 5/4 → 21/16 | note:D5 ]", + "[ 21/16 → 11/8 | note:C5 ]", + "[ 11/8 → 23/16 | note:Ab4 ]", + "[ 23/16 → 3/2 | note:Eb4 ]", + "[ 3/2 → 25/16 | note:C4 ]", + "[ 25/16 → 13/8 | note:G3 ]", + "[ 13/8 → 27/16 | note:Eb3 ]", + "[ 27/16 → 7/4 | note:D3 ]", + "[ 7/4 → 29/16 | note:D3 ]", + "[ 29/16 → 15/8 | note:Eb3 ]", + "[ 15/8 → 31/16 | note:G3 ]", + "[ 31/16 → 2/1 | note:C4 ]", + "[ 2/1 → 33/16 | note:Eb4 ]", + "[ 33/16 → 17/8 | note:Ab4 ]", + "[ 17/8 → 35/16 | note:C5 ]", + "[ 35/16 → 9/4 | note:D5 ]", + "[ 9/4 → 37/16 | note:D5 ]", + "[ 37/16 → 19/8 | note:C5 ]", + "[ 19/8 → 39/16 | note:Ab4 ]", + "[ 39/16 → 5/2 | note:Eb4 ]", + "[ 5/2 → 41/16 | note:C4 ]", + "[ 41/16 → 21/8 | note:G3 ]", + "[ 21/8 → 43/16 | note:Eb3 ]", + "[ 43/16 → 11/4 | note:D3 ]", + "[ 11/4 → 45/16 | note:D3 ]", + "[ 45/16 → 23/8 | note:Eb3 ]", + "[ 23/8 → 47/16 | note:G3 ]", + "[ 47/16 → 3/1 | note:C4 ]", + "[ 3/1 → 49/16 | note:Eb4 ]", + "[ 49/16 → 25/8 | note:Ab4 ]", + "[ 25/8 → 51/16 | note:C5 ]", + "[ 51/16 → 13/4 | note:D5 ]", + "[ 13/4 → 53/16 | note:D5 ]", + "[ 53/16 → 27/8 | note:C5 ]", + "[ 27/8 → 55/16 | note:Ab4 ]", + "[ 55/16 → 7/2 | note:Eb4 ]", + "[ 7/2 → 57/16 | note:C4 ]", + "[ 57/16 → 29/8 | note:G3 ]", + "[ 29/8 → 59/16 | note:Eb3 ]", + "[ 59/16 → 15/4 | note:D3 ]", + "[ 15/4 → 61/16 | note:D3 ]", + "[ 61/16 → 31/8 | note:Eb3 ]", + "[ 31/8 → 63/16 | note:G3 ]", + "[ 63/16 → 4/1 | note:C4 ]", ] `; exports[`runs examples > example "slice" example index 0 1`] = ` [ - "[ 0/1 → 3/16 | begin:0.875 end:1 _slices:8 s:breaks165 ]", - "[ 3/16 → 3/8 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", - "[ 3/8 → 9/16 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", - "[ 9/16 → 21/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 21/32 → 3/4 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", - "[ 3/4 → 15/16 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ (15/16 → 1/1) ⇝ 9/8 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 15/16 ⇜ (1/1 → 9/8) | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 9/8 → 21/16 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ 21/16 → 3/2 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 3/2 → 27/16 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 27/16 → 15/8 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ 15/8 → 63/32 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ (63/32 → 2/1) ⇝ 33/16 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 63/32 ⇜ (2/1 → 33/16) | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 33/16 → 9/4 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 9/4 → 75/32 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", - "[ 75/32 → 39/16 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 39/16 → 21/8 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", - "[ 21/8 → 45/16 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", - "[ 45/16 → 3/1 | begin:0.875 end:1 _slices:8 s:breaks165 ]", - "[ 3/1 → 51/16 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 51/16 → 27/8 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ 27/8 → 57/16 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 57/16 → 15/4 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 15/4 → 123/32 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", - "[ 123/32 → 63/16 | begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ (63/16 → 4/1) ⇝ 33/8 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 0/1 → 3/32 | begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 3/32 → 3/16 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", + "[ 3/16 → 9/32 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 9/32 → 21/64 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 21/64 → 3/8 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", + "[ 3/8 → 15/32 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 15/32 → 9/16 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 9/16 → 21/32 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 21/32 → 3/4 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 3/4 → 27/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 27/32 → 15/16 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 15/16 → 63/64 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ (63/64 → 1/1) ⇝ 33/32 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 63/64 ⇜ (1/1 → 33/32) | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 33/32 → 9/8 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 9/8 → 75/64 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", + "[ 75/64 → 39/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 39/32 → 21/16 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 21/16 → 45/32 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", + "[ 45/32 → 3/2 | begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 3/2 → 51/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 51/32 → 27/16 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 27/16 → 57/32 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 57/32 → 15/8 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 15/8 → 123/64 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", + "[ 123/64 → 63/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ (63/32 → 2/1) ⇝ 33/16 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 63/32 ⇜ (2/1 → 33/16) | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 33/16 → 69/32 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", + "[ 69/32 → 9/4 | begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 9/4 → 75/32 | begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 75/32 → 39/16 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", + "[ 39/16 → 81/32 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 81/32 → 165/64 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 165/64 → 21/8 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", + "[ 21/8 → 87/32 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 87/32 → 177/64 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 177/64 → 45/16 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 45/16 → 93/32 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 93/32 → 3/1 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 3/1 → 99/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 99/32 → 51/16 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 51/16 → 105/32 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 105/32 → 27/8 | begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 27/8 → 219/64 | begin:0.5 end:0.625 _slices:8 s:breaks165 ]", + "[ 219/64 → 111/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 111/32 → 57/16 | begin:0.625 end:0.75 _slices:8 s:breaks165 ]", + "[ 57/16 → 117/32 | begin:0.75 end:0.875 _slices:8 s:breaks165 ]", + "[ 117/32 → 15/4 | begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 15/4 → 123/32 | begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 123/32 → 63/16 | begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 63/16 → 255/64 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ (255/64 → 4/1) ⇝ 129/32 | begin:0.25 end:0.375 _slices:8 s:breaks165 ]", ] `; exports[`runs examples > example "slice" example index 1 1`] = ` [ - "[ 0/1 → 1/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 1/4 → 1/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 1/2 → 3/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 3/4 → 1/1 | begin:0.5 end:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 1/1 → 5/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 5/4 → 3/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 3/2 → 7/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 7/4 → 2/1 | begin:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 2/1 → 9/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 9/4 → 5/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 5/2 → 11/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 11/4 → 3/1 | begin:0.5 end:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 3/1 → 13/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 13/4 → 7/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 7/2 → 15/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", - "[ 15/4 → 4/1 | begin:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:0.5 unit:c ]", + "[ 0/1 → 1/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 1/4 → 1/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 1/2 → 3/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 3/4 → 1/1 | begin:0.5 end:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 1/1 → 5/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 5/4 → 3/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 3/2 → 7/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 7/4 → 2/1 | begin:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 2/1 → 9/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 9/4 → 5/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 5/2 → 11/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 11/4 → 3/1 | begin:0.5 end:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 3/1 → 13/4 | begin:0 end:0.25 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 13/4 → 7/2 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 7/2 → 15/4 | begin:0.25 end:0.5 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", + "[ 15/4 → 4/1 | begin:0.75 _slices:[0 0.25 0.5 0.75] s:breaks125 speed:1 unit:c ]", ] `; exports[`runs examples > example "slow" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | s:bd ]", - "[ 1/1 → 2/1 | s:hh ]", - "[ 2/1 → 3/1 | s:sd ]", - "[ 3/1 → 4/1 | s:hh ]", + "[ 0/1 → 1/2 | s:bd ]", + "[ 1/2 → 1/1 | s:hh ]", + "[ 1/1 → 3/2 | s:sd ]", + "[ 3/2 → 2/1 | s:hh ]", + "[ 2/1 → 5/2 | s:bd ]", + "[ 5/2 → 3/1 | s:hh ]", + "[ 3/1 → 7/2 | s:sd ]", + "[ 7/2 → 4/1 | s:hh ]", ] `; @@ -4973,81 +6450,185 @@ exports[`runs examples > example "slowcat" example index 0 1`] = ` exports[`runs examples > example "someCycles" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:hh speed:0.5 ]", + "[ 0/1 → 1/1 | s:bd speed:0.5 ]", + "[ 1/8 → 1/4 | s:hh speed:0.5 ]", + "[ 1/4 → 3/8 | s:hh speed:0.5 ]", "[ 3/8 → 1/2 | s:hh speed:0.5 ]", + "[ 1/2 → 5/8 | s:hh speed:0.5 ]", + "[ 5/8 → 3/4 | s:hh speed:0.5 ]", "[ 3/4 → 7/8 | s:hh speed:0.5 ]", + "[ 7/8 → 1/1 | s:hh speed:0.5 ]", "[ 1/1 → 9/8 | s:hh ]", + "[ 1/1 → 2/1 | s:bd ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", "[ 7/4 → 15/8 | s:hh ]", + "[ 15/8 → 2/1 | s:hh ]", "[ 2/1 → 17/8 | s:hh speed:0.5 ]", + "[ 2/1 → 3/1 | s:bd speed:0.5 ]", + "[ 17/8 → 9/4 | s:hh speed:0.5 ]", + "[ 9/4 → 19/8 | s:hh speed:0.5 ]", "[ 19/8 → 5/2 | s:hh speed:0.5 ]", + "[ 5/2 → 21/8 | s:hh speed:0.5 ]", + "[ 21/8 → 11/4 | s:hh speed:0.5 ]", "[ 11/4 → 23/8 | s:hh speed:0.5 ]", + "[ 23/8 → 3/1 | s:hh speed:0.5 ]", "[ 3/1 → 25/8 | s:hh speed:0.5 ]", + "[ 3/1 → 4/1 | s:bd speed:0.5 ]", + "[ 25/8 → 13/4 | s:hh speed:0.5 ]", + "[ 13/4 → 27/8 | s:hh speed:0.5 ]", "[ 27/8 → 7/2 | s:hh speed:0.5 ]", + "[ 7/2 → 29/8 | s:hh speed:0.5 ]", + "[ 29/8 → 15/4 | s:hh speed:0.5 ]", "[ 15/4 → 31/8 | s:hh speed:0.5 ]", + "[ 31/8 → 4/1 | s:hh speed:0.5 ]", ] `; exports[`runs examples > example "someCyclesBy" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:hh speed:0.5 ]", + "[ 0/1 → 1/1 | s:bd speed:0.5 ]", + "[ 1/8 → 1/4 | s:hh speed:0.5 ]", + "[ 1/4 → 3/8 | s:hh speed:0.5 ]", "[ 3/8 → 1/2 | s:hh speed:0.5 ]", + "[ 1/2 → 5/8 | s:hh speed:0.5 ]", + "[ 5/8 → 3/4 | s:hh speed:0.5 ]", "[ 3/4 → 7/8 | s:hh speed:0.5 ]", + "[ 7/8 → 1/1 | s:hh speed:0.5 ]", "[ 1/1 → 9/8 | s:hh ]", + "[ 1/1 → 2/1 | s:bd ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", "[ 7/4 → 15/8 | s:hh ]", + "[ 15/8 → 2/1 | s:hh ]", "[ 2/1 → 17/8 | s:hh ]", + "[ 2/1 → 3/1 | s:bd ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | s:hh ]", "[ 19/8 → 5/2 | s:hh ]", + "[ 5/2 → 21/8 | s:hh ]", + "[ 21/8 → 11/4 | s:hh ]", "[ 11/4 → 23/8 | s:hh ]", + "[ 23/8 → 3/1 | s:hh ]", "[ 3/1 → 25/8 | s:hh ]", + "[ 3/1 → 4/1 | s:bd ]", + "[ 25/8 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | s:hh ]", "[ 27/8 → 7/2 | s:hh ]", + "[ 7/2 → 29/8 | s:hh ]", + "[ 29/8 → 15/4 | s:hh ]", "[ 15/4 → 31/8 | s:hh ]", + "[ 31/8 → 4/1 | s:hh ]", ] `; exports[`runs examples > example "sometimes" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | s:hh ]", - "[ 1/4 → 1/2 | s:hh speed:0.5 ]", - "[ 1/2 → 3/4 | s:hh speed:0.5 ]", - "[ 3/4 → 1/1 | s:hh speed:0.5 ]", - "[ 1/1 → 5/4 | s:hh ]", - "[ 5/4 → 3/2 | s:hh speed:0.5 ]", - "[ 3/2 → 7/4 | s:hh speed:0.5 ]", - "[ 7/4 → 2/1 | s:hh ]", - "[ 2/1 → 9/4 | s:hh ]", - "[ 9/4 → 5/2 | s:hh ]", - "[ 5/2 → 11/4 | s:hh speed:0.5 ]", - "[ 11/4 → 3/1 | s:hh speed:0.5 ]", - "[ 3/1 → 13/4 | s:hh speed:0.5 ]", - "[ 13/4 → 7/2 | s:hh speed:0.5 ]", - "[ 7/2 → 15/4 | s:hh ]", - "[ 15/4 → 4/1 | s:hh ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh speed:0.5 ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh speed:0.5 ]", + "[ 1/2 → 5/8 | s:hh speed:0.5 ]", + "[ 5/8 → 3/4 | s:hh speed:0.5 ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | s:hh ]", + "[ 9/8 → 5/4 | s:hh speed:0.5 ]", + "[ 5/4 → 11/8 | s:hh speed:0.5 ]", + "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh speed:0.5 ]", + "[ 13/8 → 7/4 | s:hh speed:0.5 ]", + "[ 7/4 → 15/8 | s:hh speed:0.5 ]", + "[ 15/8 → 2/1 | s:hh ]", + "[ 2/1 → 17/8 | s:hh speed:0.5 ]", + "[ 17/8 → 9/4 | s:hh speed:0.5 ]", + "[ 9/4 → 19/8 | s:hh ]", + "[ 19/8 → 5/2 | s:hh speed:0.5 ]", + "[ 5/2 → 21/8 | s:hh ]", + "[ 21/8 → 11/4 | s:hh ]", + "[ 11/4 → 23/8 | s:hh ]", + "[ 23/8 → 3/1 | s:hh speed:0.5 ]", + "[ 3/1 → 25/8 | s:hh speed:0.5 ]", + "[ 25/8 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | s:hh speed:0.5 ]", + "[ 27/8 → 7/2 | s:hh ]", + "[ 7/2 → 29/8 | s:hh ]", + "[ 29/8 → 15/4 | s:hh ]", + "[ 15/4 → 31/8 | s:hh speed:0.5 ]", + "[ 31/8 → 4/1 | s:hh speed:0.5 ]", ] `; exports[`runs examples > example "sometimesBy" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh speed:0.5 ]", + "[ 1/4 → 3/8 | s:hh ]", "[ 3/8 → 1/2 | s:hh speed:0.5 ]", + "[ 1/2 → 5/8 | s:hh speed:0.5 ]", + "[ 5/8 → 3/4 | s:hh ]", "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", "[ 1/1 → 9/8 | s:hh ]", + "[ 9/8 → 5/4 | s:hh speed:0.5 ]", + "[ 5/4 → 11/8 | s:hh speed:0.5 ]", "[ 11/8 → 3/2 | s:hh ]", + "[ 3/2 → 13/8 | s:hh speed:0.5 ]", + "[ 13/8 → 7/4 | s:hh speed:0.5 ]", "[ 7/4 → 15/8 | s:hh ]", + "[ 15/8 → 2/1 | s:hh ]", "[ 2/1 → 17/8 | s:hh speed:0.5 ]", + "[ 17/8 → 9/4 | s:hh speed:0.5 ]", + "[ 9/4 → 19/8 | s:hh ]", "[ 19/8 → 5/2 | s:hh speed:0.5 ]", + "[ 5/2 → 21/8 | s:hh ]", + "[ 21/8 → 11/4 | s:hh ]", "[ 11/4 → 23/8 | s:hh ]", + "[ 23/8 → 3/1 | s:hh speed:0.5 ]", "[ 3/1 → 25/8 | s:hh speed:0.5 ]", + "[ 25/8 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | s:hh speed:0.5 ]", "[ 27/8 → 7/2 | s:hh ]", + "[ 7/2 → 29/8 | s:hh ]", + "[ 29/8 → 15/4 | s:hh ]", "[ 15/4 → 31/8 | s:hh speed:0.5 ]", + "[ 31/8 → 4/1 | s:hh speed:0.5 ]", ] `; exports[`runs examples > example "speed" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | s:bd speed:1 ]", - "[ 1/1 → 2/1 | s:bd speed:2 ]", - "[ 2/1 → 3/1 | s:bd speed:4 ]", - "[ 3/1 → 4/1 | s:bd speed:1 ]", + "[ 0/1 → 1/6 | s:bd speed:1 ]", + "[ 1/6 → 1/3 | s:bd speed:2 ]", + "[ 1/3 → 1/2 | s:bd speed:4 ]", + "[ 1/2 → 2/3 | s:bd speed:1 ]", + "[ 2/3 → 5/6 | s:bd speed:-2 ]", + "[ 5/6 → 1/1 | s:bd speed:-4 ]", + "[ 1/1 → 7/6 | s:bd speed:1 ]", + "[ 7/6 → 4/3 | s:bd speed:2 ]", + "[ 4/3 → 3/2 | s:bd speed:4 ]", + "[ 3/2 → 5/3 | s:bd speed:1 ]", + "[ 5/3 → 11/6 | s:bd speed:-2 ]", + "[ 11/6 → 2/1 | s:bd speed:-4 ]", + "[ 2/1 → 13/6 | s:bd speed:1 ]", + "[ 13/6 → 7/3 | s:bd speed:2 ]", + "[ 7/3 → 5/2 | s:bd speed:4 ]", + "[ 5/2 → 8/3 | s:bd speed:1 ]", + "[ 8/3 → 17/6 | s:bd speed:-2 ]", + "[ 17/6 → 3/1 | s:bd speed:-4 ]", + "[ 3/1 → 19/6 | s:bd speed:1 ]", + "[ 19/6 → 10/3 | s:bd speed:2 ]", + "[ 10/3 → 7/2 | s:bd speed:4 ]", + "[ 7/2 → 11/3 | s:bd speed:1 ]", + "[ 11/3 → 23/6 | s:bd speed:-2 ]", + "[ 23/6 → 4/1 | s:bd speed:-4 ]", ] `; @@ -5078,44 +6659,59 @@ exports[`runs examples > example "speed" example index 1 1`] = ` exports[`runs examples > example "splice" example index 0 1`] = ` [ - "[ 0/1 → 5/26 | speed:0.65 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 5/26 → 5/13 | speed:0.65 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ 5/13 → 20/39 | speed:0.9750000000000001 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 20/39 → 25/39 | speed:0.9750000000000001 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 25/39 → 10/13 | speed:0.9750000000000001 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 10/13 → 25/26 | speed:0.65 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ (25/26 → 1/1) ⇝ 35/26 | speed:0.325 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 25/26 ⇜ (1/1 → 35/26) | speed:0.325 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 35/26 → 20/13 | speed:0.65 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", - "[ 20/13 → 45/26 | speed:0.65 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 45/26 → 25/13 | speed:0.65 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ (25/13 → 2/1) ⇝ 80/39 | speed:0.9750000000000001 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 25/13 ⇜ (2/1 → 80/39) | speed:0.9750000000000001 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 80/39 → 85/39 | speed:0.9750000000000001 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 85/39 → 30/13 | speed:0.9750000000000001 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 30/13 → 5/2 | speed:0.65 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 5/2 → 75/26 | speed:0.325 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ (75/26 → 3/1) ⇝ 40/13 | speed:0.65 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", - "[ 75/26 ⇜ (3/1 → 40/13) | speed:0.65 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", - "[ 40/13 → 85/26 | speed:0.65 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ 85/26 → 45/13 | speed:0.65 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", - "[ 45/13 → 140/39 | speed:0.9750000000000001 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", - "[ 140/39 → 145/39 | speed:0.9750000000000001 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", - "[ 145/39 → 50/13 | speed:0.9750000000000001 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", - "[ (50/13 → 4/1) ⇝ 105/26 | speed:0.65 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 0/1 → 1/8 | speed:1 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 1/8 → 1/4 | speed:1 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 1/4 → 1/3 | speed:1.5 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 1/3 → 5/12 | speed:1.5 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 5/12 → 1/2 | speed:1.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 1/2 → 5/8 | speed:1 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 5/8 → 7/8 | speed:0.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 7/8 → 1/1 | speed:1 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 1/1 → 9/8 | speed:1 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 9/8 → 5/4 | speed:1 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 5/4 → 4/3 | speed:1.5 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 4/3 → 17/12 | speed:1.5 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 17/12 → 3/2 | speed:1.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 3/2 → 13/8 | speed:1 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 13/8 → 15/8 | speed:0.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 15/8 → 2/1 | speed:1 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 2/1 → 17/8 | speed:1 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 17/8 → 9/4 | speed:1 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 9/4 → 7/3 | speed:1.5 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 7/3 → 29/12 | speed:1.5 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 29/12 → 5/2 | speed:1.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 5/2 → 21/8 | speed:1 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 21/8 → 23/8 | speed:0.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 23/8 → 3/1 | speed:1 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", + "[ 3/1 → 25/8 | speed:1 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 25/8 → 13/4 | speed:1 unit:c begin:0.125 end:0.25 _slices:8 s:breaks165 ]", + "[ 13/4 → 10/3 | speed:1.5 unit:c begin:0.25 end:0.375 _slices:8 s:breaks165 ]", + "[ 10/3 → 41/12 | speed:1.5 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 41/12 → 7/2 | speed:1.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 7/2 → 29/8 | speed:1 unit:c begin:0.375 end:0.5 _slices:8 s:breaks165 ]", + "[ 29/8 → 31/8 | speed:0.5 unit:c begin:0 end:0.125 _slices:8 s:breaks165 ]", + "[ 31/8 → 4/1 | speed:1 unit:c begin:0.875 end:1 _slices:8 s:breaks165 ]", ] `; exports[`runs examples > example "square" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:C3 ]", - "[ 1/2 → 1/1 | note:C4 ]", - "[ 1/1 → 3/2 | note:C3 ]", - "[ 3/2 → 2/1 | note:C4 ]", - "[ 2/1 → 5/2 | note:C3 ]", - "[ 5/2 → 3/1 | note:C4 ]", - "[ 3/1 → 7/2 | note:C3 ]", - "[ 7/2 → 4/1 | note:C4 ]", + "[ 0/1 → 1/4 | note:C3 ]", + "[ 1/4 → 1/2 | note:C3 ]", + "[ 1/2 → 3/4 | note:C4 ]", + "[ 3/4 → 1/1 | note:C4 ]", + "[ 1/1 → 5/4 | note:C3 ]", + "[ 5/4 → 3/2 | note:C3 ]", + "[ 3/2 → 7/4 | note:C4 ]", + "[ 7/4 → 2/1 | note:C4 ]", + "[ 2/1 → 9/4 | note:C3 ]", + "[ 9/4 → 5/2 | note:C3 ]", + "[ 5/2 → 11/4 | note:C4 ]", + "[ 11/4 → 3/1 | note:C4 ]", + "[ 3/1 → 13/4 | note:C3 ]", + "[ 13/4 → 7/2 | note:C3 ]", + "[ 7/2 → 15/4 | note:C4 ]", + "[ 15/4 → 4/1 | note:C4 ]", ] `; @@ -5165,26 +6761,42 @@ exports[`runs examples > example "squiz" example index 0 1`] = ` exports[`runs examples > example "stack" example index 0 1`] = ` [ - "[ 0/1 → 1/8 | note:c2 ]", - "[ 0/1 → 1/2 | s:hh ]", - "[ 3/8 → 1/2 | note:c2 ]", - "[ 1/2 → 1/1 | s:hh ]", - "[ 3/4 → 7/8 | note:c2 ]", - "[ 1/1 → 9/8 | note:c2 ]", - "[ 1/1 → 3/2 | s:hh ]", - "[ 11/8 → 3/2 | note:c2 ]", - "[ 3/2 → 2/1 | s:hh ]", - "[ 7/4 → 15/8 | note:c2 ]", - "[ 2/1 → 17/8 | note:c2 ]", - "[ 2/1 → 5/2 | s:hh ]", - "[ 19/8 → 5/2 | note:c2 ]", - "[ 5/2 → 3/1 | s:hh ]", - "[ 11/4 → 23/8 | note:c2 ]", - "[ 3/1 → 25/8 | note:c2 ]", - "[ 3/1 → 7/2 | s:hh ]", - "[ 27/8 → 7/2 | note:c2 ]", - "[ 7/2 → 4/1 | s:hh ]", - "[ 15/4 → 31/8 | note:c2 ]", + "[ 0/1 → 1/8 | note:c4 ]", + "[ 0/1 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | note:c4 ]", + "[ 1/4 → 1/2 | s:hh ]", + "[ 3/8 → 1/2 | note:c4 ]", + "[ 1/2 → 3/4 | s:hh ]", + "[ 5/8 → 3/4 | note:c4 ]", + "[ 3/4 → 7/8 | note:c4 ]", + "[ 3/4 → 1/1 | s:hh ]", + "[ 1/1 → 9/8 | note:c4 ]", + "[ 1/1 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | note:c4 ]", + "[ 5/4 → 3/2 | s:hh ]", + "[ 11/8 → 3/2 | note:c4 ]", + "[ 3/2 → 7/4 | s:hh ]", + "[ 13/8 → 7/4 | note:c4 ]", + "[ 7/4 → 15/8 | note:c4 ]", + "[ 7/4 → 2/1 | s:hh ]", + "[ 2/1 → 17/8 | note:c4 ]", + "[ 2/1 → 9/4 | s:hh ]", + "[ 9/4 → 19/8 | note:c4 ]", + "[ 9/4 → 5/2 | s:hh ]", + "[ 19/8 → 5/2 | note:c4 ]", + "[ 5/2 → 11/4 | s:hh ]", + "[ 21/8 → 11/4 | note:c4 ]", + "[ 11/4 → 23/8 | note:c4 ]", + "[ 11/4 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | note:c4 ]", + "[ 3/1 → 13/4 | s:hh ]", + "[ 13/4 → 27/8 | note:c4 ]", + "[ 13/4 → 7/2 | s:hh ]", + "[ 27/8 → 7/2 | note:c4 ]", + "[ 7/2 → 15/4 | s:hh ]", + "[ 29/8 → 15/4 | note:c4 ]", + "[ 15/4 → 31/8 | note:c4 ]", + "[ 15/4 → 4/1 | s:hh ]", ] `; @@ -5211,41 +6823,71 @@ exports[`runs examples > example "stack" example index 0 2`] = ` exports[`runs examples > example "striate" example index 0 1`] = ` [ - "[ 0/1 → 1/3 | s:numbers n:0 begin:0 end:0.16666666666666666 ]", - "[ 1/3 → 2/3 | s:numbers n:1 begin:0 end:0.16666666666666666 ]", - "[ 2/3 → 1/1 | s:numbers n:2 begin:0 end:0.16666666666666666 ]", - "[ 1/1 → 4/3 | s:numbers n:0 begin:0.16666666666666666 end:0.3333333333333333 ]", - "[ 4/3 → 5/3 | s:numbers n:1 begin:0.16666666666666666 end:0.3333333333333333 ]", - "[ 5/3 → 2/1 | s:numbers n:2 begin:0.16666666666666666 end:0.3333333333333333 ]", - "[ 2/1 → 7/3 | s:numbers n:0 begin:0.3333333333333333 end:0.5 ]", - "[ 7/3 → 8/3 | s:numbers n:1 begin:0.3333333333333333 end:0.5 ]", - "[ 8/3 → 3/1 | s:numbers n:2 begin:0.3333333333333333 end:0.5 ]", - "[ 3/1 → 10/3 | s:numbers n:0 begin:0.5 end:0.6666666666666666 ]", - "[ 10/3 → 11/3 | s:numbers n:1 begin:0.5 end:0.6666666666666666 ]", - "[ 11/3 → 4/1 | s:numbers n:2 begin:0.5 end:0.6666666666666666 ]", + "[ 0/1 → 1/6 | s:numbers n:0 begin:0 end:0.16666666666666666 ]", + "[ 1/6 → 1/3 | s:numbers n:1 begin:0 end:0.16666666666666666 ]", + "[ 1/3 → 1/2 | s:numbers n:2 begin:0 end:0.16666666666666666 ]", + "[ 1/2 → 2/3 | s:numbers n:0 begin:0.16666666666666666 end:0.3333333333333333 ]", + "[ 2/3 → 5/6 | s:numbers n:1 begin:0.16666666666666666 end:0.3333333333333333 ]", + "[ 5/6 → 1/1 | s:numbers n:2 begin:0.16666666666666666 end:0.3333333333333333 ]", + "[ 1/1 → 7/6 | s:numbers n:0 begin:0.3333333333333333 end:0.5 ]", + "[ 7/6 → 4/3 | s:numbers n:1 begin:0.3333333333333333 end:0.5 ]", + "[ 4/3 → 3/2 | s:numbers n:2 begin:0.3333333333333333 end:0.5 ]", + "[ 3/2 → 5/3 | s:numbers n:0 begin:0.5 end:0.6666666666666666 ]", + "[ 5/3 → 11/6 | s:numbers n:1 begin:0.5 end:0.6666666666666666 ]", + "[ 11/6 → 2/1 | s:numbers n:2 begin:0.5 end:0.6666666666666666 ]", + "[ 2/1 → 13/6 | s:numbers n:0 begin:0.6666666666666666 end:0.8333333333333334 ]", + "[ 13/6 → 7/3 | s:numbers n:1 begin:0.6666666666666666 end:0.8333333333333334 ]", + "[ 7/3 → 5/2 | s:numbers n:2 begin:0.6666666666666666 end:0.8333333333333334 ]", + "[ 5/2 → 8/3 | s:numbers n:0 begin:0.8333333333333334 end:1 ]", + "[ 8/3 → 17/6 | s:numbers n:1 begin:0.8333333333333334 end:1 ]", + "[ 17/6 → 3/1 | s:numbers n:2 begin:0.8333333333333334 end:1 ]", + "[ 3/1 → 19/6 | s:numbers n:0 begin:0 end:0.16666666666666666 ]", + "[ 19/6 → 10/3 | s:numbers n:1 begin:0 end:0.16666666666666666 ]", + "[ 10/3 → 7/2 | s:numbers n:2 begin:0 end:0.16666666666666666 ]", + "[ 7/2 → 11/3 | s:numbers n:0 begin:0.16666666666666666 end:0.3333333333333333 ]", + "[ 11/3 → 23/6 | s:numbers n:1 begin:0.16666666666666666 end:0.3333333333333333 ]", + "[ 23/6 → 4/1 | s:numbers n:2 begin:0.16666666666666666 end:0.3333333333333333 ]", ] `; exports[`runs examples > example "struct" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c3 ]", - "[ 0/1 → 1/4 | note:eb3 ]", - "[ 0/1 → 1/4 | note:g3 ]", - "[ 1/2 → 3/4 | note:c3 ]", - "[ 1/2 → 3/4 | note:eb3 ]", - "[ 1/2 → 3/4 | note:g3 ]", - "[ 5/4 → 3/2 | note:c3 ]", - "[ 5/4 → 3/2 | note:eb3 ]", - "[ 5/4 → 3/2 | note:g3 ]", - "[ 7/4 → 2/1 | note:c3 ]", - "[ 7/4 → 2/1 | note:eb3 ]", - "[ 7/4 → 2/1 | note:g3 ]", - "[ 11/4 → 3/1 | note:c3 ]", - "[ 11/4 → 3/1 | note:eb3 ]", - "[ 11/4 → 3/1 | note:g3 ]", - "[ 13/4 → 7/2 | note:c3 ]", - "[ 13/4 → 7/2 | note:eb3 ]", - "[ 13/4 → 7/2 | note:g3 ]", + "[ 0/1 → 1/8 | note:c ]", + "[ 0/1 → 1/8 | note:eb ]", + "[ 0/1 → 1/8 | note:g ]", + "[ 1/4 → 3/8 | note:c ]", + "[ 1/4 → 3/8 | note:eb ]", + "[ 1/4 → 3/8 | note:g ]", + "[ 5/8 → 3/4 | note:c ]", + "[ 5/8 → 3/4 | note:eb ]", + "[ 5/8 → 3/4 | note:g ]", + "[ 7/8 → 1/1 | note:c ]", + "[ 7/8 → 1/1 | note:eb ]", + "[ 7/8 → 1/1 | note:g ]", + "[ 11/8 → 3/2 | note:c ]", + "[ 11/8 → 3/2 | note:eb ]", + "[ 11/8 → 3/2 | note:g ]", + "[ 13/8 → 7/4 | note:c ]", + "[ 13/8 → 7/4 | note:eb ]", + "[ 13/8 → 7/4 | note:g ]", + "[ 2/1 → 17/8 | note:c ]", + "[ 2/1 → 17/8 | note:eb ]", + "[ 2/1 → 17/8 | note:g ]", + "[ 9/4 → 19/8 | note:c ]", + "[ 9/4 → 19/8 | note:eb ]", + "[ 9/4 → 19/8 | note:g ]", + "[ 21/8 → 11/4 | note:c ]", + "[ 21/8 → 11/4 | note:eb ]", + "[ 21/8 → 11/4 | note:g ]", + "[ 23/8 → 3/1 | note:c ]", + "[ 23/8 → 3/1 | note:eb ]", + "[ 23/8 → 3/1 | note:g ]", + "[ 27/8 → 7/2 | note:c ]", + "[ 27/8 → 7/2 | note:eb ]", + "[ 27/8 → 7/2 | note:g ]", + "[ 29/8 → 15/4 | note:c ]", + "[ 29/8 → 15/4 | note:eb ]", + "[ 29/8 → 15/4 | note:g ]", ] `; @@ -5305,37 +6947,63 @@ exports[`runs examples > example "sub" example index 0 1`] = ` exports[`runs examples > example "superimpose" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:C3 ]", - "[ 0/1 → 1/4 | note:Eb3 ]", - "[ 1/4 → 1/2 | note:Eb3 ]", - "[ 1/4 → 1/2 | note:G3 ]", - "[ 1/2 → 3/4 | note:G3 ]", - "[ 1/2 → 3/4 | note:Bb3 ]", - "[ 3/4 → 1/1 | note:Bb3 ]", - "[ 3/4 → 1/1 | note:D4 ]", - "[ 5/4 → 3/2 | note:G3 ]", - "[ 5/4 → 3/2 | note:Bb3 ]", - "[ 7/4 → 2/1 | note:Eb3 ]", - "[ 7/4 → 2/1 | note:G3 ]", - "[ 2/1 → 9/4 | note:C3 ]", - "[ 2/1 → 9/4 | note:Eb3 ]", - "[ 9/4 → 5/2 | note:C3 ]", - "[ 9/4 → 5/2 | note:Eb3 ]", - "[ 5/2 → 11/4 | note:C3 ]", - "[ 5/2 → 11/4 | note:Eb3 ]", + "[ 0/1 → 1/8 | note:C3 ]", + "[ 0/1 → 1/8 | note:Eb3 ]", + "[ 1/8 → 1/4 | note:Eb3 ]", + "[ 1/8 → 1/4 | note:G3 ]", + "[ 1/4 → 3/8 | note:G3 ]", + "[ 1/4 → 3/8 | note:Bb3 ]", + "[ 3/8 → 1/2 | note:Bb3 ]", + "[ 3/8 → 1/2 | note:D4 ]", + "[ 5/8 → 3/4 | note:G3 ]", + "[ 5/8 → 3/4 | note:Bb3 ]", + "[ 7/8 → 1/1 | note:Eb3 ]", + "[ 7/8 → 1/1 | note:G3 ]", + "[ 1/1 → 9/8 | note:C3 ]", + "[ 1/1 → 9/8 | note:Eb3 ]", + "[ 9/8 → 5/4 | note:C3 ]", + "[ 9/8 → 5/4 | note:Eb3 ]", + "[ 5/4 → 11/8 | note:C3 ]", + "[ 5/4 → 11/8 | note:Eb3 ]", + "[ 2/1 → 17/8 | note:C3 ]", + "[ 2/1 → 17/8 | note:Eb3 ]", + "[ 17/8 → 9/4 | note:Eb3 ]", + "[ 17/8 → 9/4 | note:G3 ]", + "[ 9/4 → 19/8 | note:G3 ]", + "[ 9/4 → 19/8 | note:Bb3 ]", + "[ 19/8 → 5/2 | note:Bb3 ]", + "[ 19/8 → 5/2 | note:D4 ]", + "[ 21/8 → 11/4 | note:G3 ]", + "[ 21/8 → 11/4 | note:Bb3 ]", + "[ 23/8 → 3/1 | note:Eb3 ]", + "[ 23/8 → 3/1 | note:G3 ]", + "[ 3/1 → 25/8 | note:C3 ]", + "[ 3/1 → 25/8 | note:Eb3 ]", + "[ 25/8 → 13/4 | note:C3 ]", + "[ 25/8 → 13/4 | note:Eb3 ]", + "[ 13/4 → 27/8 | note:C3 ]", + "[ 13/4 → 27/8 | note:Eb3 ]", ] `; exports[`runs examples > example "sustain" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c3 decay:0.2 sustain:0 ]", - "[ 1/2 → 1/1 | note:e3 decay:0.2 sustain:0 ]", - "[ 1/1 → 3/2 | note:c3 decay:0.2 sustain:0.1 ]", - "[ 3/2 → 2/1 | note:e3 decay:0.2 sustain:0.1 ]", - "[ 2/1 → 5/2 | note:c3 decay:0.2 sustain:0.4 ]", - "[ 5/2 → 3/1 | note:e3 decay:0.2 sustain:0.4 ]", - "[ 3/1 → 7/2 | note:c3 decay:0.2 sustain:0.6 ]", - "[ 7/2 → 4/1 | note:e3 decay:0.2 sustain:0.6 ]", + "[ 0/1 → 1/4 | note:c3 decay:0.2 sustain:0 ]", + "[ 1/4 → 1/2 | note:e3 decay:0.2 sustain:0 ]", + "[ 1/2 → 3/4 | note:f3 decay:0.2 sustain:0 ]", + "[ 3/4 → 1/1 | note:g3 decay:0.2 sustain:0 ]", + "[ 1/1 → 5/4 | note:c3 decay:0.2 sustain:0.1 ]", + "[ 5/4 → 3/2 | note:e3 decay:0.2 sustain:0.1 ]", + "[ 3/2 → 7/4 | note:f3 decay:0.2 sustain:0.1 ]", + "[ 7/4 → 2/1 | note:g3 decay:0.2 sustain:0.1 ]", + "[ 2/1 → 9/4 | note:c3 decay:0.2 sustain:0.4 ]", + "[ 9/4 → 5/2 | note:e3 decay:0.2 sustain:0.4 ]", + "[ 5/2 → 11/4 | note:f3 decay:0.2 sustain:0.4 ]", + "[ 11/4 → 3/1 | note:g3 decay:0.2 sustain:0.4 ]", + "[ 3/1 → 13/4 | note:c3 decay:0.2 sustain:0.6 ]", + "[ 13/4 → 7/2 | note:e3 decay:0.2 sustain:0.6 ]", + "[ 7/2 → 15/4 | note:f3 decay:0.2 sustain:0.6 ]", + "[ 15/4 → 4/1 | note:g3 decay:0.2 sustain:0.6 ]", ] `; @@ -5522,37 +7190,53 @@ exports[`runs examples > example "velocity" example index 0 1`] = ` exports[`runs examples > example "vib" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:a vib:0.5 ]", - "[ 1/1 → 2/1 | note:a vib:1 ]", - "[ 2/1 → 3/1 | note:a vib:2 ]", - "[ 3/1 → 4/1 | note:a vib:4 ]", + "[ 0/1 → 1/2 | note:a vib:0.5 ]", + "[ 1/2 → 1/1 | note:e vib:0.5 ]", + "[ 1/1 → 3/2 | note:a vib:1 ]", + "[ 3/2 → 2/1 | note:e vib:1 ]", + "[ 2/1 → 5/2 | note:a vib:2 ]", + "[ 5/2 → 3/1 | note:e vib:2 ]", + "[ 3/1 → 7/2 | note:a vib:4 ]", + "[ 7/2 → 4/1 | note:e vib:4 ]", ] `; exports[`runs examples > example "vib" example index 1 1`] = ` [ - "[ 0/1 → 1/1 | note:a vib:0.5 vibmod:12 ]", - "[ 1/1 → 2/1 | note:a vib:1 vibmod:12 ]", - "[ 2/1 → 3/1 | note:a vib:2 vibmod:12 ]", - "[ 3/1 → 4/1 | note:a vib:4 vibmod:12 ]", + "[ 0/1 → 1/2 | note:a vib:0.5 vibmod:12 ]", + "[ 1/2 → 1/1 | note:e vib:0.5 vibmod:12 ]", + "[ 1/1 → 3/2 | note:a vib:1 vibmod:12 ]", + "[ 3/2 → 2/1 | note:e vib:1 vibmod:12 ]", + "[ 2/1 → 5/2 | note:a vib:2 vibmod:12 ]", + "[ 5/2 → 3/1 | note:e vib:2 vibmod:12 ]", + "[ 3/1 → 7/2 | note:a vib:4 vibmod:12 ]", + "[ 7/2 → 4/1 | note:e vib:4 vibmod:12 ]", ] `; exports[`runs examples > example "vibmod" example index 0 1`] = ` [ - "[ 0/1 → 1/1 | note:a vib:4 vibmod:0.25 ]", - "[ 1/1 → 2/1 | note:a vib:4 vibmod:0.5 ]", - "[ 2/1 → 3/1 | note:a vib:4 vibmod:1 ]", - "[ 3/1 → 4/1 | note:a vib:4 vibmod:2 ]", + "[ 0/1 → 1/2 | note:a vib:4 vibmod:0.25 ]", + "[ 1/2 → 1/1 | note:e vib:4 vibmod:0.25 ]", + "[ 1/1 → 3/2 | note:a vib:4 vibmod:0.5 ]", + "[ 3/2 → 2/1 | note:e vib:4 vibmod:0.5 ]", + "[ 2/1 → 5/2 | note:a vib:4 vibmod:1 ]", + "[ 5/2 → 3/1 | note:e vib:4 vibmod:1 ]", + "[ 3/1 → 7/2 | note:a vib:4 vibmod:2 ]", + "[ 7/2 → 4/1 | note:e vib:4 vibmod:2 ]", ] `; exports[`runs examples > example "vibmod" example index 1 1`] = ` [ - "[ 0/1 → 1/1 | note:a vibmod:0.25 vib:8 ]", - "[ 1/1 → 2/1 | note:a vibmod:0.5 vib:8 ]", - "[ 2/1 → 3/1 | note:a vibmod:1 vib:8 ]", - "[ 3/1 → 4/1 | note:a vibmod:2 vib:8 ]", + "[ 0/1 → 1/2 | note:a vibmod:0.25 vib:8 ]", + "[ 1/2 → 1/1 | note:e vibmod:0.25 vib:8 ]", + "[ 1/1 → 3/2 | note:a vibmod:0.5 vib:8 ]", + "[ 3/2 → 2/1 | note:e vibmod:0.5 vib:8 ]", + "[ 2/1 → 5/2 | note:a vibmod:1 vib:8 ]", + "[ 5/2 → 3/1 | note:e vibmod:1 vib:8 ]", + "[ 3/1 → 7/2 | note:a vibmod:2 vib:8 ]", + "[ 7/2 → 4/1 | note:e vibmod:2 vib:8 ]", ] `; @@ -5604,14 +7288,59 @@ exports[`runs examples > example "voicings" example index 0 1`] = ` exports[`runs examples > example "vowel" example index 0 1`] = ` [ - "[ 0/1 → 1/2 | note:c2 s:sawtooth vowel:a ]", - "[ 1/2 → 1/1 | note:eb2 s:sawtooth vowel:a ]", - "[ 1/1 → 3/2 | note:c2 s:sawtooth vowel:e ]", - "[ 3/2 → 2/1 | note:g2 s:sawtooth vowel:e ]", - "[ 2/1 → 5/2 | note:c2 s:sawtooth vowel:i ]", - "[ 5/2 → 3/1 | note:eb2 s:sawtooth vowel:i ]", - "[ 3/1 → 7/2 | note:c2 s:sawtooth vowel:o ]", - "[ 7/2 → 4/1 | note:g1 s:sawtooth vowel:o ]", + "[ 0/1 → 1/4 | note:c2 s:sawtooth vowel:a ]", + "[ 1/4 → 1/2 | note:eb2 s:sawtooth vowel:a ]", + "[ 1/2 → 3/4 | note:c2 s:sawtooth vowel:a ]", + "[ 3/4 → 1/1 | note:g2 s:sawtooth vowel:a ]", + "[ 1/1 → 5/4 | note:c2 s:sawtooth vowel:e ]", + "[ 5/4 → 3/2 | note:eb2 s:sawtooth vowel:e ]", + "[ 3/2 → 7/4 | note:c2 s:sawtooth vowel:e ]", + "[ 7/4 → 2/1 | note:g1 s:sawtooth vowel:e ]", + "[ 2/1 → 9/4 | note:c2 s:sawtooth vowel:i ]", + "[ 9/4 → 5/2 | note:eb2 s:sawtooth vowel:i ]", + "[ 5/2 → 11/4 | note:c2 s:sawtooth vowel:i ]", + "[ 11/4 → 3/1 | note:g2 s:sawtooth vowel:i ]", + "[ 3/1 → 13/4 | note:c2 s:sawtooth vowel:o ]", + "[ 13/4 → 7/2 | note:eb2 s:sawtooth vowel:o ]", + "[ 7/2 → 15/4 | note:c2 s:sawtooth vowel:o ]", + "[ 15/4 → 4/1 | note:g1 s:sawtooth vowel:o ]", +] +`; + +exports[`runs examples > example "vowel" example index 1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd vowel:e ]", + "[ 1/8 → 1/4 | s:sd vowel:e ]", + "[ 1/4 → 3/8 | s:mt vowel:e ]", + "[ 3/8 → 1/2 | s:ht vowel:e ]", + "[ 1/2 → 5/8 | s:bd vowel:e ]", + "[ 11/16 → 3/4 | s:cp vowel:e ]", + "[ 3/4 → 7/8 | s:ht vowel:e ]", + "[ 7/8 → 1/1 | s:lt vowel:e ]", + "[ 1/1 → 9/8 | s:bd vowel:o ]", + "[ 9/8 → 5/4 | s:sd vowel:o ]", + "[ 5/4 → 11/8 | s:mt vowel:o ]", + "[ 11/8 → 3/2 | s:ht vowel:o ]", + "[ 3/2 → 13/8 | s:bd vowel:o ]", + "[ 27/16 → 7/4 | s:cp vowel:o ]", + "[ 7/4 → 15/8 | s:ht vowel:o ]", + "[ 15/8 → 2/1 | s:lt vowel:o ]", + "[ 2/1 → 17/8 | s:bd vowel:i ]", + "[ 17/8 → 9/4 | s:sd vowel:i ]", + "[ 9/4 → 19/8 | s:mt vowel:i ]", + "[ 19/8 → 5/2 | s:ht vowel:i ]", + "[ 5/2 → 21/8 | s:bd vowel:i ]", + "[ 43/16 → 11/4 | s:cp vowel:i ]", + "[ 11/4 → 23/8 | s:ht vowel:i ]", + "[ 23/8 → 3/1 | s:lt vowel:i ]", + "[ 3/1 → 25/8 | s:bd vowel:i ]", + "[ 25/8 → 13/4 | s:sd vowel:i ]", + "[ 13/4 → 27/8 | s:mt vowel:i ]", + "[ 27/8 → 7/2 | s:ht vowel:i ]", + "[ 7/2 → 29/8 | s:bd vowel:i ]", + "[ 59/16 → 15/4 | s:cp vowel:i ]", + "[ 15/4 → 31/8 | s:ht vowel:i ]", + "[ 31/8 → 4/1 | s:lt vowel:i ]", ] `; diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap index 0a341d12c..6cbc1ffc4 100644 --- a/test/__snapshots__/tunes.test.mjs.snap +++ b/test/__snapshots__/tunes.test.mjs.snap @@ -339,402 +339,6 @@ exports[`renders tunes > tune: blippyRhodes 1`] = ` ] `; -exports[`renders tunes > tune: bridgeIsOver 1`] = ` -[ - "[ -155/52 ⇜ (0/1 → 5/52) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ -75/26 ⇜ (0/1 → 5/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -145/52 ⇜ (0/1 → 15/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -35/13 ⇜ (0/1 → 5/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ -35/13 ⇜ (0/1 → 5/13) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ -135/52 ⇜ (0/1 → 5/13) ⇝ 25/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ -5/2 ⇜ (0/1 → 5/13) ⇝ 15/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -125/52 ⇜ (0/1 → 5/13) ⇝ 35/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -30/13 ⇜ (0/1 → 5/13) ⇝ 10/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ -115/52 ⇜ (0/1 → 5/13) ⇝ 45/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -55/26 ⇜ (0/1 → 5/13) ⇝ 25/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -105/52 ⇜ (0/1 → 5/13) ⇝ 55/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 0/1 → 5/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ -135/52 ⇜ (0/1 → 25/52) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -5/2 ⇜ (0/1 → 15/26) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -125/52 ⇜ (0/1 → 35/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ -30/13 ⇜ (0/1 → 10/13) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ -115/52 ⇜ (0/1 → 10/13) ⇝ 45/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ -55/26 ⇜ (0/1 → 10/13) ⇝ 25/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -105/52 ⇜ (0/1 → 10/13) ⇝ 55/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -25/13 ⇜ (0/1 → 10/13) ⇝ 15/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ -95/52 ⇜ (0/1 → 10/13) ⇝ 5/4 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -45/26 ⇜ (0/1 → 10/13) ⇝ 35/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -85/52 ⇜ (0/1 → 10/13) ⇝ 75/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (0/1 → 1/1) ⇝ 40/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ (0/1 → 1/1) ⇝ 80/13 | s:mad ]", - "[ (5/52 → 1/1) ⇝ 165/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (5/26 → 1/1) ⇝ 85/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (15/52 → 1/1) ⇝ 175/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -135/52 ⇜ (5/13 → 25/52) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ -5/2 ⇜ (5/13 → 15/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -125/52 ⇜ (5/13 → 35/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -30/13 ⇜ (5/13 → 10/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 5/13 → 10/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ -115/52 ⇜ (5/13 → 45/52) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -55/26 ⇜ (5/13 → 25/26) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -105/52 ⇜ (5/13 → 1/1) ⇝ 55/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (5/13 → 1/1) ⇝ 45/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ (5/13 → 1/1) ⇝ 45/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ (25/52 → 1/1) ⇝ 185/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (25/52 → 1/1) ⇝ 185/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (15/26 → 1/1) ⇝ 95/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (15/26 → 1/1) ⇝ 95/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (35/52 → 1/1) ⇝ 15/4 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (35/52 → 1/1) ⇝ 15/4 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ -115/52 ⇜ (10/13 → 45/52) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ -55/26 ⇜ (10/13 → 25/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 → 155/156 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ -105/52 ⇜ (10/13 → 1/1) ⇝ 55/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -25/13 ⇜ (10/13 → 1/1) ⇝ 15/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ -95/52 ⇜ (10/13 → 1/1) ⇝ 5/4 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -45/26 ⇜ (10/13 → 1/1) ⇝ 35/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -85/52 ⇜ (10/13 → 1/1) ⇝ 75/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (10/13 → 1/1) ⇝ 50/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ (10/13 → 1/1) ⇝ 50/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ (45/52 → 1/1) ⇝ 205/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (45/52 → 1/1) ⇝ 205/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (25/26 → 1/1) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (25/26 → 1/1) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (155/156 → 1/1) ⇝ 15/13 | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ -105/52 ⇜ (1/1 → 55/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ -105/52 ⇜ (1/1 → 55/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ -25/13 ⇜ (1/1 → 15/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 155/156 ⇜ (1/1 → 15/13) | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ -95/52 ⇜ (1/1 → 5/4) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ -45/26 ⇜ (1/1 → 35/26) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ -85/52 ⇜ (1/1 → 75/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 0/1 ⇜ (1/1 → 2/1) ⇝ 40/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 0/1 ⇜ (1/1 → 2/1) ⇝ 80/13 | s:mad ]", - "[ 5/52 ⇜ (1/1 → 2/1) ⇝ 165/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 5/26 ⇜ (1/1 → 2/1) ⇝ 85/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 15/52 ⇜ (1/1 → 2/1) ⇝ 175/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 5/13 ⇜ (1/1 → 2/1) ⇝ 45/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/13 ⇜ (1/1 → 2/1) ⇝ 45/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 25/52 ⇜ (1/1 → 2/1) ⇝ 185/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 25/52 ⇜ (1/1 → 2/1) ⇝ 185/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 15/26 ⇜ (1/1 → 2/1) ⇝ 95/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 15/26 ⇜ (1/1 → 2/1) ⇝ 95/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 35/52 ⇜ (1/1 → 2/1) ⇝ 15/4 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 35/52 ⇜ (1/1 → 2/1) ⇝ 15/4 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 ⇜ (1/1 → 2/1) ⇝ 50/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 10/13 ⇜ (1/1 → 2/1) ⇝ 50/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 45/52 ⇜ (1/1 → 2/1) ⇝ 205/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/52 ⇜ (1/1 → 2/1) ⇝ 205/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 25/26 ⇜ (1/1 → 2/1) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 25/26 ⇜ (1/1 → 2/1) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (55/52 → 2/1) ⇝ 215/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (55/52 → 2/1) ⇝ 215/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 → 20/13 | note:ab2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4537037037037037 ]", - "[ (15/13 → 2/1) ⇝ 55/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ (5/4 → 2/1) ⇝ 225/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (35/26 → 2/1) ⇝ 115/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (75/52 → 2/1) ⇝ 235/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 20/13 → 25/13 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ (25/13 → 2/1) ⇝ 30/13 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 25/13 ⇜ (2/1 → 30/13) | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 0/1 ⇜ (2/1 → 3/1) ⇝ 40/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 0/1 ⇜ (2/1 → 3/1) ⇝ 80/13 | s:mad ]", - "[ 5/52 ⇜ (2/1 → 3/1) ⇝ 165/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 5/26 ⇜ (2/1 → 3/1) ⇝ 85/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 15/52 ⇜ (2/1 → 3/1) ⇝ 175/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 5/13 ⇜ (2/1 → 3/1) ⇝ 45/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/13 ⇜ (2/1 → 3/1) ⇝ 45/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 25/52 ⇜ (2/1 → 3/1) ⇝ 185/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 25/52 ⇜ (2/1 → 3/1) ⇝ 185/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 15/26 ⇜ (2/1 → 3/1) ⇝ 95/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 15/26 ⇜ (2/1 → 3/1) ⇝ 95/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 35/52 ⇜ (2/1 → 3/1) ⇝ 15/4 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 35/52 ⇜ (2/1 → 3/1) ⇝ 15/4 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 ⇜ (2/1 → 3/1) ⇝ 50/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 10/13 ⇜ (2/1 → 3/1) ⇝ 50/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 45/52 ⇜ (2/1 → 3/1) ⇝ 205/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/52 ⇜ (2/1 → 3/1) ⇝ 205/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 25/26 ⇜ (2/1 → 3/1) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 25/26 ⇜ (2/1 → 3/1) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 55/52 ⇜ (2/1 → 3/1) ⇝ 215/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 55/52 ⇜ (2/1 → 3/1) ⇝ 215/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 ⇜ (2/1 → 3/1) ⇝ 55/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/4 ⇜ (2/1 → 3/1) ⇝ 225/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 35/26 ⇜ (2/1 → 3/1) ⇝ 115/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 75/52 ⇜ (2/1 → 3/1) ⇝ 235/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 30/13 → 395/156 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 395/156 → 35/13 | note:ab2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4537037037037037 ]", - "[ (35/13 → 3/1) ⇝ 40/13 | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ 0/1 ⇜ (3/1 → 40/13) | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 0/1 ⇜ (3/1 → 40/13) ⇝ 80/13 | s:mad ]", - "[ 5/52 ⇜ (3/1 → 40/13) ⇝ 165/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 5/26 ⇜ (3/1 → 40/13) ⇝ 85/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 15/52 ⇜ (3/1 → 40/13) ⇝ 175/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 5/13 ⇜ (3/1 → 40/13) ⇝ 45/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/13 ⇜ (3/1 → 40/13) ⇝ 45/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 25/52 ⇜ (3/1 → 40/13) ⇝ 185/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 25/52 ⇜ (3/1 → 40/13) ⇝ 185/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 15/26 ⇜ (3/1 → 40/13) ⇝ 95/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 15/26 ⇜ (3/1 → 40/13) ⇝ 95/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 35/52 ⇜ (3/1 → 40/13) ⇝ 15/4 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 35/52 ⇜ (3/1 → 40/13) ⇝ 15/4 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 ⇜ (3/1 → 40/13) ⇝ 50/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 10/13 ⇜ (3/1 → 40/13) ⇝ 50/13 | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 45/52 ⇜ (3/1 → 40/13) ⇝ 205/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/52 ⇜ (3/1 → 40/13) ⇝ 205/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 25/26 ⇜ (3/1 → 40/13) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 25/26 ⇜ (3/1 → 40/13) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 55/52 ⇜ (3/1 → 40/13) ⇝ 215/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 55/52 ⇜ (3/1 → 40/13) ⇝ 215/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 ⇜ (3/1 → 40/13) ⇝ 55/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/4 ⇜ (3/1 → 40/13) ⇝ 225/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 35/26 ⇜ (3/1 → 40/13) ⇝ 115/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 75/52 ⇜ (3/1 → 40/13) ⇝ 235/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 35/13 ⇜ (3/1 → 40/13) | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ 5/52 ⇜ (40/13 → 165/52) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 5/26 ⇜ (40/13 → 85/26) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 15/52 ⇜ (40/13 → 175/52) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 5/13 ⇜ (40/13 → 45/13) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/13 ⇜ (40/13 → 45/13) | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 25/52 ⇜ (40/13 → 45/13) ⇝ 185/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 15/26 ⇜ (40/13 → 45/13) ⇝ 95/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 35/52 ⇜ (40/13 → 45/13) ⇝ 15/4 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 ⇜ (40/13 → 45/13) ⇝ 50/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/52 ⇜ (40/13 → 45/13) ⇝ 205/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 25/26 ⇜ (40/13 → 45/13) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 55/52 ⇜ (40/13 → 45/13) ⇝ 215/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 40/13 → 45/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 25/52 ⇜ (40/13 → 185/52) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 15/26 ⇜ (40/13 → 95/26) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 35/52 ⇜ (40/13 → 15/4) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 10/13 ⇜ (40/13 → 50/13) | clip:1 note:C4 s:piano release:0.1 pan:0.5277777777777778 ]", - "[ 45/52 ⇜ (40/13 → 50/13) ⇝ 205/52 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 25/26 ⇜ (40/13 → 50/13) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 55/52 ⇜ (40/13 → 50/13) ⇝ 215/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 ⇜ (40/13 → 50/13) ⇝ 55/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/4 ⇜ (40/13 → 50/13) ⇝ 225/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 35/26 ⇜ (40/13 → 50/13) ⇝ 115/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 75/52 ⇜ (40/13 → 50/13) ⇝ 235/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 0/1 ⇜ (40/13 → 4/1) ⇝ 80/13 | s:mad ]", - "[ (40/13 → 4/1) ⇝ 80/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (165/52 → 4/1) ⇝ 25/4 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (85/26 → 4/1) ⇝ 165/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ (175/52 → 4/1) ⇝ 335/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 25/52 ⇜ (45/13 → 185/52) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 15/26 ⇜ (45/13 → 95/26) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 35/52 ⇜ (45/13 → 15/4) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 10/13 ⇜ (45/13 → 50/13) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/13 → 50/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 45/52 ⇜ (45/13 → 205/52) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 25/26 ⇜ (45/13 → 4/1) ⇝ 105/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 55/52 ⇜ (45/13 → 4/1) ⇝ 215/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (45/13 → 4/1) ⇝ 85/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (45/13 → 4/1) ⇝ 85/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (185/52 → 4/1) ⇝ 345/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (185/52 → 4/1) ⇝ 345/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (95/26 → 4/1) ⇝ 175/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (95/26 → 4/1) ⇝ 175/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ (15/4 → 4/1) ⇝ 355/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (15/4 → 4/1) ⇝ 355/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/52 ⇜ (50/13 → 205/52) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 25/26 ⇜ (50/13 → 4/1) ⇝ 105/26 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 55/52 ⇜ (50/13 → 4/1) ⇝ 215/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 ⇜ (50/13 → 4/1) ⇝ 55/13 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/4 ⇜ (50/13 → 4/1) ⇝ 225/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 35/26 ⇜ (50/13 → 4/1) ⇝ 115/26 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 75/52 ⇜ (50/13 → 4/1) ⇝ 235/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (50/13 → 4/1) ⇝ 635/156 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ (50/13 → 4/1) ⇝ 90/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (50/13 → 4/1) ⇝ 90/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ (205/52 → 4/1) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (205/52 → 4/1) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 25/26 ⇜ (4/1 → 105/26) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 25/26 ⇜ (4/1 → 105/26) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 50/13 ⇜ (4/1 → 635/156) | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 55/52 ⇜ (4/1 → 215/52) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 55/52 ⇜ (4/1 → 215/52) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/13 ⇜ (4/1 → 55/13) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 5/4 ⇜ (4/1 → 225/52) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 35/26 ⇜ (4/1 → 115/26) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 75/52 ⇜ (4/1 → 235/52) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 0/1 ⇜ (4/1 → 5/1) ⇝ 80/13 | s:mad ]", - "[ 40/13 ⇜ (4/1 → 5/1) ⇝ 80/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 165/52 ⇜ (4/1 → 5/1) ⇝ 25/4 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 85/26 ⇜ (4/1 → 5/1) ⇝ 165/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 175/52 ⇜ (4/1 → 5/1) ⇝ 335/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/13 ⇜ (4/1 → 5/1) ⇝ 85/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/13 ⇜ (4/1 → 5/1) ⇝ 85/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 185/52 ⇜ (4/1 → 5/1) ⇝ 345/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 185/52 ⇜ (4/1 → 5/1) ⇝ 345/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 95/26 ⇜ (4/1 → 5/1) ⇝ 175/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 95/26 ⇜ (4/1 → 5/1) ⇝ 175/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/4 ⇜ (4/1 → 5/1) ⇝ 355/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 15/4 ⇜ (4/1 → 5/1) ⇝ 355/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 50/13 ⇜ (4/1 → 5/1) ⇝ 90/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 50/13 ⇜ (4/1 → 5/1) ⇝ 90/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 205/52 ⇜ (4/1 → 5/1) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 205/52 ⇜ (4/1 → 5/1) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (105/26 → 5/1) ⇝ 185/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (105/26 → 5/1) ⇝ 185/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 635/156 → 55/13 | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ (215/52 → 5/1) ⇝ 375/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (215/52 → 5/1) ⇝ 375/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 → 60/13 | note:ab2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4537037037037037 ]", - "[ (55/13 → 5/1) ⇝ 95/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ (225/52 → 5/1) ⇝ 385/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (115/26 → 5/1) ⇝ 15/2 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (235/52 → 5/1) ⇝ 395/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 60/13 → 5/1 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 5/1 → 70/13 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 0/1 ⇜ (5/1 → 6/1) ⇝ 80/13 | s:mad ]", - "[ 40/13 ⇜ (5/1 → 6/1) ⇝ 80/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 165/52 ⇜ (5/1 → 6/1) ⇝ 25/4 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 85/26 ⇜ (5/1 → 6/1) ⇝ 165/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 175/52 ⇜ (5/1 → 6/1) ⇝ 335/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/13 ⇜ (5/1 → 6/1) ⇝ 85/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/13 ⇜ (5/1 → 6/1) ⇝ 85/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 185/52 ⇜ (5/1 → 6/1) ⇝ 345/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 185/52 ⇜ (5/1 → 6/1) ⇝ 345/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 95/26 ⇜ (5/1 → 6/1) ⇝ 175/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 95/26 ⇜ (5/1 → 6/1) ⇝ 175/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/4 ⇜ (5/1 → 6/1) ⇝ 355/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 15/4 ⇜ (5/1 → 6/1) ⇝ 355/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 50/13 ⇜ (5/1 → 6/1) ⇝ 90/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 50/13 ⇜ (5/1 → 6/1) ⇝ 90/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 205/52 ⇜ (5/1 → 6/1) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 205/52 ⇜ (5/1 → 6/1) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 105/26 ⇜ (5/1 → 6/1) ⇝ 185/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 105/26 ⇜ (5/1 → 6/1) ⇝ 185/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 215/52 ⇜ (5/1 → 6/1) ⇝ 375/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 215/52 ⇜ (5/1 → 6/1) ⇝ 375/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 ⇜ (5/1 → 6/1) ⇝ 95/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 225/52 ⇜ (5/1 → 6/1) ⇝ 385/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 115/26 ⇜ (5/1 → 6/1) ⇝ 15/2 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 235/52 ⇜ (5/1 → 6/1) ⇝ 395/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (70/13 → 6/1) ⇝ 80/13 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 0/1 ⇜ (6/1 → 80/13) | s:mad ]", - "[ 40/13 ⇜ (6/1 → 80/13) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 165/52 ⇜ (6/1 → 80/13) ⇝ 25/4 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 85/26 ⇜ (6/1 → 80/13) ⇝ 165/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 175/52 ⇜ (6/1 → 80/13) ⇝ 335/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/13 ⇜ (6/1 → 80/13) ⇝ 85/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/13 ⇜ (6/1 → 80/13) ⇝ 85/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 185/52 ⇜ (6/1 → 80/13) ⇝ 345/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 185/52 ⇜ (6/1 → 80/13) ⇝ 345/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 95/26 ⇜ (6/1 → 80/13) ⇝ 175/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 95/26 ⇜ (6/1 → 80/13) ⇝ 175/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/4 ⇜ (6/1 → 80/13) ⇝ 355/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 15/4 ⇜ (6/1 → 80/13) ⇝ 355/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 50/13 ⇜ (6/1 → 80/13) ⇝ 90/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 50/13 ⇜ (6/1 → 80/13) ⇝ 90/13 | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 205/52 ⇜ (6/1 → 80/13) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 205/52 ⇜ (6/1 → 80/13) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 105/26 ⇜ (6/1 → 80/13) ⇝ 185/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 105/26 ⇜ (6/1 → 80/13) ⇝ 185/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 215/52 ⇜ (6/1 → 80/13) ⇝ 375/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 215/52 ⇜ (6/1 → 80/13) ⇝ 375/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 ⇜ (6/1 → 80/13) ⇝ 95/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 225/52 ⇜ (6/1 → 80/13) ⇝ 385/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 115/26 ⇜ (6/1 → 80/13) ⇝ 15/2 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 235/52 ⇜ (6/1 → 80/13) ⇝ 395/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 70/13 ⇜ (6/1 → 80/13) | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", - "[ 165/52 ⇜ (80/13 → 25/4) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 85/26 ⇜ (80/13 → 165/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 175/52 ⇜ (80/13 → 335/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 45/13 ⇜ (80/13 → 85/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 45/13 ⇜ (80/13 → 85/13) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 185/52 ⇜ (80/13 → 85/13) ⇝ 345/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 95/26 ⇜ (80/13 → 85/13) ⇝ 175/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/4 ⇜ (80/13 → 85/13) ⇝ 355/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 50/13 ⇜ (80/13 → 85/13) ⇝ 90/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 205/52 ⇜ (80/13 → 85/13) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 105/26 ⇜ (80/13 → 85/13) ⇝ 185/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 215/52 ⇜ (80/13 → 85/13) ⇝ 375/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 80/13 → 85/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 185/52 ⇜ (80/13 → 345/52) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 95/26 ⇜ (80/13 → 175/26) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 15/4 ⇜ (80/13 → 355/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 50/13 ⇜ (80/13 → 90/13) | clip:1 note:D4 s:piano release:0.1 pan:0.537037037037037 ]", - "[ 205/52 ⇜ (80/13 → 90/13) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 105/26 ⇜ (80/13 → 90/13) ⇝ 185/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 215/52 ⇜ (80/13 → 90/13) ⇝ 375/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 ⇜ (80/13 → 90/13) ⇝ 95/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 225/52 ⇜ (80/13 → 90/13) ⇝ 385/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 115/26 ⇜ (80/13 → 90/13) ⇝ 15/2 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 235/52 ⇜ (80/13 → 90/13) ⇝ 395/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (80/13 → 7/1) ⇝ 120/13 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (80/13 → 7/1) ⇝ 160/13 | s:mad ]", - "[ (25/4 → 7/1) ⇝ 485/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ (165/26 → 7/1) ⇝ 245/26 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ (335/52 → 7/1) ⇝ 495/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 185/52 ⇜ (85/13 → 345/52) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 95/26 ⇜ (85/13 → 175/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 15/4 ⇜ (85/13 → 355/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 50/13 ⇜ (85/13 → 90/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 85/13 → 90/13 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 205/52 ⇜ (85/13 → 7/1) ⇝ 365/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 105/26 ⇜ (85/13 → 7/1) ⇝ 185/26 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 215/52 ⇜ (85/13 → 7/1) ⇝ 375/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (85/13 → 7/1) ⇝ 125/13 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (85/13 → 7/1) ⇝ 125/13 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (345/52 → 7/1) ⇝ 505/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (345/52 → 7/1) ⇝ 505/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ (175/26 → 7/1) ⇝ 255/26 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (175/26 → 7/1) ⇝ 255/26 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ (355/52 → 7/1) ⇝ 515/52 | clip:1 note:F#5 s:piano release:0.1 pan:0.6111111111111112 ]", - "[ (355/52 → 7/1) ⇝ 515/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 205/52 ⇜ (90/13 → 7/1) ⇝ 365/52 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 105/26 ⇜ (90/13 → 7/1) ⇝ 185/26 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 215/52 ⇜ (90/13 → 7/1) ⇝ 375/52 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 ⇜ (90/13 → 7/1) ⇝ 95/13 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 225/52 ⇜ (90/13 → 7/1) ⇝ 385/52 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 115/26 ⇜ (90/13 → 7/1) ⇝ 15/2 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 235/52 ⇜ (90/13 → 7/1) ⇝ 395/52 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (90/13 → 7/1) ⇝ 1115/156 | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ (90/13 → 7/1) ⇝ 10/1 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (90/13 → 7/1) ⇝ 10/1 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 205/52 ⇜ (7/1 → 365/52) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 205/52 ⇜ (7/1 → 365/52) | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 105/26 ⇜ (7/1 → 185/26) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 105/26 ⇜ (7/1 → 185/26) | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 90/13 ⇜ (7/1 → 1115/156) | note:c3 gain:0.8 clip:1 s:piano release:0.1 pan:0.4722222222222222 ]", - "[ 215/52 ⇜ (7/1 → 375/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 215/52 ⇜ (7/1 → 375/52) | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 55/13 ⇜ (7/1 → 95/13) | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 225/52 ⇜ (7/1 → 385/52) | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 115/26 ⇜ (7/1 → 15/2) | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 235/52 ⇜ (7/1 → 395/52) | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 80/13 ⇜ (7/1 → 8/1) ⇝ 120/13 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 80/13 ⇜ (7/1 → 8/1) ⇝ 160/13 | s:mad ]", - "[ 25/4 ⇜ (7/1 → 8/1) ⇝ 485/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 165/26 ⇜ (7/1 → 8/1) ⇝ 245/26 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 335/52 ⇜ (7/1 → 8/1) ⇝ 495/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 85/13 ⇜ (7/1 → 8/1) ⇝ 125/13 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 85/13 ⇜ (7/1 → 8/1) ⇝ 125/13 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ 345/52 ⇜ (7/1 → 8/1) ⇝ 505/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ 345/52 ⇜ (7/1 → 8/1) ⇝ 505/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ 175/26 ⇜ (7/1 → 8/1) ⇝ 255/26 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ 175/26 ⇜ (7/1 → 8/1) ⇝ 255/26 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 355/52 ⇜ (7/1 → 8/1) ⇝ 515/52 | clip:1 note:F#5 s:piano release:0.1 pan:0.6111111111111112 ]", - "[ 355/52 ⇜ (7/1 → 8/1) ⇝ 515/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 90/13 ⇜ (7/1 → 8/1) ⇝ 10/1 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ 90/13 ⇜ (7/1 → 8/1) ⇝ 10/1 | clip:1 note:E4 s:piano release:0.1 pan:0.5462962962962963 ]", - "[ (365/52 → 8/1) ⇝ 525/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (365/52 → 8/1) ⇝ 525/52 | clip:1 note:F#4 s:piano release:0.1 pan:0.5555555555555556 ]", - "[ (185/26 → 8/1) ⇝ 265/26 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (185/26 → 8/1) ⇝ 265/26 | clip:1 note:G#4 s:piano release:0.1 pan:0.5648148148148149 ]", - "[ 1115/156 → 95/13 | note:bb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.46296296296296297 ]", - "[ (375/52 → 8/1) ⇝ 535/52 | clip:1 note:F#5 s:piano release:0.1 pan:0.6111111111111112 ]", - "[ (375/52 → 8/1) ⇝ 535/52 | clip:1 note:A#4 s:piano release:0.1 pan:0.5740740740740741 ]", - "[ 95/13 → 100/13 | note:ab2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4537037037037037 ]", - "[ (95/13 → 8/1) ⇝ 135/13 | clip:1 note:C5 s:piano release:0.1 pan:0.5833333333333333 ]", - "[ (385/52 → 8/1) ⇝ 545/52 | clip:1 note:D5 s:piano release:0.1 pan:0.5925925925925926 ]", - "[ (15/2 → 8/1) ⇝ 275/26 | clip:1 note:E5 s:piano release:0.1 pan:0.6018518518518519 ]", - "[ (395/52 → 8/1) ⇝ 555/52 | clip:1 note:F#5 s:piano release:0.1 pan:0.6111111111111112 ]", - "[ (100/13 → 8/1) ⇝ 105/13 | note:gb2 gain:0.8 clip:1 s:piano release:0.1 pan:0.4444444444444444 ]", -] -`; - exports[`renders tunes > tune: caverave 1`] = ` [ "[ 0/1 → 1/2 | s:bd gain:0.8 ]", @@ -1507,14 +1111,14 @@ exports[`renders tunes > tune: caverave 1`] = ` exports[`renders tunes > tune: chop 1`] = ` [ - "[ 0/1 → 1/4 | s:p speed:0.03125 unit:c begin:0 end:0.0078125 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 0/1 → 1/4 | s:p speed:0.03125 unit:c begin:0.0234375 end:0.03125 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 1/4 → 1/2 | s:p speed:0.03125 unit:c begin:0.0078125 end:0.015625 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 1/4 → 1/2 | s:p speed:0.03125 unit:c begin:0.015625 end:0.0234375 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 1/2 → 3/4 | s:p speed:0.03125 unit:c begin:0.015625 end:0.0234375 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 1/2 → 3/4 | s:p speed:0.03125 unit:c begin:0.0078125 end:0.015625 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 3/4 → 1/1 | s:p speed:0.03125 unit:c begin:0.0234375 end:0.03125 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", - "[ 3/4 → 1/1 | s:p speed:0.03125 unit:c begin:0 end:0.0078125 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 0/1 → 1/4 | s:p speed:0.015625 unit:c begin:0 end:0.0078125 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 0/1 → 1/4 | s:p speed:0.015625 unit:c begin:0.0234375 end:0.03125 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 1/4 → 1/2 | s:p speed:0.015625 unit:c begin:0.0078125 end:0.015625 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 1/4 → 1/2 | s:p speed:0.015625 unit:c begin:0.015625 end:0.0234375 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 1/2 → 3/4 | s:p speed:0.015625 unit:c begin:0.015625 end:0.0234375 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 1/2 → 3/4 | s:p speed:0.015625 unit:c begin:0.0078125 end:0.015625 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 3/4 → 1/1 | s:p speed:0.015625 unit:c begin:0.0234375 end:0.03125 pan:0 shape:0.4 decay:0.1 sustain:0.6 ]", + "[ 3/4 → 1/1 | s:p speed:0.015625 unit:c begin:0 end:0.0078125 pan:1 shape:0.4 decay:0.1 sustain:0.6 ]", ] `; @@ -1545,7 +1149,7 @@ exports[`renders tunes > tune: dinofunk 1`] = ` "[ 0/1 → 1/4 | note:Ab4 s:sawtooth cutoff:1239.2541394619345 gain:0.8 decay:0.05125097280354112 sustain:0 delay:0.2561353071307281 room:1 ]", "[ 0/1 → 1/4 | note:68.1 s:sawtooth cutoff:1239.2541394619345 gain:0.8 decay:0.05125097280354112 sustain:0 delay:0.2561353071307281 room:1 ]", "[ 0/1 → 1/2 | s:bd ]", - "[ (0/1 → 1/1) ⇝ 8/1 | s:bass speed:0.125 unit:c clip:1 ]", + "[ (0/1 → 1/1) ⇝ 8/1 | s:bass speed:0.0625 unit:c clip:1 ]", "[ (0/1 → 1/1) ⇝ 8/1 | note:b4 s:dino delay:0.8 room:0.5 ]", "[ 1/4 → 1/2 | s:hh ]", "[ 1/4 → 1/2 | note:Gb3 ]", diff --git a/test/dbdump.js b/test/dbdump.js deleted file mode 100644 index cd299c77b..000000000 --- a/test/dbdump.js +++ /dev/null @@ -1,10 +0,0 @@ -import { createClient } from '@supabase/supabase-js'; - -const supabase = createClient( - 'https://pidxdsxphlhzjnzmifth.supabase.co', - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBpZHhkc3hwaGxoempuem1pZnRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTYyMzA1NTYsImV4cCI6MTk3MTgwNjU1Nn0.bqlw7802fsWRnqU5BLYtmXk_k-D1VFmbkHMywWc15NM', -); - -const { data } = await supabase.from('code'); - -console.log(JSON.stringify(data)); diff --git a/test/dbdump.json b/test/dbdump.json deleted file mode 100644 index 50b200f17..000000000 --- a/test/dbdump.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":10,"created_at":"2022-06-26T11:01:55.904597+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .out()\n .slow(3/2)","hash":"nLsPXvEPTcQF"},{"id":46,"created_at":"2022-07-18T05:59:44.00982+00:00","code":"stack(\n seq(\n e5, [b4, c5], d5, [c5, b4],\n a4, [a4, c5], e5, [d5, c5],\n b4, [r, c5], d5, e5,\n c5, a4, a4, r,\n [r, d5], [r, f5], a5, [g5, f5],\n e5, [r, c5], e5, [d5, c5],\n b4, [b4, c5], d5, e5,\n c5, a4, a4, r,\n ).rev(),\n seq(\n e2, e3, e2, e3, e2, e3, e2, e3,\n a2, a3, a2, a3, a2, a3, a2, a3,\n gs2, gs3, gs2, gs3, e2, e3, e2, e3,\n a2, a3, a2, a3, a2, a3, b1, c2,\n d2, d3, d2, d3, d2, d3, d2, d3,\n c2, c3, c2, c3, c2, c3, c2, c3,\n b1, b2, b1, b2, e2, e3, e2, e3,\n a1, a2, a1, a2, a1, a2, a1, a2,\n ).rev()\n).slow(16)","hash":"wj1_oPJEGjUu"},{"id":49,"created_at":"2022-07-18T07:00:41.350672+00:00","code":"\"f2,f3,c4,ab4\"\n.scale(seq('F minor', 'F harmonic minor').slow(4))\n.scaleTranspose(\"<0 -1 -2 -3>\")\n.transpose(\"0 1\".slow(16))","hash":"RnD3yO0e31p-"},{"id":75,"created_at":"2022-08-01T12:55:04.965073+00:00","code":"const xorwise = (x) => {\n const a = (x << 13) ^ x;\n const b = (a >> 17) ^ a;\n return (b << 5) ^ b;\n};\nconst _frac = (x) => x - Math.trunc(x);\nconst timeToIntSeed = (x) => xorwise(Math.trunc(_frac(x / 300) * 536870912));\nconst intSeedToRand = (x) => (x % 536870912) / 536870912;\nconst timeToRand = (x) => Math.abs(intSeedToRand(timeToIntSeed(x)));\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nconst bars = 400;\nconst barMaxHeight = 200;\n\nconst barWidth = ctx.canvas.width / bars;\nfor(let i = 0;i {\n const a = (x << 13) ^ x;\n const b = (a >> 17) ^ a;\n return (b << 5) ^ b;\n};\nconst _frac = (x) => x - Math.trunc(x);\nconst timeToIntSeed = (x) => xorwise(Math.trunc(_frac(x / 300) * 536870912));\nconst intSeedToRand = (x) => (x % 536870912) / 536870912;\nconst timeToRand = (x) => Math.abs(intSeedToRand(timeToIntSeed(x)));\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nconst bars = 400;\nconst barMaxHeight = 200;\nconst yCenter = 700;\n\nconst barWidth = ctx.canvas.width / bars;\nfor(let i = 0;i {\n const a = (x << 13) ^ x;\n const b = (a >> 17) ^ a;\n return (b << 5) ^ b;\n};\nconst _frac = (x) => x - Math.trunc(x);\nconst timeToIntSeed = (x) => xorwise(Math.trunc(_frac(x / 300) * 536870912));\nconst intSeedToRand = (x) => (x % 536870912) / 536870912;\nconst timeToRand = (x) => Math.abs(intSeedToRand(timeToIntSeed(x)));\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nconst bars = 300;\nconst barMaxHeight = 200;\nconst yCenter = 700;\n\nconst barWidth = ctx.canvas.width / bars;\nfor(let i = 0;i {\n const a = (x << 13) ^ x;\n const b = (a >> 17) ^ a;\n return (b << 5) ^ b;\n};\nconst _frac = (x) => x - Math.trunc(x);\nconst timeToIntSeed = (x) => xorwise(Math.trunc(_frac(x / 3000) * 536870912));\nconst intSeedToRand = (x) => (x % 536870912) / 536870912;\nconst timeToRand = (x) => Math.abs(intSeedToRand(timeToIntSeed(x)));\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nconst bars = 300;\nconst barMaxHeight = 200;\nconst yCenter = 700;\n\nconst barWidth = ctx.canvas.width / bars;\nfor(let i = 0;i {\n let n = Math.min(xs.length, ys.length)\n let [s_x, s_y, s_xy, s_x2, s_y2] = [0,0,0,0,0] \n for (let i = 0; i < n; i++) {\n s_x += xs[i]; s_x2 += xs[i] * xs[i];\n s_y += ys[i]; s_xy += xs[i] * ys[i];\n s_y2 += ys[i] * ys[i]\n }\n return (s_xy - s_x * s_y / n) / (Math.sqrt(s_x2 - s_x * s_x / n) * Math.sqrt(s_y2 - s_y * s_y / n))\n}\n\nconst cycleCount = 10000\n\nconst nums0 = rand.late(0).segment(1).queryArc(0, cycleCount).map(x => x.value)\nconst nums1 = rand.late(.0001).segment(1).queryArc(0, cycleCount).map(x => x.value)\n\nconsole.log(correlation(nums0, nums1))\n\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\n\nfor (let i = 0; i < cycleCount; i++) {\n ctx.fillRect(nums0[i] * ctx.canvas.width, (1 - nums1[i]) * ctx.canvas.width, 2, 2);\n}\n\nsilence;","hash":"5_NKdDWsFCk1"},{"id":81,"created_at":"2022-08-01T23:08:10.209914+00:00","code":"const correlation = (xs, ys) => {\n let n = Math.min(xs.length, ys.length)\n let [s_x, s_y, s_xy, s_x2, s_y2] = [0,0,0,0,0] \n for (let i = 0; i < n; i++) {\n s_x += xs[i]; s_x2 += xs[i] * xs[i];\n s_y += ys[i]; s_xy += xs[i] * ys[i];\n s_y2 += ys[i] * ys[i]\n }\n return (s_xy - s_x * s_y / n) / (Math.sqrt(s_x2 - s_x * s_x / n) * Math.sqrt(s_y2 - s_y * s_y / n))\n}\n\nconst cycleCount = 10000\n\nconst nums0 = rand.segment(1).queryArc(0, cycleCount).map(x => x.value)\nconst nums1 = rand.late(.0001).segment(1).queryArc(0, cycleCount).map(x => x.value)\n\nconsole.log(correlation(nums0, nums1))\n\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nctx.fillText('Pearson correlation is ' + correlation(nums0, nums1), 10, ctx.canvas.height - 100)\n\nfor (let i = 0; i < cycleCount; i++) {\n ctx.fillRect(nums0[i] * ctx.canvas.width, (1 - nums1[i]) * ctx.canvas.height, 2, 2);\n}\n\nsilence;","hash":"kH7LV63mXASH"},{"id":220,"created_at":"2022-09-28T16:18:38.7126+00:00","code":" \"\".voicings()\n .superimpose(x=>x.add(perlin.range(0,.3)))\n .add(\"<0 2>/8\")\n .note().s('sawtooth')\n .attack(.1).decay(.05).sustain(.2)\n .segment(\"<6@3 3>\")\n .cutoff(saw.range(500,2000).slow(16))\n .gain(isaw)\n .out()\n .color(\" [white | gray]\")\n .pianoroll({ vertical:1, fold:1, smear:0,background:'silver' })\n\n // strudel disable-highlighting strudel hide-heade","hash":"cpVS2-bO1LzP"},{"id":11,"created_at":"2022-06-26T11:07:20.701102+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .out()\n .slow(3/2)","hash":"ac7iGrXwBA_D"},{"id":12,"created_at":"2022-06-26T11:09:30.200054+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n perc: ['perc/002_perc2.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\n\"C^7 Am7 Dm7 G7\".slow(2).voicings()\n .stack(\"0@6 [<1 2> <2 0> 1]@2\".scale('C5 major'))\n .n().slow(4)\n .s('0040_FluidR3_GM_sf2_file')\n .color('steelblue')\n .stack(\n \"<-7 ~@2 [~@2 -7] -9 ~@2 [~@2 -9] -10!2 ~ [~@2 -10] -5 ~ [-3 -2 -10]@2>*2\".scale('C3 major')\n .n().s('sawtooth').color('brown')\n )\n .attack(0.05).decay(.1).sustain(.7)\n .cutoff(perlin.range(800,2000))\n .gain(.3)\n .stack(\n s(\" sd,hh*3,~@5 \")\n .speed(perlin.range(.9,1.1))\n .n(3).color('gray')\n ).slow(3/2)\n .pianoroll({autorange:1,vertical:1,fold:0})\n .out()","hash":"0l5OmIwd4Xhc"},{"id":13,"created_at":"2022-06-26T22:23:34.464386+00:00","code":"s(\"bd\")","hash":"a5zB31-92Q7M"},{"id":14,"created_at":"2022-06-27T20:39:04.215675+00:00","code":"const bpm = 90;\nconst lead = polysynth().set({...osc('sine4'),...adsr(.004)}).chain(vol(0.15),out())\nconst bass = fmsynth({...osc('sawtooth6'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out());\nconst s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4));\nstack(\n \"0 2\".struct(\" [x ~]\").apply(s).scaleTranspose(stack(0,2)).tone(lead),\n \"<6 7 9 7>\".struct(\"[~ [x ~]*2]*2\").apply(s).scaleTranspose(\"[0,2] [2,4]\".fast(2).every(4,rev)).tone(lead),\n\t\"-14\".struct(\"[~ x@0.8]*2\".early(0.01)).apply(s).tone(bass),\n \"c2*2\".tone(membrane().chain(vol(0.6), out())),\n \"~ c2\".tone(noise().chain(vol(0.2), out())),\n \"c4*4\".tone(metal(adsr(0,.05,0)).chain(vol(0.03), out()))\n)\n.slow(120 / bpm)","hash":"ZNO6a_vBjz65"},{"id":15,"created_at":"2022-06-28T20:05:20.638134+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav'] }, \n 'github:cleary/samples-flbass/main/')\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.superimpose(\n x=>x.add(7).color('steelblue')\n .off(1/8,x=>x.add(\"2,4\")\n .off(1/8,x=>x.add(5).echo(4,.125,.5)\n //.hush()\n ))\n .slow(2)\n).scale('A1 minor'))\n.s(\"flbass\").n(\"<0 1>/8\")\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.out()\n.pianoroll({vertical:1})","hash":"8sxdCCcYKcvp"},{"id":16,"created_at":"2022-06-28T22:58:35.06403+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n perc: ['perc/002_perc2.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\n\"C^7 Am7 Dm7 G7\".slow(2).voicings()\n .stack(\"0@6 [<1 2> <2 0> 1]@2\".scale('C5 major'))\n .n().slow(4)\n .s('0040_FluidR3_GM_sf2_file')\n .color('steelblue')\n .stack(\n \"<-7 ~@2 [~@2 -7] -9 ~@2 [~@2 -9] -10!2 ~ [~@2 -10] -5 ~ [-3 -2 -10]@2>*2\".scale('C3 major')\n .n().s('sawtooth').color('brown')\n )\n .attack(0.05).decay(.1).sustain(.7)\n .cutoff(perlin.range(800,2000))\n .gain(.3)\n .stack(\n s(\" sd,hh*3,~@5 \")\n .speed(perlin.range(.9,1.1))\n .n(3).color('gray')\n ).slow(3/2)\n .pianoroll({autorange:1,vertical:1,fold:0})\n .out()","hash":"PIG8q54uhQ5h"},{"id":18,"created_at":"2022-06-29T11:42:55.248174+00:00","code":"stack(\n // melody\n `[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] \n [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]\n [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]\n [B3@2 D4] [A4@2 G4] D5@2 \n [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]\n [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]`,\n // bass\n `[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]`\n).transpose(12).slow(48).tone(\n new PolySynth().chain(\n new Gain(0.3), \n new Chorus(2, 2.5, 0.5).start(), \n new Freeverb(), \n getDestination())\n)","hash":"RyZi9bqqcQku"},{"id":19,"created_at":"2022-06-29T11:43:24.265171+00:00","code":"stack(\n seq(\n \"~\",\n \"~\",\n \"~\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [F5@2 C6] A5 G5\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [F5@2 C6] A5 G5\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\",\n \"A5 [F5@2 C5] A5 F5\",\n \"Ab5 [F5@2 Ab5] G5@2\",\n \"A5 [F5@2 C5] A5 F5\",\n \"Ab5 [F5@2 C5] C6@2\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\"\n ),\n seq(\n \"[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]\",\n \"[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\",\n \"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]\",\n \"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]\",\n \"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]\",\n \"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\"\n ),\n seq(\n \"[G3 G3 C3 E3]\",\n \"[F2 D2 G2 C2]\",\n \"[F2 D2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[A2 Ab2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[A2 Ab2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\",\n \"[Bb2 Bb2 A2 A2]\",\n \"[Ab2 Ab2 G2 [C2 D2 E2]]\",\n \"[Bb2 Bb2 A2 A2]\",\n \"[Ab2 Ab2 G2 [C2 D2 E2]]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\"\n )\n).slow(51);\n","hash":"83h9X6BCipLc"},{"id":20,"created_at":"2022-06-29T20:25:43.622751+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"Ii6-cLJkxdw9"},{"id":21,"created_at":"2022-06-29T20:25:49.311626+00:00","code":"n(\n \"a4 [a3 c3] a3 c3\"\n .sub(\"<7 12>/2\")\n .off(1/8, add(\"12\"))\n .off(1/4, add(\"7\"))\n)\n .legato(.5)\n .slow(2)\n .s(\"sawtooth square\")\n .cutoff(\"<2000 1000 500>\")\n .out()\n","hash":"-QCLFGNo4Q3J"},{"id":47,"created_at":"2022-07-18T06:48:38.473719+00:00","code":"\"c2 d2 e2@2\".struct(\"x x x*3\").note().out().pianoroll({fold:0,autorange:0,vertical:0,minMidi:30,maxMidi:50})","hash":"0KNPD8AmV-ms"},{"id":116,"created_at":"2022-08-27T21:13:04.238761+00:00","code":"const scales = sequence('C minor', ['D locrian', 'G phrygian'], 'Bb2 minor', ['C locrian','F phrygian']).slow(4)\nstack(\n \"\".fast(2).struct(\"x ~ x@3 x ~ x ~ ~ ~ x ~ x@3\".late(1/8)).early(1/8).slow(2).voicings(),\n \"[~ [0 ~]] 0 [~ [4 ~]] 4\".sub(7).restart(scales).scale(scales).early(.25)\n).note().piano().out().slow(2)","hash":"j5oC-CSjk7Kq"},{"id":22,"created_at":"2022-06-30T13:49:02.347298+00:00","code":"const lfo = cosine.slow(15);\nconst lfo2 = sine.slow(16);\nconst filter1 = x=>x.cutoff(lfo2.range(300,3000));\nconst filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)\nconst scales = cat('D3 major', 'G3 major').slow(8)\n\nconst drums = await players({\n bd: '344/344757_1676145-lq.mp3',\n sn: '387/387186_7255534-lq.mp3',\n hh: '561/561241_12517458-lq.mp3',\n hh2:'44/44944_236326-lq.mp3',\n hh3: '44/44944_236326-lq.mp3',\n}, 'https://freesound.org/data/previews/')\n\nstack(\n \"-7 0 -7 7\".struct(\"x(5,8,2)\").fast(2).sub(7)\n .scale(scales)\n .n()\n .s(\"sawtooth,square\")\n .gain(.3).attack(0.01).decay(0.1).sustain(.5)\n .apply(filter1),\n \"~@3 [<2 3>,<4 5>]\"\n .echo(4,1/16,.7)\n .scale(scales)\n .n()\n .s('square').gain(.7)\n .attack(0.01).decay(0.1).sustain(0)\n .apply(filter1),\n \"6 4 2\".add(14)\n .superimpose(sub(\"5\"))\n .fast(1).euclidLegato(3,8)\n .mask(\"<1 0@7>\")\n .fast(2)\n .echo(32, 1/8, .8)\n .scale(scales)\n .n()\n .s(\"sawtooth\")\n .gain(sine.range(.1,.4).slow(8))\n .attack(.001).decay(.2).sustain(0)\n .apply(filter2)\n).out().stack(\n stack(\n \"bd <~@7 [~ bd]>\".fast(2),\n \"~ sn\",\n \"[~ hh3]*2\"\n ).tone(drums.chain(vol(.18),out())).fast(2)\n).slow(2)\n \n//.pianoroll({minMidi:20, maxMidi:160})\n// strudel disable-highlighting","hash":"vwau_1P_anLs"},{"id":23,"created_at":"2022-07-01T06:57:24.49368+00:00","code":"\"[Dm7 G7] C^7\"\n .layer(\n x=>x.voicings().struct(\"x(3,8)\".fast(2)),\n x=>x.rootNotes(2).struct(\"x*4\").legato(.95)\n )\n .transpose(\"<0 1 2 1>/2\")\n .note()\n .slow(4)\n .out().piano().pianoroll({vertical:1})","hash":"wVExAEFBUPQB"},{"id":24,"created_at":"2022-07-01T14:36:15.475186+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"C8mMgTmvsnue"},{"id":25,"created_at":"2022-07-01T14:38:58.329924+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)\n.pianoroll()","hash":"EeNsQ8hdNZwN"},{"id":26,"created_at":"2022-07-03T10:45:32.771893+00:00","code":"`[[e5 [b4 c5] d5 [c5 b4]]\n[a4 [a4 c5] e5 [d5 c5]]\n[b4 [~ c5] d5 e5]\n[c5 a4 a4 ~]\n[[~ d5] [~ f5] a5 [g5 f5]]\n[e5 [~ c5] e5 [d5 c5]]\n[b4 [b4 c5] d5 e5]\n[c5 a4 a4 ~]],\n[[e2 e3]*4]\n[[a2 a3]*4]\n[[g#2 g#3]*2 [e2 e3]*2]\n[a2 a3 a2 a3 a2 a3 b1 c2]\n[[d2 d3]*4]\n[[c2 c3]*4]\n[[b1 b2]*2 [e2 e3]*2]\n[[a1 a2]*4]`.slow(16)\n","hash":"AoWRw1oZkytb"},{"id":27,"created_at":"2022-07-03T10:45:53.927468+00:00","code":"// mixer\nconst mix = (key) => vol({\n chords: .2,\n lead: 0.8,\n bass: .4,\n snare: .95, \n kick: .9,\n hihat: .35,\n}[key]||0);\nconst delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out());\nconst delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\n// instruments\nconst instr = (instrument) => ({\n organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()),\n lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()),\n bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()),\n pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()),\n hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()),\n snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()),\n kick: membrane().chain(mix('kick'), out())\n}[instrument]);\n// harmony\nconst t = transpose(\"<0 0 1 0>/8\");\nconst sowhat = scaleTranspose(\"0,3,6,9,11\");\n// track\nstack(\n \"[<0 4 [3 [2 1]]>]/4\".struct(\"[x]*3\").mask(\"[~ x ~]\").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask(\"<~ ~ x x>/8\"),\n \"< <[d3 ~] [c3 f3] g3>>\".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask(\"/8\"),\n \"<[d2 [d2 ~]*3]!3 >\".apply(t).tone(instr('bass')),\n \"c1*6\".tone(instr('hihat')),\n \"~ c3\".tone(instr('snare')),\n \"<[c1@5 c1] >\".tone(instr('kick')),\n \"[2,4]/4\".scale('D dorian').apply(t).tone(instr('pad')).mask(\"/8\")\n).fast(6/8)\n// strudel disable-highlighting","hash":"UaTcY5YrOahl"},{"id":28,"created_at":"2022-07-03T11:00:24.355036+00:00","code":"const drums = await players({\n bd: 'bd/BT0A0D0.wav',\n sn: 'sn/ST0T0S3.wav',\n hh: 'hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nstack(\n \"\",\n \"hh*4\",\n \"~ \"\n).tone(drums.chain(out()))\n","hash":"YPLI4xhBDMpV"},{"id":29,"created_at":"2022-07-04T12:35:45.49722+00:00","code":"stack(\n \" \"\n .every(2, fast(2))\n .voicings(),\n \" \"\n).transpose(\"<0 2 3 4>\")","hash":"amB31Tm55hnv"},{"id":30,"created_at":"2022-07-06T15:54:50.086508+00:00","code":"stack(\n // melody\n `[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] \n [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]\n [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]\n [B3@2 D4] [A4@2 G4] D5@2 \n [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]\n [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]`,\n // bass\n `[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]`\n).transpose(12).slow(48).tone(\n new PolySynth().chain(\n new Gain(0.3), \n new Chorus(2, 2.5, 0.5).start(), \n new Freeverb(), \n getDestination())\n)","hash":"8OyCVeBYuqru"},{"id":31,"created_at":"2022-07-09T12:31:13.230041+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"lzjNrzv5qXL2"},{"id":48,"created_at":"2022-07-18T07:00:41.3457+00:00","code":"\"f2,f3,c4,ab4\"\n.scale(seq('F minor', 'F harmonic minor').slow(4))\n.scaleTranspose(\"<0 -1 -2 -3>\")\n.transpose(\"0 1\".slow(16))","hash":"Y5DZt5A66Jj-"},{"id":32,"created_at":"2022-07-11T06:51:34.557206+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh*4\") // drums\n .speed(perlin.range(.7,1)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .out()\n .slow(1.4)","hash":"b5ZZnwaI-UuT"},{"id":33,"created_at":"2022-07-12T02:21:17.231366+00:00","code":"stack(\n // melody\n seq(\n \"[F#5 D5] [B4 G4] Bb4 [B4 A4]\",\n \"[D5 Bb4] [G4 Eb4] F#4 [G4 F4]\",\n \"Bb4 [B4 A4] D5 [D#5 C#5]\",\n \"F#5 [G5 F5] Bb5 [F#5 F#5]\",\n ),\n // chords\n seq(\n \"[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]\",\n \"[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]\",\n \"Eb^7 [Am7 D7] G^7 [C#m7 F#7]\",\n \"B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]\"\n ).voicings(['E3', 'G4']),\n // bass\n seq(\n \"[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]\",\n \"[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]\",\n \"[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]\",\n \"[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]\"\n )\n).slow(20)","hash":"YZksJ_k4TsrS"},{"id":34,"created_at":"2022-07-13T00:56:59.644328+00:00","code":"\"<0 2 4 <0 4 6>*12 <3 4>*6 <0 2 4>*2>\"\n.scale('D major')\n// .color('salmon')\n.off(2, x=>x.scaleTranspose(3).color('green'))\n.off(4, x=>x.scaleTranspose(0).color('steelblue'))\n.legato(2)\n// .echo(16, 1, .5)\n.note().piano().out()\n.pianoroll()","hash":"e9-pyQN6vY8E"},{"id":35,"created_at":"2022-07-14T01:29:05.575101+00:00","code":"stack(\n // melody\n seq(\n \"[F#5 D5] [B4 G4] Bb4 [B4 A4]\",\n \"[D5 Bb4] [G4 Eb4] F#4 [G4 F4]\",\n \"Bb4 [B4 A4] D5 [D#5 C#5]\",\n \"F#5 [G5 F5] Bb5 [F#5 F#5]\",\n ),\n // chords\n seq(\n \"[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]\",\n \"[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]\",\n \"Eb^7 [Am7 D7] G^7 [C#m7 F#7]\",\n \"B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]\"\n ).voicings(['E3', 'G4']),\n // bass\n seq(\n \"[B2 D2] [G2 Bb2] [Eb2 Bb3] [A2 D2]\",\n \"[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]\",\n \"[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]\",\n \"[B2 F#2] [F2 Bb2] [Eb2 Bb3] [C#2 F#2]\"\n )\n).slow(20)","hash":"ar2sdYnjIBLm"},{"id":38,"created_at":"2022-07-16T07:31:25.401071+00:00","code":"const pat = s(\"bd\").struct(\"~ x\");\n\nconsole.log('pat', pat.firstCycle().map(h=>h.showWhole()))\n\nconst pat2 = pat.struct(\"x x\");\n\nconsole.log('pat2', pat2.firstCycle().map(h=>h.showWhole()))\n\nsilence","hash":"RDyvc3SOo6kX"},{"id":40,"created_at":"2022-07-16T20:25:39.362216+00:00","code":"stack(\n s(\"bd(3,8), ~ sd\").every(4, x=>s(\"bd(5,8),sd(3,4,1)\")).late(3).webdirt(),\n n(\"<0 -2 1 4>\".scale('C2 minor')).s('sawtooth').cutoff(500).out(),\n note(\"\".voicings()).struct(\"~ x\").s('sawtooth').cutoff(2000).gain(.6).legato(.2).echo(4,1/8,.5).out()\n)","hash":"qk6JW1Bmi26s"},{"id":41,"created_at":"2022-07-17T15:41:28.991325+00:00","code":"//\"0 2 4\".add(\"<0 4 1 5 2 6 3>\").scale('C major')\ncat(\"0 2 4\".add(\"<0 4 1 5 2 6 3>\"),\"2 4 7\".add(\"<0 4 1 5 2 6 3>\"),\"4 7 9\".add(\"<0 4 1 5 2 6 3>\"),\"7 9 11\".add(\"<0 4 1 5 2 6 3>\"),\"9 11 14\".add(\"<0 4 1 5 2 6 3>\"),\"11 14 16\".add(\"<0 4 1 5 2 6 3>\"),\"14 16 18\".add(\"<0 4 1 5 2 6 3>\"),\"16 18 21\".add(\"<0 4 1 5 2 6 3>\")).scale('C major').tone((await piano()).toDestination())","hash":"c59geCmbANy8"},{"id":42,"created_at":"2022-07-17T15:54:41.151455+00:00","code":"//\"0 2 4\".add(\"<0 4 1 5 2 6 3>\").scale('C major')\ncat(\"0 2 4\".add(\"<0 4 1 5 2 6 3>\"),\"2 4 7\".add(\"<0 4 1 5 2 6 3>\"),\"4 7 9\".add(\"<0 4 1 5 2 6 3>\"),\"7 9 11\".add(\"<0 4 1 5 2 6 3>\"),\"9 11 14\".add(\"<0 4 1 5 2 6 3>\"),\"11 14 16\".add(\"<0 4 1 5 2 6 3>\"),\"14 16 18\".add(\"<0 4 1 5 2 6 3>\"),\"16 18 21\".add(\"<0 4 1 5 2 6 3>\")).scale('C major').echo(4,.25,.5).tone((await piano()).toDestination())","hash":"WD53HbM4B3Xf"},{"id":43,"created_at":"2022-07-17T15:54:41.514354+00:00","code":"//\"0 2 4\".add(\"<0 4 1 5 2 6 3>\").scale('C major')\ncat(\"0 2 4\".add(\"<0 4 1 5 2 6 3>\"),\"2 4 7\".add(\"<0 4 1 5 2 6 3>\"),\"4 7 9\".add(\"<0 4 1 5 2 6 3>\"),\"7 9 11\".add(\"<0 4 1 5 2 6 3>\"),\"9 11 14\".add(\"<0 4 1 5 2 6 3>\"),\"11 14 16\".add(\"<0 4 1 5 2 6 3>\"),\"14 16 18\".add(\"<0 4 1 5 2 6 3>\"),\"16 18 21\".add(\"<0 4 1 5 2 6 3>\")).scale('C major').echo(4,.25,.5).tone((await piano()).toDestination())","hash":"g7c_nZZ1fVJS"},{"id":44,"created_at":"2022-07-17T16:12:36.539795+00:00","code":"//\"0 2 4\".add(\"<0 4 1 5 2 6 3>\").scale('C major')\ncat(\"0 2 4\".add(\"<0 4 1 5 2 6 3>\"),\"2 4 7\".add(\"<0 4 1 5 2 6 3>\"),\"4 7 9\".add(\"<0 4 1 5 2 6 3>\"),\"7 9 11\".add(\"<0 4 1 5 2 6 3>\"),\"9 11 14\".add(\"<0 4 1 5 2 6 3>\"),\"11 14 16\".add(\"<0 4 1 5 2 6 3>\"),\"14 16 18\".add(\"<0 4 1 5 2 6 3>\"),\"16 18 21\".add(\"<0 4 1 5 2 6 3>\"),\"~ ~ ~ ~ [11, 14, 16, 18, 21]*2\".add(\"<0 4 1 5 2 6 3>\")).scale('C major').echo(6,.25,.5).tone((await piano()).toDestination())","hash":"Don6HOPD2Wwc"},{"id":45,"created_at":"2022-07-17T18:32:04.233455+00:00","code":"//\"0 2 4\".add(\"<0 4 1 5 2 6 3>\").scale('C major')\ncat(\"0 2 4\".add(\"<0 4 1 5 2 6 3>\"),\"2 4 7\".add(\"<0 4 1 5 2 6 3>\"),\"4 7 9\".add(\"<0 4 1 5 2 6 3>\"),\"7 9 11\".add(\"<0 4 1 5 2 6 3>\"),\"9 11 14\".add(\"<0 4 1 5 2 6 3>\"),\"11 14 16\".add(\"<0 4 1 5 2 6 3>\"),\"14 16 18\".add(\"<0 4 1 5 2 6 3>\"),\"16 18 21\".add(\"<0 4 1 5 2 6 3>\"),\"~ ~ ~ [11, 14, 16, 18, 21]*2\".add(\"<0 4 1 5 2 6 3>\")).scale('C major').echo(6,.25,.5).tone((await piano()).toDestination())","hash":"T8n8F1Fvew9g"},{"id":51,"created_at":"2022-07-18T23:03:11.012462+00:00","code":"backgroundImage(\n 'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg',\n {style:'background-size:cover'})\n \n\"0,2,[7 6]\"\n .add(\"<0 1 2 3 4 5 7 8>\")\n .scale('C bebop major')\n .transpose(\"<0 1 2 1>/8\")\n .slow(2)\n .note().piano().out()\n","hash":"qbyqK2VN_6if"},{"id":52,"created_at":"2022-07-19T18:46:28.163734+00:00","code":"\"<0 2 [4 6](3,4,1) 3*2>\"\n.scale('D minor')\n.color('salmon')\n.off(1/4, x=>x.scaleTranspose(2).color('green'))\n.off(1/2, x=>x.scaleTranspose(6).color('steelblue'))\n.legato(.5)\n.echo(4, 1/8, .5)\n.note().piano().out()\n.pianoroll()","hash":"0H0ym5HypMyj"},{"id":53,"created_at":"2022-07-20T05:38:59.322905+00:00","code":"stack(\n \"c2 g2 a2 [e2@2 eb2] d2 a2 g2 [d2 ~ db2]\",\n \"[C^7 A7] [Dm7 G7]\".struct(\"[x@2 x] [~@2 x] [~ x@2]@2 [x ~@2] ~ [~@2 x@4]@2\")\n .voicings(['G3','A4'])\n).slow(4)","hash":"YAB9YoUpJwaj"},{"id":55,"created_at":"2022-07-20T20:28:25.749705+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"ODAzfGV0ZcbI"},{"id":56,"created_at":"2022-07-20T20:52:30.246557+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n","hash":"86BPLjJUsUlY"},{"id":57,"created_at":"2022-07-22T13:48:34.873528+00:00","code":"stack(\n \"c1*2\".tone(new MembraneSynth().toDestination()),\n \"~ x\".tone(new NoiseSynth().toDestination()),\n \"[~ c4]*2\".tone(new MetalSynth().set({envelope:{decay:0.06,sustain:0}}).chain(new Gain(0.5),getDestination()))\n)","hash":"a6p9WTalyHea"},{"id":58,"created_at":"2022-07-22T13:48:35.171894+00:00","code":"stack(\n \"c1*2\".tone(new MembraneSynth().toDestination()),\n \"~ x\".tone(new NoiseSynth().toDestination()),\n \"[~ c4]*2\".tone(new MetalSynth().set({envelope:{decay:0.06,sustain:0}}).chain(new Gain(0.5),getDestination()))\n)","hash":"ciNbEjRKpC5T"},{"id":59,"created_at":"2022-07-23T06:56:24.365582+00:00","code":"stack(\n \" \"\n .every(2, fast(2))\n .voicings(),\n \" \"\n).transpose(\"<0 2 3 4>\")","hash":"pLhCIXogckDD"},{"id":60,"created_at":"2022-07-23T20:56:40.69314+00:00","code":"stack(\n \" \"\n .every(2, fast(2))\n .voicings(),\n \" \"\n).transpose(\"<0 2 3 4>\")","hash":"hJFGyCmtF36W"},{"id":61,"created_at":"2022-07-24T11:03:31.223113+00:00","code":"n(\n \"a4 [a3 c3] a3 c3\"\n .sub(\"<7 12 5 12>\".slow(2))\n .off(1/4,x=>x.add(7))\n .off(1/8,x=>x.add(12))\n)\n .slow(2)\n .legato(sine.range(0.3, 2).slow(28))\n .s(\"sawtooth square\".fast(2))\n .cutoff(cosine.range(500,4000).slow(16))\n .out()","hash":"4HtBUNn4xAAA"},{"id":62,"created_at":"2022-07-30T14:20:18.860817+00:00","code":"const calcFibs = (n) => {\n const result = [1, 1];\n let fibsCount = result.length;\n for (let i = 0; i < n - 2; i++) {\n result.push(result[fibsCount-2] + result[fibsCount-1]);\n fibsCount += 1;\n }\n return result;\n}\n\nconst fibs = calcFibs(80)\n .map(x => x % 24)\n .map(x => x % 2 ? pure(x) : seq(pure(x), pure(x+2)));\n\n\n// alert()\n\npolyrhythm(seq(fibs).scale('E1 pentatonic').slow(16))\n .tone(synth(adsr(0,.1,0,0)).chain(out()))\n // .midi(\"loopMIDI Port\")","hash":"o6VENTMBn_Fo"},{"id":63,"created_at":"2022-07-31T08:44:18.354161+00:00","code":"const chords = \"\";\nconst scales = cat('C minor','F dorian','G dorian','F# mixolydian')\nstack(\n chords.voicings().struct(\"x(3,8,-1)\").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)),\n chords.rootNotes(2).struct(\"x(4,8)\"),\n chords.rootNotes(4)\n .scale(scales)\n .struct(\"x(3,8,-2)\".fast(2))\n .scaleTranspose(\"0 4 0 6\".early(\".125 .5\")).layer(scaleTranspose(\"0,<2 [4,6] [5,7]>/3\"))\n).slow(2).transpose(-1) \n .legato(cosine.struct(\"x*8\").add(4/5).mul(4/5).fast(8))\n .velocity(sine.struct(\"x*8\").add(3/5).mul(2/5).fast(8))\n .note().piano().out().fast(3/4)","hash":"2MtjoYELsyy6"},{"id":54,"created_at":"2022-07-20T05:39:09.335398+00:00","code":"stack(\n \"c2 g2 a2 [e2@2 eb2] d2 a2 g2 [d2 ~ db2]\",\n \"[C^7 A7] [Dm7 G7]\".struct(\"[x@2 x] [~@2 x] [~ x@2]@2 [x ~@2] ~ [~@2 x@4]@2\")\n .voicings(['G3','A4'])\n).slow(4).note()","hash":"-fdVyijf3Fk0"},{"id":64,"created_at":"2022-07-31T19:09:47.101758+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"vJ2KTtZo20cu"},{"id":65,"created_at":"2022-07-31T19:09:47.681287+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"DhWsebFhaaI9"},{"id":66,"created_at":"2022-07-31T19:37:06.911082+00:00","code":"//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\n//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\nvar chooseInWith = (pat, xs) => {\n xs = xs.map(reify);\n if (xs.length == 0) {\n return silence;\n }\n return pat\n .range(0, xs.length)\n .fmap((i) => xs[Math.floor(i)])\n .innerJoin();\n};\n\nvar chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs);\n\n\nchooseCycles(\n \"c4\",\n chooseCycles(\"c3 e3\", \"e3\", \"g3\")\n).fast(4)\n\n","hash":"TpZLuyJCkYlW"},{"id":67,"created_at":"2022-07-31T19:45:25.835911+00:00","code":"n(\n \"a4 [a3 c3] a3 c3\"\n .sub(\"<7 12>/2\")\n .off(1/8, add(\"12\"))\n .off(1/4, add(\"7\"))\n)\n .legato(.5)\n .slow(2)\n .s(\"sawtooth square\")\n .cutoff(\"<2000 1000 500>\")\n .out()\n","hash":"pQKoHsxS2h84"},{"id":68,"created_at":"2022-07-31T20:41:52.579757+00:00","code":"//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\n//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\nvar chooseInWith = (pat, xs) => {\n xs = xs.map(reify);\n if (xs.length == 0) {\n return silence;\n }\n return pat\n .range(0, xs.length)\n .fmap((i) => xs[Math.floor(i)])\n .innerJoin();\n};\n\nvar chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs);\n\nvar randState = 0;\n\nvar chooseIndependentCycles = (...xs) => chooseInWith(rand.late((randState++)*0.0001).segment(1), xs);\n\nchooseIndependentCycles(\n \"c4\",\n chooseIndependentCycles(\"c3 e3\", \"e3\", \"g3\")\n).fast(4)\n\n","hash":"gL4HMl9q43o6"},{"id":69,"created_at":"2022-07-31T20:44:08.264338+00:00","code":"//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\n//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\nvar chooseInWith = (pat, xs) => {\n xs = xs.map(reify);\n if (xs.length == 0) {\n return silence;\n }\n return pat\n .range(0, xs.length)\n .fmap((i) => xs[Math.floor(i)])\n .innerJoin();\n};\n\nvar chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs);\n\nvar randState = 0;\n\nvar chooseIndependentCycles = (...xs) => chooseInWith(rand.late((randState++)*0.0001).segment(1), xs);\n\nchooseIndependentCycles(\n \"c4\",\n chooseIndependentCycles(\"c3 e3\", \"e3\", \"g3\")\n).fast(4)\n\n","hash":"QoKBBsdDBQro"},{"id":70,"created_at":"2022-07-31T21:23:41.301044+00:00","code":"//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\n//slowcat(\"c3 e3\", \"e3\", \"g3\").late(rand.range(0,2).round()).fast(4)\n\nvar chooseInWith = (pat, xs) => {\n xs = xs.map(reify);\n if (xs.length == 0) {\n return silence;\n }\n return pat\n .range(0, xs.length)\n .fmap((i) => xs[Math.floor(i)])\n .innerJoin();\n};\n\nvar chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs);\n\nvar randState = 0;\n\nvar chooseIndependentCycles = (...xs) => chooseInWith(rand.late((randState++)*0.0001).segment(1), xs);\n\nchooseIndependentCycles(\n chooseIndependentCycles(\"c3 e3\", \"e3\", \"g3\"),\n \"c4\"\n).fast(4)\n\n","hash":"TGp3R_6-qmvY"},{"id":71,"created_at":"2022-07-31T21:45:18.914427+00:00","code":"\"c9 c9 c9, c8 c8\"\n.scale('D minor')\n.note().piano().out()\n.pianoroll()","hash":"Oais65XPBeAV"},{"id":72,"created_at":"2022-07-31T21:46:18.336294+00:00","code":"\"c9 c9 c9, c8 c8\"\n.scale('D minor')\n.note().piano().out()\n.pianoroll()","hash":"ldZPCC8_189H"},{"id":73,"created_at":"2022-08-01T06:36:33.220598+00:00","code":"// this is a test of the distribution of random numbers\n\n// this function just counts how often each number occurs in the array\nconst count = (numbers) => numbers.reduce((acc, n) => {\n if(!acc[n]) {\n acc[n] = 1;\n } else {\n acc[n]++\n };\n return acc;\n},{})\n\nlet numbers;\n\n// segment one random cycle into 10000 parts\nnumbers = rand.range(0,9).round().segment(10000).queryArc(0,1).map(h=>h.value)\nconsole.log('segment 10000', count(numbers))\n/*\n0: 549\n1: 1110\n2: 1126\n3: 1106\n4: 1109\n5: 1112\n6: 1118\n7: 1113\n8: 1106\n9: 551\n*/\n// query a random signal for 10000 cycles\nnumbers = rand.range(0,9).round().segment(1).queryArc(0,10000).map(h=>h.value)\nconsole.log('query 10000', count(numbers))\n/*\n 0: 534\n1: 1300\n2: 898\n3: 1236\n4: 1034\n5: 1031\n6: 1232\n7: 900\n8: 1299\n9: 536\n*/\n// conclusion: in both cases, the distribution is not quite equal...\n\nsilence","hash":"D--IwyHBNn0a"},{"id":74,"created_at":"2022-08-01T12:54:58.375978+00:00","code":"const xorwise = (x) => {\n const a = (x << 13) ^ x;\n const b = (a >> 17) ^ a;\n return (b << 5) ^ b;\n};\nconst _frac = (x) => x - Math.trunc(x);\nconst timeToIntSeed = (x) => xorwise(Math.trunc(_frac(x / 300) * 536870912));\nconst intSeedToRand = (x) => (x % 536870912) / 536870912;\nconst timeToRand = (x) => Math.abs(intSeedToRand(timeToIntSeed(x)));\n\nconst ctx = getDrawContext();\nctx.fillStyle='darkseagreen'\nctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)\nconst bars = 400;\nconst barMaxHeight = 200;\n\nconst barWidth = ctx.canvas.width / bars;\nfor(let i = 0;i\")\n.transpose(\"0 1\".slow(16))","hash":"faC6ykfIhu1j"},{"id":82,"created_at":"2022-08-01T23:14:59.962151+00:00","code":"const correlation = (xs, ys) => {\n let n = Math.min(xs.length, ys.length)\n let [s_x, s_y, s_xy, s_x2, s_y2] = [0,0,0,0,0] \n for (let i = 0; i < n; i++) {\n s_x += xs[i]; s_x2 += xs[i] * xs[i];\n s_y += ys[i]; s_xy += xs[i] * ys[i];\n s_y2 += ys[i] * ys[i]\n }\n return (s_xy - s_x * s_y / n) / (Math.sqrt(s_x2 - s_x * s_x / n) * Math.sqrt(s_y2 - s_y * s_y / n))\n}\n\nconst cycleCount = 10000\n\nconst nums0 = rand.late(0).segment(1).queryArc(0, cycleCount).map(x => x.value)\nlet nums1;\n\n[0.00001, 0.00005, 0.0001, 0.0002, 0.0003, 0.001, 1, 10, 2.71828, 3.14159].forEach((offset) => {\n nums1 = rand.late(offset).segment(1).queryArc(0, cycleCount).map(x => x.value)\n console.log('At offset ' + offset + ' correlation is ' + correlation(nums0, nums1));\n})\n\nsilence;","hash":"l7FO1TzD3yBA"},{"id":83,"created_at":"2022-08-02T21:59:58.510655+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1).color(\"\")\n.pianoroll({vertical:1,smear:1,fold:1})\n\n// strudel hide-heade\n// strudel hide-console","hash":"3hSnOnJz8aPZ"},{"id":84,"created_at":"2022-08-02T22:10:22.521354+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] }, \n 'github:cleary/samples-flbass/main/')\nsamples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.layer(\nx=>x,\nx=>x.add(7).color('steelblue')\n.off(1/8,x=>x.add(\"2,4\").off(1/8,x=>x.add(5).echo(4,.125,.5)))\n.slow(2),\n).scale('A1 minor'))\n.s(\"flbass\").n(0)\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.stack(s(\"bd:1*2,~ sd:0,[~ hh:0]*2\"))\n.out()\n.color(\"\")\n.pianoroll({vertical:1,fold:0,smear:0})\n// strudel hide-console\n// strudel hide-heade","hash":"J3ClL0wQCBr_"},{"id":85,"created_at":"2022-08-03T22:41:57.671182+00:00","code":"\"0 1 2\".addIn(\"1 2\").scale('C minor').note().piano().out() // use inner (= left) structure\n\"0 1 2\".addOut(\"1 2\").scale('C minor').note().piano().out() // use outer (= right) structure\n\"0 1 2\".addMix(\"1 2\").scale('C minor').note().piano().out() // mix both structures\n","hash":"YC1KlrX1fOyP"},{"id":86,"created_at":"2022-08-06T19:41:32.193422+00:00","code":"\"[[e4*2](5,8),[c3(5,8)]*2]\".slow(4)","hash":"YD2MRLffOCRV"},{"id":87,"created_at":"2022-08-06T23:03:13.024098+00:00","code":"const chords = \"\"\nconst roots = chords.rootNotes(2)\n\nstack(\n chords.voicings(['F4', 'A5']).struct(\n ` x@2 ~ x ~ ~ ~ x |\n x? ~ ~ x@3 ~ x |\n x? ~ ~ x ~ x@3`),\n roots.struct(\"x [~ x?0.2] x [~ x?] | x!4 | x@2 ~ ~ ~ x x x\").transpose(\"0 7\")\n).slow(2).pianoroll().note().piano().out();","hash":"XxvYG4XK-I5G"},{"id":88,"created_at":"2022-08-08T02:14:13.538432+00:00","code":"stack(\n \"c3@3 [eb3, g3, [c4 d4]/2]\",\n \"c2 g2\",\n \"[eb4@5 [f4 eb4 d4]@3] [eb4 c4]/2\".slow(8)\n)","hash":"FHXCltSQwouU"},{"id":89,"created_at":"2022-08-08T06:58:26.414302+00:00","code":"Pattern.prototype.minify = function() {\n return this.fmap(mini).innerJoin();\n}\n\nstack('c3 e3 g3','c2 g2').minify()\n","hash":"Hg6JP2F6ufl1"},{"id":90,"created_at":"2022-08-08T07:02:04.72455+00:00","code":"Pattern.prototype.minify = function() {\n return this.fmap(mini).innerJoin();\n}\n\nstack('c3 e3 g3','c2 g2').minify()\n\n// strudel disable-highlighting","hash":"lNxLnMcpieR3"},{"id":91,"created_at":"2022-08-08T22:59:00.890037+00:00","code":"\"c3\".struct(cat(1,\"1\".early(0.2),\"1\".early(0.3),\"1\".early(0.4),\"1\".early(0.5))).fast(4)","hash":"78PHBhVZovgo"},{"id":92,"created_at":"2022-08-11T05:23:06.85935+00:00","code":"\nstack(\n // melody\n `<\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~]\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~] \n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]]\n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [eb6 d6] [~ c6] ~!2\n >`\n .legato(.95),\n // sub melody\n `<\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]]\n [~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]]\n >`,\n // bass\n `<\n c3!7 a3 f3!2\n e3!2 ~!4\n c3!7 a3 f3!2\n e3!2 ~!4\n f3!2 e3!2 d3!2 ~!2\n f3!2 e3!2 ab3!2 ~!2\n >`\n .legato(.5)\n).fast(2) // .note().piano().out()","hash":"rXBp8MOz1iNw"},{"id":93,"created_at":"2022-08-14T10:34:57.110119+00:00","code":"//\"0 1 2 3 4 5 6 7 8 9 10 11\".late(Math.PI).segment(12).scale('C major').pianoroll()\n\"0 1 2 3 4 5 6 7 8 9 10 11\".late(Math.PI).scale('C major').pianoroll()\n","hash":"bbPVlOzXxAxn"},{"id":94,"created_at":"2022-08-14T10:36:17.133808+00:00","code":"sine.range(0, 12).segment(12).late(Math.PI).scale('C major').pianoroll()","hash":"dZSKPnJiPMAz"},{"id":95,"created_at":"2022-08-14T13:07:25.292217+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] }, \n 'github:cleary/samples-flbass/main/')\nsamples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.layer(\nx=>x,\nx=>x.add(7).color('steelblue')\n.off(1/8,x=>x.add(\"2,4\").off(1/8,x=>x.add(5).echo(4,.125,.5)))\n.slow(2),\n).scale('A1 minor'))\n.s(\"flbass\").n(0)\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.stack(s(\"bd:1*2,~ sd:0,[~ hh:0]*2\"))\n.out()\n.pianoroll({vertical:1})","hash":"l-zyGmnM6g_q"},{"id":96,"created_at":"2022-08-14T13:51:32.968277+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"vEpJhDLHycD8"},{"id":249,"created_at":"2022-10-08T14:26:38.096155+00:00","code":"stack(\n seq(\n \"~\",\n \"~\",\n \"~\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [F5@2 C6] A5 G5\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [F5@2 C6] A5 G5\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\",\n \"A5 [F5@2 C5] A5 F5\",\n \"Ab5 [F5@2 Ab5] G5@2\",\n \"A5 [F5@2 C5] A5 F5\",\n \"Ab5 [F5@2 C5] C6@2\",\n \"A5 [F5@2 C5] [D5@2 F5] F5\",\n \"[C5@2 F5] [Bb5 A5 G5] F5@2\"\n ),\n seq(\n \"[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]\",\n \"[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\",\n \"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]\",\n \"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]\",\n \"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]\",\n \"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]\",\n \"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]\",\n \"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]\"\n ),\n seq(\n \"[G3 G3 C3 E3]\",\n \"[F2 D2 G2 C2]\",\n \"[F2 D2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[A2 Ab2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[A2 Ab2 G2 C2]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\",\n \"[Bb2 Bb2 A2 A2]\",\n \"[Ab2 Ab2 G2 [C2 D2 E2]]\",\n \"[Bb2 Bb2 A2 A2]\",\n \"[Ab2 Ab2 G2 [C2 D2 E2]]\",\n \"[F2 A2 Bb2 B2]\",\n \"[G2 C2 F2 F2]\"\n )\n).slow(51);\n","hash":"KEJD5r4Q7zZo"},{"id":97,"created_at":"2022-08-14T16:12:53.958113+00:00","code":"const sf = await loadSoundfont('https://felixroos.github.io/sfumato/soundfonts/Donkey%20Kong%20Country%202014.sf2')\nstack(\n // melody\n `<\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~]\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~] \n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]]\n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [eb6 d6] [~ c6] ~!2\n >`\n .legato(.95),\n // sub melody\n `<\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]]\n [~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]]\n >`,\n // bass\n `<\n c3!7 a3 f3!2\n e3!2 ~!4\n c3!7 a3 f3!2\n e3!2 ~!4\n f3!2 e3!2 d3!2 ~!2\n f3!2 e3!2 ab3!2 ~!2\n >`\n .legato(.5)\n).fast(2)\n .transpose(-12)\n .note()\n .soundfont(sf,17)","hash":"DHUbrEloJxMd"},{"id":98,"created_at":"2022-08-15T09:46:49.43021+00:00","code":"const lfo = cosine.slow(15);\nconst lfo2 = sine.slow(16);\nconst filter1 = x=>x.cutoff(lfo2.range(300,3000));\nconst filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)\nconst scales = cat('D3 major', 'G3 major').slow(8)\n\nconst drums = await players({\n bd: '344/344757_1676145-lq.mp3',\n sn: '387/387186_7255534-lq.mp3',\n hh: '561/561241_12517458-lq.mp3',\n hh2:'44/44944_236326-lq.mp3',\n hh3: '44/44944_236326-lq.mp3',\n}, 'https://freesound.org/data/previews/')\n\nstack(\n \"-7 0 -7 7\".struct(\"x(5,8,2)\").fast(2).sub(7)\n .scale(scales)\n .n()\n .s(\"sawtooth,square\")\n .gain(.3).attack(0.01).decay(0.1).sustain(.5)\n .apply(filter1),\n \"~@3 [<2 3>,<4 5>]\"\n .echo(4,1/16,.7)\n .scale(scales)\n .n()\n .s('square').gain(.7)\n .attack(0.01).decay(0.1).sustain(0)\n .apply(filter1),\n \"6 4 2\".add(14)\n .superimpose(sub(\"5\"))\n .fast(1).euclidLegato(3,8)\n .mask(\"<1 0@7>\")\n .fast(2)\n .echo(32, 1/8, .8)\n .scale(scales)\n .n()\n .s(\"sawtooth\")\n .gain(sine.range(.1,.4).slow(8))\n .attack(.001).decay(.2).sustain(0)\n .apply(filter2)\n).out().stack(\n stack(\n \"bd <~@7 [~ bd]>\".fast(2),\n \"~ sn\",\n \"[~ hh3]*2\"\n ).tone(drums.chain(vol(.18),out())).fast(2)\n).slow(2)\n \n//.pianoroll({minMidi:20, maxMidi:160})\n// strudel disable-highlighting","hash":"-YW3kIKIGR8j"},{"id":99,"created_at":"2022-08-16T07:15:57.59133+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"iw5ossp4Sti1"},{"id":100,"created_at":"2022-08-16T19:31:44.909886+00:00","code":"const { default: confetti } = await import('https://cdn.skypack.dev/canvas-confetti');\n\nPattern.prototype.confetti = function() {\n return this.onTrigger((t,h)=>confetti(h.value))\n}\n\ncreateParams('particleCount','angle','spread','startVelocity','decay','gravity','drift','ticks')\n// see https://www.npmjs.com/package/canvas-confetti\n\n\"\"\n .gravity(\"<.5 1 2>\")\n .ticks(\"<100 200>\")\n .startVelocity(sine.range(1,50).slow(6))\n .drift(sine.range(-10,10).slow(7))\n .angle(sine.range(0,360).slow(8))\n .confetti()","hash":"7DsklCccTr-k"},{"id":101,"created_at":"2022-08-17T22:21:05.314956+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"ISMZvMGByNst"},{"id":102,"created_at":"2022-08-19T23:22:39.109269+00:00","code":"samples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nstack(\n // bass\n \"0*2 <2(3,8) [4 3](5,8,1)>\".scale('G1 dorian').note().s('sawtooth').cutoff(1500).slow(2)\n .mask(\"x | x | x | ~\".slow(8))\n , // chord stabs\n \"~ [0,2,<4 <5 [5 6]>>]\".scale('G3 dorian').note().legato(.2).s('sawtooth').cutoff(sine.range(500,2000).slow(9)).echo(4,1/8,.5)\n //.mask(\"x | x | x | ~\".slow(8))\n , // chord bell\n \"<~ [7,~ 6@3,~@2 5@2, ~@3 4]>/4\".scale('G4 dorian').note().s('sawtooth').cutoff(1000)\n .mask(\"x | ~\".slow(16)),\n // pulsy pad\n \"4,7\".scale('G4 dorian').note().fast(2).attack(.5).s('square').cutoff(perlin.range(200,2000).slow(5)).velocity(.3)\n .mask(\"x | ~\".slow(16))\n , // drums\n \"bd*2\".s().mask(\"x | x | ~\".slow(8)),\n \"~ sd\".s().mask(\"~ | ~ | x\".slow(16)), \n \"~ [hh | hh*2]\".fast(2).s()\n .mask(\"x | x | ~\".slow(16))\n , // gedüdel\n \"~ [4 ~ 4 7] [~@2.2 7 ~] ~\"\n .slow(2)\n .scale('G3 dorian').note().s('sawtooth')\n .cutoff(sine.range(400,2000).slow(7))\n .jux(rev)\n .mask(\"x | ~\".slow(16)),\n).out()\n\n// strudel hide-header\n// strudel hide-console\n// strudel disable-highlightin","hash":"PDjOPOnV3JR6"},{"id":103,"created_at":"2022-08-20T17:19:29.930768+00:00","code":"const sf = await loadSoundfont('https://felixroos.github.io/sfumato/soundfonts/Donkey%20Kong%20Country%202014.sf2')\nstack(\n \"<[F3,C4]@2 [Eb3,Bb3] [Eb3,]>\".note().struct(\"~ \").soundfont(sf,10),\n \"\".off(1/4,x=>x.transpose(-12).degradeBy(.4)).note().soundfont(sf,5),\n \"<0 2 4 <[3 2] [5 4]>>/2\".off(1/4, add(7)).scale('D minor').note().soundfont(sf,11),\n \">,e4 f3 d4 f3*2\".note().soundfont(sf,37),\n)","hash":"u7qAdlwp3Qig"},{"id":125,"created_at":"2022-09-02T13:57:35.849957+00:00","code":"stack(\n n(\">\".voicings())\n .cutoff(sine.range(500,2000).slow(6)).s('square')\n .decay(.1).sustain(0)\n .resonance(16)\n .struct(\"~@2.2 x\".fast(2)).gain(.2)\n .echo(3,.2,.4)\n .pan(cosine.range(0,1).slow(5))\n .out()\n,\n n(\"c2 < >\")\n .decay(.1)\n .gain(.5)\n .sustain(0.8)\n .cutoff(sine.range(500,2000).slow(7))\n .squeeze(\"x(3,8)\")\n .s('sawtooth').out()\n,\n s(\"[bd ~ <~ bd>] sd,[hh@2.2 hh]*2\").out()\n,\n \"0 <2 3> <<4 5> 3> 6\"\n .off(1/16,add(2))\n .scale('C5 dorian')\n .n()\n .decay(.05)\n .sustain(0)\n .gain(.5)\n .degradeBy(.5)\n .echo(3,.2,.5)\n .pan(sine.range(0,1).slow(5))\n .out()\n)","hash":"m7Uyh34tQwqi"},{"id":104,"created_at":"2022-08-23T04:55:03.203344+00:00","code":"const lfo = cosine.slow(15);\nconst lfo2 = sine.slow(16);\nconst filter1 = x=>x.cutoff(lfo2.range(300,3000));\nconst filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)\nconst scales = cat('D3 major', 'G3 major').slow(8)\n\nconst drums = await players({\n bd: '344/344757_1676145-lq.mp3',\n sn: '387/387186_7255534-lq.mp3',\n hh: '561/561241_12517458-lq.mp3',\n hh2:'44/44944_236326-lq.mp3',\n hh3: '44/44944_236326-lq.mp3',\n}, 'https://freesound.org/data/previews/')\n\nstack(\n \"-7 0 -7 7\".struct(\"x(5,8,2)\").fast(2).sub(7)\n .scale(scales)\n .n()\n .s(\"sawtooth,square\")\n .gain(.3).attack(0.01).decay(0.1).sustain(.5)\n .apply(filter1),\n \"~@3 [<2 3>,<4 5>]\"\n .echo(4,1/16,.7)\n .scale(scales)\n .n()\n .s('square').gain(.7)\n .attack(0.01).decay(0.1).sustain(0)\n .apply(filter1),\n \"6 4 2\".add(14)\n .superimpose(sub(\"5\"))\n .fast(1).euclidLegato(3,8)\n .mask(\"<1 0@7>\")\n .fast(2)\n .echo(32, 1/8, .8)\n .scale(scales)\n .n()\n .s(\"sawtooth\")\n .gain(sine.range(.1,.4).slow(8))\n .attack(.001).decay(.2).sustain(0)\n .apply(filter2)\n).out().stack(\n stack(\n \"bd <~@7 [~ bd]>\".fast(2),\n \"~ sn\",\n \"[~ hh3]*2\"\n ).tone(drums.chain(vol(.18),out())).fast(2)\n).slow(2)\n \n//.pianoroll({minMidi:20, maxMidi:160})\n// strudel disable-highlighting","hash":"OhjceF8ZvYk8"},{"id":105,"created_at":"2022-08-23T04:55:26.834729+00:00","code":"const f = fast(\"<1 <2 [4 8]>>\");\nstack(\n \"c3,g3,c4\".struct(\"[x ~]*2\").apply(f).transpose(\"<0 <3 [5 [7 [9 [11 13]]]]>>\"),\n \"c2 [c2 ~]*2\".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())),\n \"c1*2\".tone(membrane().chain(vol(0.8),out()))\n).slow(1)","hash":"4yn-ch_d1hnA"},{"id":106,"created_at":"2022-08-23T04:55:28.075783+00:00","code":"const f = fast(\"<1 <2 [4 8]>>\");\nstack(\n \"c3,g3,c4\".struct(\"[x ~]*2\").apply(f).transpose(\"<0 <3 [5 [7 [9 [11 13]]]]>>\"),\n \"c2 [c2 ~]*2\".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())),\n \"c1*2\".tone(membrane().chain(vol(0.8),out()))\n).slow(1)","hash":"2M1kLwRf6d-Q"},{"id":107,"created_at":"2022-08-23T04:55:28.539669+00:00","code":"const f = fast(\"<1 <2 [4 8]>>\");\nstack(\n \"c3,g3,c4\".struct(\"[x ~]*2\").apply(f).transpose(\"<0 <3 [5 [7 [9 [11 13]]]]>>\"),\n \"c2 [c2 ~]*2\".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())),\n \"c1*2\".tone(membrane().chain(vol(0.8),out()))\n).slow(1)","hash":"XggCKeAH5uLK"},{"id":108,"created_at":"2022-08-23T04:57:37.905414+00:00","code":"stack(\n \"c3@3 [eb3, g3, [c4 d4]/2]\",\n \"c2 g2\",\n \"[eb4@5 [f4 eb4 d4]@3] [eb4 c4]/2\".slow(8)\n)","hash":"BH_o1f7vPxd3"},{"id":109,"created_at":"2022-08-23T05:02:51.506973+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"OdgRkOYpGrgF"},{"id":110,"created_at":"2022-08-23T19:44:54.266612+00:00","code":"const p = pure('a1').fast(10/3)\n\nconst before = getAudioContext().currentTime;\np.queryArc(0,1);\nconst after = getAudioContext().currentTime;\nconst took = (after-before)*1000;\nconsole.log(took.toFixed(2),'ms')\n\nsilence","hash":"Yizg74mNj_6L"},{"id":111,"created_at":"2022-08-24T19:21:49.421978+00:00","code":"const PIXI = await import('https://cdn.skypack.dev/pixi.js');\n\nconst app = new PIXI.Application();\n\n// The application will create a canvas element for you that you\n// can then insert into the DOM.\nconst canvas = app.view;\nwindow.pixiCanvas && window.pixiCanvas.remove()\nwindow.pixiCanvas = canvas;\ncanvas.width = window.innerWidth;\ncanvas.height = window.innerHeight;\ncanvas.style = 'pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;z-index:5';\ndocument.body.prepend(canvas);\n\n// load the texture we need\napp.loader.add('bunny', 'https://pixijs.io/examples/examples/assets/bunny.png').load((loader, resources) => {\n // This creates a texture from a 'bunny.png' image.\n const bunny = new PIXI.Sprite(resources.bunny.texture);\n\n // Setup the position of the bunny\n bunny.x = app.renderer.width / 2;\n bunny.y = app.renderer.height / 2;\n\n // Rotate around the center\n bunny.anchor.x = 0.5;\n bunny.anchor.y = 0.5;\n\n // Add the bunny to the scene we are building.\n app.stage.addChild(bunny);\n\n // Listen for frame updates\n app.ticker.add(() => {\n // each frame we spin the bunny around a bit\n bunny.rotation -= 0.1;\n });\n});\n\n\nsilence","hash":"JFekmMyzjDzs"},{"id":112,"created_at":"2022-08-24T19:30:35.25109+00:00","code":"const PIXI = await import('https://cdn.skypack.dev/pixi.js');\n\n\nconst app = new PIXI.Application({width:window.innerWidth,height:window.innerHeight});\nwindow.pixiCanvas && window.pixiCanvas.remove()\nwindow.pixiCanvas = app.view;\nwindow.pixiCanvas.style = 'pointer-events:none;width:100vw;height:100vh;position:fixed;top:0;left:0;z-index:5';\ndocument.body.prepend(window.pixiCanvas);\n\napp.loader.add('bunny', 'https://pixijs.io/examples/examples/assets/bunny.png').load((loader, resources) => {\n const bunny = new PIXI.Sprite(resources.bunny.texture);\n bunny.x = app.renderer.width / 2;\n bunny.y = app.renderer.height / 2;\n\n bunny.anchor.x = 0.5;\n bunny.anchor.y = 0.5;\n bunny.width *=2;\n bunny.height *=2;\n\n app.stage.addChild(bunny);\n app.ticker.add((t) => {\n bunny.rotation += 0.1;\n });\n});\n\n\nsilence","hash":"ZRX_KCC7pe2k"},{"id":113,"created_at":"2022-08-24T20:15:23.808855+00:00","code":"(\"0 5 7\").piano()\n","hash":"X7Vln6QqABL2"},{"id":114,"created_at":"2022-08-25T16:25:00.451629+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"ILwq_zKFMNN5"},{"id":115,"created_at":"2022-08-25T17:08:14.813609+00:00","code":"// Chorus from \"Veronica In Ecstasy\", by Tim Smith (of Cardiacs) \nconst maj = \"0,4,7\"\nconst min = \"0,3,7\"\nstack(\n // melody\nseq(\n \"[f#6]*3 [f#6 [~ ~ f#6]]\",\n \"[f#6]*3 [[f#6 e6 ~] e6]\",\n \"[e6 e6 [e6 f#6]] [[g6 ~ d6] d6]\", \n \"[d6 d6 [e6 f#6]] [g#6 f6 c#6]\",\n \"[g#5 [ ~ ~ g#5]] [[a5 b5] c#6 c#6]\", \n \"[f#6]*3 [f6 c#6 g#5]\",\n \"[g#5 [ ~ ~ g#5]] [[a#5 c6] d6 a#5]\", \n \"[g#5 a5 b5] [c#6 d6 e6]\",\n \"[d6 a#5 f5] [[g#5 ~] g#5]\", \n \"e3 ~ [~ ~ f#3] ~\",\n \"e3 ~ [~ ~ f#3] [~ ~ f#6]\").legato(0.9),\n // chords\nseq(\n maj.add(\"b4\"), \n maj.add(\"f#4 a4\"),\n maj.add(\"c4 g4\"),\n maj.add(\"d4 c#4\"),\n maj.add(\"e4 a4\"),\n maj.add(\"b4 c#4\"),\n seq(min.add(\"f4\"), maj.add(\"a#4\")),\n maj.add(\"e4 a4\"),\n seq(maj.add(\"a#4\"), min.add(\"f4\")),\n maj.add(\"~ e4 ~ f#4\"),\n maj.add(\"~ e4 ~ f#4\"))\n .struct(\"x ~\".fast(11*4))\n).slow(21)","hash":"CSzelQFTGerr"},{"id":117,"created_at":"2022-08-30T04:40:01.053866+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\n\nconst drums = stack(\n \"c1*2\".tone(kick).mask(\"/8\"),\n \"~ \".tone(snare).mask(\"/4\"),\n \"[~ c4]*2\".tone(hihat)\n);\n\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n .layer(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).apply(thru).tone(keys).mask(\"<~ x>/16\"),\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).apply(thru).tone(bass),\n \"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask(\"/8\".early(1/4))\n)\nstack(\n drums.fast(2), \n synths\n).slow(2)","hash":"waoDkqtNx0Xe"},{"id":118,"created_at":"2022-08-30T12:50:49.656431+00:00","code":"const chords = \"\";\nstack(\n chords.voicings().struct(\"x(3,8,-1)\").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)),\n chords.rootNotes(2).struct(\"x(4,8,-2)\"),\n chords.rootNotes(4)\n .scale(cat('C minor','F dorian','G dorian','F# mixolydian'))\n .struct(\"x(3,8,-2)\".fast(2))\n .scaleTranspose(\"0 4 0 6\".early(\".125 .5\")).layer(scaleTranspose(\"0,<2 [4,6] [5,7]>/4\"))\n).slow(2)\n .velocity(sine.struct(\"x*8\").add(3/5).mul(2/5).fast(8))\n .note().piano().out()","hash":"hHssvZuQ9eU-"},{"id":119,"created_at":"2022-09-01T06:27:44.063139+00:00","code":"const p = mini('c3 [e3 g3*2]');\nconst readableLocs = p.queryArc(0,1)\n .map(h=>`${h.value}: ${\n h.context.locations\n .map(l=>l.start.offset+'-'+l.end.offset)\n .join(' ')}`)\n\nconsole.log(readableLocs)\n\nsilence;","hash":"YjCJ3DhT9u4M"},{"id":120,"created_at":"2022-09-01T06:45:23.70043+00:00","code":"//await import('https://unpkg.com/zyklus@0.1.3/dist/zyklus.cjs.js');\nconst stringifyFunction = (func) => '(' + func + ')();';\nconst urlifyFunction = (func) => URL.createObjectURL(new Blob([stringifyFunction(func)], { type: 'text/javascript' }));\nconst createWorker = (func) => new Worker(urlifyFunction(func));\n\nAudioContext.prototype['createClock'] = function (\n callback, // called slightly before each cycle\n duration, // duration of each cycle\n interval = 0.1, // interval between callbacks\n overlap = 0.1, // overlap between callbacks\n) {\n let tick = 0; // counts callbacks\n let phase = 0; // next callback time\n let precision = 10 ** 4; // used to round phase\n let minLatency = 0.01;\n const setDuration = (setter) => (duration = setter(duration));\n overlap = overlap || interval / 2;\n const onTick = () => {\n const t = this.currentTime;\n const lookahead = t + interval + overlap; // the time window for this tick\n if (phase === 0) {\n phase = t + minLatency;\n }\n // callback as long as we're inside the lookahead\n while (phase < lookahead) {\n phase = Math.round(phase * precision) / precision;\n phase >= t && callback(phase, duration, tick);\n phase += duration; // increment phase by duration\n tick++;\n }\n };\n let withWorker = true;\n console.log('withWorker', withWorker)\n let intervalID,clock;\n const start = () => {\n console.log('start!');\n if(!withWorker) {\n onTick();\n intervalID = setInterval(onTick, interval * 1000);\n } else {\n clock = new ClockWorker(() => onTick(), interval);\n clock.start();\n }\n };\n const clear = () => withWorker ? clock.stop() : clearInterval(intervalID);\n const pause = () => clear();\n const stop = () => {\n tick = 0;\n phase = 0;\n clear();\n };\n // setCallback\n return { setDuration, start, stop, pause, duration };\n};\n\n\nlet cycle;\nconst tick = (ctx) => (t, duration, tick) => {\n const latency = ((t - ctx.currentTime) * 1000).toFixed(2);\n //console.log(tick, t.toFixed(2), duration, latency);\n t += 0.01;\n const o = ctx.createOscillator();\n const g = ctx.createGain();\n o.frequency.value = /*tick % 4 === 0 ? 440 :*/ 330;\n o.start(t);\n o.stop(t + duration / 2);\n const end = t + duration / 2;\n o.connect(g);\n const attack = 0.01;\n const release = 0.01;\n const max = 0.8;\n g.gain.setValueAtTime(0, t);\n g.gain.linearRampToValueAtTime(max, t + attack);\n g.gain.setValueAtTime(max, end - release);\n g.gain.linearRampToValueAtTime(0, end);\n g.connect(ctx.destination);\n};\n\nconst ctx = getAudioContext()\n\n// window.cycle && window.cycle.stop();\nwindow.cycle = ctx.createClock(tick(ctx), 0.1, 0.1,.5);\nwindow.cycle.start()\n\n/*let last;\nif(window.testInterval) {\n clearInterval(window.testInterval);\n}\nwindow.testInterval = setInterval(()=>{\n if(last) {\n const diff = ctx.currentTime - last;\n console.log(diff.toFixed(2))\n }\n last = ctx.currentTime;\n}, 100)*/\n\n\nsilence\n\n","hash":"4qVm002nu8hg"},{"id":121,"created_at":"2022-09-02T09:20:47.802149+00:00","code":"\nstack(\n // melody\n `<\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [e5 f5] [g5 a5]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ g6] [g6 ~]\n [e5 ~] [[d5@2 c5] [~@2 e5]] ~ [~ [c5@2 d5]] [e5 e5] [d5 c5] [a5 g5] [c6 [e5@2 d5]]\n [~ c5] [c5 d5] [e5 [c5@2 c5]] [~ c5] [f5 e5] [c5 d5] [~ [g6@2 ~] ~@2] [g5 ~] \n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [f5 ~] [[g5@2 f5] ~] [[e5 ~] [f5 ~]] [[f#5 ~] [g5 ~]]\n [~ a5] [b5 c6] [b5@2 ~@2 g5] ~\n [eb6 d6] [~ c6] ~!2\n >`\n .legato(.95),\n // sub melody\n `<\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ g4]!2 [~ ab4]!2 [~ a4]!2 [~ bb4]!2 \n [~ a4]!2 [~ g4]!2 [d4 e4] [f4 gb4] ~!2\n [~ c5]!4 [~ a4]!2 [[c4 ~] [d4 ~]] [[eb4 ~] [e4 ~]]\n [~ c5]!4 [~ eb5]!2 [g4*2 [f4 ~]] [[e4 ~] [d4 ~]]\n >`,\n // bass\n `<\n c3!7 a3 f3!2\n e3!2 ~!4\n c3!7 a3 f3!2\n e3!2 ~!4\n f3!2 e3!2 d3!2 ~!2\n f3!2 e3!2 ab3!2 ~!2\n >`\n .legato(.5)\n).fast(2) // .note().piano().out()","hash":"wrcmJLYiesgF"},{"id":122,"created_at":"2022-09-02T12:22:17.050895+00:00","code":"backgroundImage(\n 'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg',\n {style:'background-size:cover'})\n \n\"0,2,[7 6]\"\n .add(\"<0 1 2 3 4 5 7 8>\")\n .scale('C bebop major')\n .transpose(\"<0 1 2 1>/8\")\n .slow(2)\n .note().piano().out()\n","hash":"tiYDzBGIFjYV"},{"id":123,"created_at":"2022-09-02T12:26:01.83452+00:00","code":"// mixer\nconst mix = (key) => vol({\n chords: .2,\n lead: 0.8,\n bass: .4,\n snare: .95, \n kick: .9,\n hihat: .35,\n}[key]||0);\nconst delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out());\nconst delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\n// instruments\nconst instr = (instrument) => ({\n organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()),\n lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()),\n bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()),\n pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()),\n hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()),\n snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()),\n kick: membrane().chain(mix('kick'), out())\n}[instrument]);\n// harmony\nconst t = transpose(\"<0 0 1 0>/8\");\nconst sowhat = scaleTranspose(\"0,3,6,9,11\");\n// track\nstack(\n \"[<0 4 [3 [2 1]]>]/4\".struct(\"[x]*3\").mask(\"[~ x ~]\").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask(\"<~ ~ x x>/8\"),\n \"< <[d3 ~] [c3 f3] g3>>\".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask(\"/8\"),\n \"<[d2 [d2 ~]*3]!3 >\".apply(t).tone(instr('bass')),\n \"c1*6\".tone(instr('hihat')),\n \"~ c3\".tone(instr('snare')),\n \"<[c1@5 c1] >\".tone(instr('kick')),\n \"[2,4]/4\".scale('D dorian').apply(t).tone(instr('pad')).mask(\"/8\")\n).fast(6/8)\n// strudel disable-highlighting","hash":"Y1nz8H0a10CF"},{"id":124,"created_at":"2022-09-02T13:56:30.84887+00:00","code":"stack(\n n(\">\".voicings())\n .cutoff(sine.range(500,2000).slow(6)).s('square')\n .decay(.1).sustain(0)\n .resonance(16)\n .struct(\"~@2.2 x\".fast(2)).gain(.2)\n .echo(3,.2,.4)\n .pan(cosine.range(0,1).slow(5))\n .out()\n,\n n(\"c2 < >\")\n .decay(.1)\n .gain(.5)\n .sustain(0.8)\n .cutoff(sine.range(500,2000).slow(7))\n .squeeze(\"x(3,8)\")\n .s('sawtooth').out()\n,\n s(\"[bd ~ <~ bd>] sd,[hh@2.2 hh]*2\").webdirt()\n,\n \"0 <2 3> <<4 5> 3> 6\"\n .off(1/16,add(2))\n .scale('C5 dorian')\n .n()\n .decay(.05)\n .sustain(0)\n .gain(.5)\n .degradeBy(.5)\n .echo(3,.2,.5)\n .pan(sine.range(0,1).slow(5))\n .out()\n)","hash":"SZDwdxhme28o"},{"id":126,"created_at":"2022-09-03T19:59:51.511621+00:00","code":"stack(\n timeCat([3, c3], [1, stack(eb3, g3, seq(c4, d4).slow(2))]),\n seq(c2, g2),\n seq(\n timeCat([5, eb4], [3, seq(f4, eb4, d4)]), \n seq(eb4, c4).slow(2)\n ).slow(4)\n)","hash":"P9d8_AXWM7ef"},{"id":127,"created_at":"2022-09-03T23:29:42.442252+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"FM1koCTLh1IM"},{"id":128,"created_at":"2022-09-05T07:15:00.81955+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"1SAqiKiVI8r-"},{"id":129,"created_at":"2022-09-05T07:21:08.871892+00:00","code":"seq(e4, [b2, b3], c4)\n.every(4, fast(2))\n.every(3, slow(1.5))\n.fast(cat(1.25, 1, 1.5))\n.every(2, _ => seq(e4, r, e3, d4, r))","hash":"Pds79yD4qQKJ"},{"id":130,"created_at":"2022-09-05T08:32:31.061321+00:00","code":"samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})\nstack(\n stack(\n \"c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>\".legato(\".5 1\".fast(2)).velocity(.8),\n \"0 ~\".scale('c4 whole tone')\n .euclidLegato(3,8).slow(2).mask(\"x ~\")\n .stutWith(8, 1/16, (x,n)=>x.scaleTranspose(n).velocity(Math.pow(.7,n)))\n .scaleTranspose(\"<0 1 2 3 4 3 2 1>\")\n .fast(2)\n .velocity(.7)\n .legato(.5)\n .stut(3, .5, 1/8)\n ).transpose(-1).note().piano(),\n s(\"mad\").slow(2)\n).cpm(78).slow(4)\n .out()\n .pianoroll()\n","hash":"DYJx5C-3NrV7"},{"id":131,"created_at":"2022-09-05T20:04:20.824387+00:00","code":"stack(\n \"2,6\"\n .scale('F3 dorian')\n .transpose(sine2.struct(\"x*64\").slow(4).mul(2).round())\n .fast(2)\n .struct(\"x x*3\")\n .legato(\".9 .3\"),\n \"0@3 -3*3\".legato(\".95@3 .4\").scale('F2 dorian')\n)\n .transpose(\"<0 1 2 1>/2\".early(0.5))\n .transpose(5)\n .fast(2 / 3)\n .note().piano().out()","hash":"9_BPqHIO4rPv"},{"id":132,"created_at":"2022-09-05T20:58:11.281557+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"FwkQ0EG3Kkwm"},{"id":133,"created_at":"2022-09-05T22:01:06.950011+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] }, \n 'github:cleary/samples-flbass/main/')\nsamples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.layer(\nx=>x,\nx=>x.add(7).color('steelblue')\n.off(1/8,x=>x.add(\"2,4\").off(1/8,x=>x.add(5).echo(4,.125,.5)))\n.slow(2),\n).scale('A1 minor'))\n.s(\"flbass\").n(0)\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.stack(s(\"bd:1*2,~ sd:0,[~ hh:0]*2\"))\n.out()\n.pianoroll({vertical:1})","hash":"Cb_YrHpHKkJN"},{"id":134,"created_at":"2022-09-05T22:19:15.080793+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n casio: ['casio/high.wav', 'casio/low.wav']\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nsamples({\n lo: ['lo/001.wav', 'lo/002.wav', 'lo/003.wav', 'lo/004.wav', 'lo/005.wav', 'lo/006.wav', 'lo/007.wav', 'lo/008.wav'],\n hi: ['hi/001.wav', 'hi/002.wav', 'hi/003.wav', 'hi/004.wav', 'hi/005.wav', 'hi/006.wav', 'hi/007.wav', 'hi/008.wav']\n}, 'github:yaxu/drumming-circle/main/sounds/');\n\n\ns(\"hi ~ lo ~ hi ~ [hi ~] hi\").every(3,rev)\n .webdirt()","hash":"SkqbkK705Olu"},{"id":135,"created_at":"2022-09-05T23:01:03.033407+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n casio: ['casio/high.wav', 'casio/low.wav']\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nsamples({\n lo: ['lo/001.wav', 'lo/002.wav', 'lo/003.wav', 'lo/004.wav', 'lo/005.wav', 'lo/006.wav', 'lo/007.wav', 'lo/008.wav'],\n hi: ['hi/001.wav', 'hi/002.wav', 'hi/003.wav', 'hi/004.wav', 'hi/005.wav', 'hi/006.wav', 'hi/007.wav', 'hi/008.wav']\n}, 'github:yaxu/drumming-circle/main/sounds/');\n\n\ngain(\"1 0.5 1*2 0.2 1 0.25 1*1 0.2\")\n .s(\"\")\n .speed(\"1 2 1\")\n .slow(3)\n .out()\n\ngain(\"1 0.5 1*2 0.2 1 0.25 1*1 0.2\")\n .s(\"lo\")\n .speed(\"2\")\n .slow(3)\n .webdirt()\n","hash":"-hyad472v8by"},{"id":136,"created_at":"2022-09-05T23:06:36.703716+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n casio: ['casio/high.wav', 'casio/low.wav']\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nsamples({\n lo: ['lo/001.wav', 'lo/002.wav', 'lo/003.wav', 'lo/004.wav', 'lo/005.wav', 'lo/006.wav', 'lo/007.wav', 'lo/008.wav'],\n hi: ['hi/001.wav', 'hi/002.wav', 'hi/003.wav', 'hi/004.wav', 'hi/005.wav', 'hi/006.wav', 'hi/007.wav', 'hi/008.wav']\n}, 'github:yaxu/drumming-circle/main/sounds/');\n\n\ngain(\"1 0.5 1*2 0.2 1 0.25 1*1 0.2\")\n .s(\"lo\")\n .speed(\"2 \")\n .release(.2)\n .clip(1)\n .slow(3)\n .out()\n\n/*gain(\"1 0.5 1*2 0.2 1 0.25 1*1 0.2\")\n .s(\"lo\")\n .speed(\"2\")\n .slow(4)\n .webdirt()*/\n","hash":"BApYR1gphKJ7"},{"id":137,"created_at":"2022-09-05T23:16:35.299087+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n casio: ['casio/high.wav', 'casio/low.wav']\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nsamples({\n lo: ['lo/001.wav', 'lo/002.wav', 'lo/003.wav', 'lo/004.wav', 'lo/005.wav', 'lo/006.wav', 'lo/007.wav', 'lo/008.wav'],\n hi: ['hi/001.wav', 'hi/002.wav', 'hi/003.wav', 'hi/004.wav', 'hi/005.wav', 'hi/006.wav', 'hi/007.wav', 'hi/008.wav']\n}, 'github:yaxu/drumming-circle/main/sounds/');\n\n\ngain(\"1 0.5 1*2 0.2 1 0.2*3 1*1 0.2\")\n .s(\"lo\")\n .speed(\"1 1.2 1\")\n .off(\"<0.25 0.125>\", x => x.n(2))\n .chunk(4, x => x.hcutoff(1000).resonance(0.2).fast(2))\n .slow(3)\n .out()\n\n","hash":"wK1UQcYoYpoD"},{"id":138,"created_at":"2022-09-06T04:25:51.520248+00:00","code":"const delay = new FeedbackDelay(1/3, .8).chain(vol(.2), out());\nlet bell = await sampler({\n C6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3'\n})\nconst bass = await sampler({\n d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3'\n});\nbell = bell.chain(vol(0.6).connect(delay),out());\n\n\"0\".euclidLegato(3,8)\n .echo(3, 1/16, .5)\n .add(rand.range(0,12))\n .velocity(rand.range(.5,1))\n .legato(rand.range(.4,3))\n .scale(cat('D minor pentatonic')).tone(bell)\n .stack(\"\".euclidLegato(6,8,1).tone(bass.toDestination()))\n .slow(6)\n .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})","hash":"lB2HuXEXyTex"},{"id":139,"created_at":"2022-09-06T07:46:51.273258+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n casio: ['casio/high.wav', 'casio/low.wav']\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nsamples({\n lo: ['lo/002.wav', 'lo/001.wav', 'lo/003.wav', 'lo/004.wav', 'lo/005.wav', 'lo/006.wav', 'lo/007.wav', 'lo/008.wav'],\n hi: ['hi/002.wav', 'hi/001.wav', 'hi/003.wav', 'hi/004.wav', 'hi/005.wav', 'hi/006.wav', 'hi/007.wav', 'hi/008.wav']\n}, 'github:yaxu/drumming-circle/main/sounds/');\n\n\ngain(\"1 1 [1 0.75] 1(3,8)\")\n .s(\"lo hi lo hi\")\n .iter(4)\n .slow(4)\n .out()\n .cps(1.1)\n\n","hash":"WUxQVJIu27Nz"},{"id":140,"created_at":"2022-09-06T10:57:24.344366+00:00","code":"const scale = cat('C3 dorian','Bb2 major').slow(4);\nstack(\n \"2*4\".add(12).scale(scale)\n .off(1/8,x=>x.scaleTranspose(\"2\")).fast(2)\n .scaleTranspose(\"<0 1 2 1>\").hush(),\n \"<0 1 2 3>(3,8,2)\"\n .scale(scale)\n .off(1/4,x=>x.scaleTranspose(\"2,4\")),\n \"<0 4>(5,8)\".scale(scale).transpose(-12)\n)\n .velocity(\".6 .7\".fast(4))\n .legato(\"2\")\n .scale(scale)\n.scaleTranspose(\"<0>\".slow(4))\n.transpose(5)\n.note().piano().out()\n.velocity(.8)\n.slow(2)\n.pianoroll({maxMidi:100,minMidi:20})","hash":"ZQ-ce-Qj-nuP"},{"id":141,"created_at":"2022-09-06T20:14:04.846599+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"tBPkuxuje0iY"},{"id":142,"created_at":"2022-09-08T05:11:19.044425+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] }, \n 'github:cleary/samples-flbass/main/')\nsamples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.layer(\nx=>x,\nx=>x.add(7).color('steelblue')\n.off(1/8,x=>x.add(\"2,4\").off(1/8,x=>x.add(5).echo(4,.125,.5)))\n.slow(2),\n).scale('A1 minor'))\n.s(\"flbass\").n(0)\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.stack(s(\"bd:1*2,~ sd:0,[~ hh:0]*2\"))\n.out()\n.pianoroll({vertical:1})","hash":"ak6ZpErh0hl1"},{"id":143,"created_at":"2022-09-09T18:35:41.770146+00:00","code":"// Chorus from \"Veronica In Ecstasy\", by Tim Smith (of Cardiacs) \nconst maj = \"0,4,7\"\nconst min = \"0,3,7\"\nstack(\n // melody\nseq(\n \"[f#6]*3 [f#6 [~ ~ f#6]]\",\n \"[f#6]*3 [[f#6 e6 ~] e6]\",\n \"[e6 e6 [e6 f#6]] [[g6 ~ d6] d6]\", \n \"[d6 d6 [e6 f#6]] [g#6 f6 c#6]\",\n \"[g#5 [ ~ ~ g#5]] [[a5 b5] c#6 c#6]\", \n \"[f#6]*3 [f6 c#6 g#5]\",\n \"[g#5 [ ~ ~ g#5]] [[a#5 c6] d6 a#5]\", \n \"[g#5 a5 b5] [c#6 d6 e6]\",\n \"[d6 a#5 f5] [[g#5 ~] g#5]\", \n \"e3 ~ [~ ~ f#3] ~\",\n \"e3 ~ [~ ~ f#3] [~ ~ f#6]\").legato(0.9),\n // chords\nseq(\n maj.add(\"b4\"), \n maj.add(\"f#4 a4\"),\n maj.add(\"c4 g4\"),\n maj.add(\"d4 c#4\"),\n maj.add(\"e4 a4\"),\n maj.add(\"b4 c#4\"),\n seq(min.add(\"f4\"), maj.add(\"a#4\")),\n maj.add(\"e4 a4\"),\n seq(maj.add(\"a#4\"), min.add(\"f4\")),\n maj.add(\"~ e4 ~ f#4\"),\n maj.add(\"~ e4 ~ f#4\"))\n .struct(\"x ~\".fast(11*4))\n).slow(21)\n","hash":"U9J_c-Insgbc"},{"id":144,"created_at":"2022-09-09T20:19:44.139115+00:00","code":"// Chorus from \"Veronica In Ecstasy\", by Tim Smith (of Cardiacs) \nconst maj = \"0,4,7\"\nconst min = \"0,3,7\"\nstack(\n // melody\nseq(\n \"[f#6]*3 [f#6 [~ ~ f#6]]\",\n \"[f#6]*3 [[f#6 e6 ~] e6]\",\n \"[e6 e6 [e6 f#6]] [[g6 ~ d6] d6]\", \n \"[d6 d6 [e6 f#6]] [g#6 f6 c#6]\",\n \"[g#5 [ ~ ~ g#5]] [[a5 b5] c#6 c#6]\", \n \"[f#6]*3 [f6 c#6 g#5]\",\n \"[g#5 [ ~ ~ g#5]] [[a#5 c6] d6 a#5]\", \n \"[g#5 a5 b5] [c#6 d6 e6]\",\n \"[d6 a#5 f5] [[g#5 ~] g#5]\", \n \"e3 ~ [~ ~ f#3] ~\",\n \"e3 ~ [~ ~ f#3] [~ ~ f#6]\").legato(0.9),\n // chords\nseq(\n maj.add(\"b4\"), \n maj.add(\"f#4 a4\"),\n maj.add(\"c4 g4\"),\n maj.add(\"d4 c#4\"),\n maj.add(\"e4 a4\"),\n maj.add(\"b4 c#4\"),\n seq(min.add(\"f4\"), maj.add(\"a#4\")),\n maj.add(\"e4 a4\"),\n seq(maj.add(\"a#4\"), min.add(\"f4\")),\n maj.add(\"~ e4 ~ f#4\"),\n maj.add(\"~ e4 ~ f#4\"))\n .struct(\"x ~\".fast(11*4))\n).slow(21).note().piano().out()\n","hash":"y2FS3Xvqv68d"},{"id":153,"created_at":"2022-09-11T10:53:19.74127+00:00","code":"const chords = \"\"\nconst roots = chords.rootNotes(2)\n\nstack(\n chords.voicings(['F4', 'A5']).struct(\n ` x@2 ~ x ~ ~ ~ x |\n x? ~ ~ x@3 ~ x |\n x? ~ ~ x ~ x@3`),\n roots.struct(\"x [~ x?0.2] x [~ x?] | x!4 | x@2 ~ ~ ~ x x x\").transpose(\"0 7\")\n).slow(2).pianoroll().note().piano().out();\n","hash":"NWLKF4C7o4EX"},{"id":174,"created_at":"2022-09-16T09:06:24.618281+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\ns(\"bd,[~ ],hh(3,4)\") // drums\n .sometimesBy(.5,x=>x.coarse(\"16\"))\n .sometimesBy(.4,x=>x.shape(\".8\"))\n .sometimesBy(.3,x=>x.crush(\"8\").gain(.2))\n .stack(\"(3,8)\".note().s('sawtooth').cutoff(sine.range(200,1000).slow(7)).coarse(perlin.range(2,12).round()))\n .speed(perlin.range(.7,.9))\n .someCyclesBy(.1, x=>x.reset(\"x(5,8)\"))\n .out()\n","hash":"IuUGlGkdiPX-"},{"id":145,"created_at":"2022-09-09T22:02:32.827363+00:00","code":"// Chorus from \"Veronica In Ecstasy\", by Tim Smith (of Cardiacs) \nconst maj = \"0,4,7\"\nconst min = \"0,3,7\"\nstack(\n /* melody\nseq(\n \"[f#6]*3 [f#6 [~ ~ f#6]]\",\n \"[f#6]*3 [[f#6 e6 ~] e6]\",\n \"[e6 e6 [e6 f#6]] [[g6 ~ d6] d6]\", \n \"[d6 d6 [e6 f#6]] [g#6 f6 c#6]\",\n \"[g#5 [ ~ ~ g#5]] [[a5 b5] c#6 c#6]\", \n \"[f#6]*3 [f6 c#6 g#5]\",\n \"[g#5 [ ~ ~ g#5]] [[a#5 c6] d6 a#5]\", \n \"[g#5 a5 b5] [c#6 d6 e6]\",\n \"[d6 a#5 f5] [[g#5 ~] g#5]\", \n \"e3 ~ [~ ~ f#3] ~\",\n \"e3 ~ [~ ~ f#3] [~ ~ f#6]\").legato(0.9),\n */\n // chords\nseq(\n min.add(\"c4\"), min.add(\"c4\"), \n maj.add(\"ab3\"), maj.add(\"ab3\"), \n maj.add(\"db4\"), maj.add(\"db4\"), min.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"c4\"), maj.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"c4\"), maj.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"eb4\"), min.add(\"d4\"), \n seq(min.add(\"c4\"), min.add(\"d4\")),\n maj.add(\"eb4\"),\n maj.add(\"eb4\"), min.add(\"d4\"), \n seq(min.add(\"c4\"), min.add(\"d4\")),\n maj.add(\"eb4\")\n\n ).struct(\"x ~\".fast(25*2))\n).slow(24).note().piano().out()\n","hash":"d7-gUjyRbKP9"},{"id":146,"created_at":"2022-09-10T00:32:25.471086+00:00","code":"stack(\n \"[db3, f3, eb3, fb3, a3, b3, c3, d3, db3][d3, e3, f3, g3, ab3, bb3, b3, bb3, d3][db3, eb3, e3, eb3, g3, a3, bb3, c3, db3]@2\".slow(4).late(.1),\n cat(\n 'Dracula?',\n 'Dracula.'\n ).speak(\"en\".slow(24), \"<0 0 0 2 3 4 5 6>\".slow(4)),\n).slow(4)","hash":"lqXKPxgm_j0a"},{"id":147,"created_at":"2022-09-10T11:21:59.12761+00:00","code":"// \"Appealing to Venus\" (By Tim Smith of The Sea Nymphs) \nconst maj = \"0,4,7\"\nconst imaj = \"0,4,-5\"\nconst min = \"0,3,7\"\nconst imin = \"0,3,-5\"\nstack(\n // melody\n `[\n ~@2 c5 d5@2 eb5 d5@3 c5@2 g#4@3 eb5@8 ~@2\n ~@2 c#5 d#5@2 f5 d#5@3 c#5@2 d#5@3\n d#5@3 f5@3 a5@3 a#5@3 a#5@3 g5@6 f5 e5@4 \n ~ e5 f5@2 a5@3 a#5@3 a#5@3 g5@6 f5 e5@4 \n ~ e5 f5@2 a5@3 a#5@3 a#5@3 \n g5@7 f5@6 d#5@3 f5@3 g5@4 ~@2\n g5@6 f5@6 d#5@3 f5@3 g5@4 ~@2\n ]`.legato(0.95).n().s('Oboe: Reed').out()\n ,\n \n // chords \n seq(\n min.add(\"c4\"), min.add(\"c4\"), \n maj.add(\"ab3\"), maj.add(\"ab3\"), \n imaj.add(\"db4\"), imaj.add(\"db4\"), \n min.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"c4\"), maj.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"c4\"), maj.add(\"c4\"), \n maj.add(\"f3\"), maj.add(\"bb3\"), \n maj.add(\"eb3\"), min.add(\"d3\"), \n min.add(\"c3 d3\"),\n maj.add(\"eb3 ~\"),\n maj.add(\"eb3\"), min.add(\"d3\"), \n min.add(\"c3 d3\"),\n maj.add(\"eb3 ~\")\n\n ).struct(\"x x \".fast(25)).n().s('Acoustic Grand Piano: Piano').out()\n \n\n).slow(25)\n \n\n","hash":"5obY2LrCcbZI"},{"id":148,"created_at":"2022-09-10T11:43:00.445746+00:00","code":"\"c3 eb3 g3 c4\"\n .off(1/8, x=>x.add(7).color('yellow'))\n .off(1/4, x=>x.add(12).color('salmon'))\n .n().s('Oboe: Reed').gain(.5)\n .cutoff(sine.range(200,2000).slow(4))\n .out()\n .pianoroll()","hash":"8262D2qsUNtO"},{"id":149,"created_at":"2022-09-10T13:05:19.12357+00:00","code":"// \"Appealing to Venus\" (By Tim Smith of The Sea Nymphs) \nconst maj = \"0,4,7\"\nconst imaj = \"0,4,-5\"\nconst iimaj = \"0,-8,-5\"\nconst min = \"0,3,7\"\nconst imin = \"0,3,-5\"\nconst iimin = \"0,-9,-5\"\n\nconst chords = seq(\n imin.add(\"c4\"), imin.add(\"c4\"), maj.add(\"ab3\"), maj.add(\"ab3\"), \n iimaj.add(\"db4\"), iimaj.add(\"db4\"), imin.add(\"c4\"), \n maj.add(\"f3\"), imaj.add(\"bb3\"), imaj.add(\"c4\"), imaj.add(\"c4\"), \n maj.add(\"f3\"), imaj.add(\"bb3\"), imaj.add(\"c4\"), imaj.add(\"c4\"), \n maj.add(\"f3\"), imaj.add(\"bb3\"), \n maj.add(\"eb3\"), min.add(\"d3\"), min.add(\"c3 d3\"), maj.add(\"eb3 ~\"),\n maj.add(\"eb3\"), min.add(\"d3\"), min.add(\"c3 d3\"), maj.add(\"eb3 ~\"),\n \n imaj.add(\"c4\"), imaj.add(\"c4\"), imaj.add(\"ab3\"), maj.add(\"eb3\"), \n imaj.add(\"ab3\"), imaj.add(\"a3\"), maj.add(\"e3\"), imaj.add(\"b3\"), \n maj.add(\"db3\"), min.add(\"c3\"), seq(iimin.add(\"bb3\"),min.add(\"c3\")), maj.add(\"db3 ~\"),\n maj.add(\"db3\"), min.add(\"c3\"), seq(iimin.add(\"bb3\"),min.add(\"c3\")), maj.add(\"db3 ~\")\n );\n\nstack( \n // melody\n `[\n ~@2 c5 d5@2 eb5 d5@3 c5@2 g#4@3 eb5@8 ~@2\n ~@2 c#5 d#5@2 f5 d#5@3 c#5@2 d#5@3\n d#5@3 f5@3 a5@3 a#5@3 a#5@3 g5@6 f5 e5@4 \n ~ e5 f5@2 a5@3 a#5@3 a#5@3 g5@6 f5 e5@4 \n ~ e5 f5@2 a5@3 a#5@3 a#5@3 \n g5@7 f5@6 d#5@3 f5@3 g5@6\n ~@24\n\n e5@2 e5@3 f5@3 g5@3 g#5@3 g5@3 g5@3 c6@3\n c6@3 c6@3 c#6@3 b5@3 [f#5 g#5 f#5@3]@3 e5@3 b5@3 b5@3\n g#5@7 d#5@6 c#5@3 d#5@3 f5@6\n ~@24\n ]`.legato(0.95).n().s('Oboe: Reed').gain(0.4).out()\n ,\n // second voice\n `[\n ~@150\n \n c5@2 c5@3 d5@3 e5@3 d#5@3 d#5@3 c5@3 g5@3\n g5@3 g5@3 g#5@3 e5@3 [c#5 d#5 c#5@3]@3 b4@3 f#5@3 f#5@3\n c#5@7 c5@6 a#4@3 c5@3 c#5@6\n ~@24\n ]`.legato(0.95).n().s('Oboe: Reed').gain(0.3).out()\n ,\n // chords \n chords.struct(\"x x \".fast(25+16)).n().s('Acoustic Grand Piano: Piano').gain(0.25).out(),\n chords.struct(\"x x\".fast(25+16)).n().s('Church Organ: Organ').gain(0.2).out(),\n \n).slow(45)\n ","hash":"9PUNz9fqWo2F"},{"id":150,"created_at":"2022-09-10T16:52:01.48691+00:00","code":"// \"Oh\" (By Tim Smith of Spratleys Japs)\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst line = `[g#3@16 f#3@8 b3@12 e3@4 a3@8 d3@4 g3@8 a3@4 g3@16 a3@4 g3@16 g#3@4 c#4@4 f#3@4 b3@4 e3@4 a3@8 b3@4 a3@8 c4@4 d#4@24 f4@8 d#4@16]`\n\nstack( \n // melody\n `d#5@16 d#5@8 d#5@12 e5@4 c#5@8 d5@4 d5@8 c#5@4 b4@16 c#5@4 b4@16 c5@4 f5@4 a#4@4 d#5@4 g#4@4 e5@4 b4@3 d#5 f#5@4 d#5@8 e5@4 g4@4 g5@12 f5@4 a5@16 a#5@12`\n .n().s('Piccolo: Pipe').gain(0.35).out(), \n // chords\n line.add(maj)\n .n().s('Choir Aahs: Ensemble').gain(0.15).out(),\n line.add(imaj)\n .n().s('Choir Aahs: Ensemble').gain(0.10).out(),\n // bass\n line.struct(\"x x x x\".fast(48)).transpose(-24).legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(),\n\n s(\"[[bd bd] sn],hh*2\").fast(48).gain(.20).out()\n \n).slow(65)\n ","hash":"wkDHhKIUtwY_"},{"id":151,"created_at":"2022-09-10T16:54:41.32735+00:00","code":"// \"Oh\" (By Tim Smith of Spratleys Japs)\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst line = `[g#3@16 f#3@8 b3@12 e3@4 a3@8 d3@4 g3@8 a3@4 g3@16 a3@4 g3@16 g#3@4 c#4@4 f#3@4 b3@4 e3@4 a3@8 b3@4 a3@8 c4@4 d#4@24 f4@8 d#4@16]`\n\nstack( \n // melody\n `d#5@16 d#5@8 d#5@12 e5@4 c#5@8 d5@4 d5@8 c#5@4 b4@16 c#5@4 b4@16 c5@4 f5@4 a#4@4 d#5@4 g#4@4 e5@4 b4@3 d#5 f#5@4 d#5@8 e5@4 g4@4 g5@12 f5@4 a5@16 a#5@12`\n .n().s('Piccolo: Pipe').gain(0.35).out(), \n // chords\n line.add(maj)\n .n().s('Choir Aahs: Ensemble').gain(0.15).out(),\n line.add(imaj).transpose(12)\n .n().s('Choir Aahs: Ensemble').gain(0.15).out(),\n // bass\n line.struct(\"x x x x\".fast(48)).transpose(-24).legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(),\n\n s(\"[[bd bd] sn],hh*2\").fast(48).gain(.20).out()\n \n).slow(65)\n ","hash":"Zj9qfA1PhcDS"},{"id":152,"created_at":"2022-09-11T10:11:31.941927+00:00","code":"samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] }, \n 'github:cleary/samples-flbass/main/')\nsamples({\nbd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\nsd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\nhh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\nnote(\"<8(3,8) <7 7*2> [4 5@3] 8>\".sub(1) // sub 1 -> 1-indexed\n.layer(\nx=>x,\nx=>x.add(7).color('steelblue')\n.off(1/8,x=>x.add(\"2,4\").color('yellow').off(1/8,x=>x.add(5).color('darkseagreen').echo(4,.125,.5)))\n.slow(2),\n).scale('A1 minor'))\n.s(\"flbass\").n(0)\n.gain(.3)\n.cutoff(sine.slow(7).range(200,4000))\n.resonance(10)\n//.hcutoff(400)\n.clip(1)\n.stack(s(\"bd:1*2,~ sd:0,[~ hh:0]*2\"))\n.out()\n.pianoroll({vertical:1})","hash":"p_G-4ZB295BP"},{"id":218,"created_at":"2022-09-27T04:12:07.011178+00:00","code":"stack(\"\".m.voicings(), ''.m)\n .midi()","hash":"sOP6EO9TO4HO"},{"id":154,"created_at":"2022-09-11T14:23:43.062479+00:00","code":"// theme from \"The Breakfast Line\" (By Tim Smith of Cardiacs)\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nstack( \n // melody \n `[\n c#6@2 f5 c6@3 a#5 a5@2 g5@3 c#5 e5@2 d#5@2 f#5 a5@3 a6@3\n a5 g5 f5 d#5 c#5 b4 a5@3 a5@3 f5 g5 a5 a#5 g#5 g5 f5 g5 a5 b5 d5 g5 \n c#5@2 b4 f5@3 c#5 d#5 f5 g5 c#5@2 c5@3 c#5@3 c#5@6\n c#5 g#5 g5 a#4 f5 d#5 c#5 c5 g#5 c#5 c5 b4 c#5@2 b4 a5@3 c#5 b4@2 a5@6 \n b5 g5@2 e5 a5 b5 b5@6 b5 a#5 g5 a5@3 b5 g5 d5 c#5 a5@2 b5 g5 d#5 c#5 a5@2\n g5@2 d#5 f5 d#5 c#5 b4 a4 g4 a4 b4 c#5 d#5 f5 g5 \n ]`\n .legato(0.93).n().s('Overdriven Guitar: Guitar').gain(0.18).out(), \n // chords\n `[C#4 D#4 F4 G4 A3 B3]!8`.add(imaj)\n .n().s('Choir Aahs: Ensemble').gain(0.24).out(),\n // bass\n `[C#2 D#2 C2 D2 A1 B1]!8`.legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(), \n // drums\n s(\"[[bd ~ bd sn ~ bd],[hh*6]]!24\").gain(.20).out()\n\n).slow(37.6)\n ","hash":"XhNBCyuzIVOD"},{"id":155,"created_at":"2022-09-11T14:56:57.722768+00:00","code":"// theme from \"The Breakfast Line\" (By Tim Smith of Cardiacs)\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst melody =`[\n c#6@2 f5 c6@3 a#5 a5@2 g5@3 c#5 e5@2 d#5@2 f#5 a5@3 a6@3\n a5 g5 f5 d#5 c#5 b4 a5@3 a5@3 f5 g5 a5 a#5 g#5 g5 f5 g5 a5 b5 d5 g5 \n c#5@2 b4 f5@3 c#5 d#5 f5 g5 c#5@2 c5@3 c#5@3 c#5@6\n c#5 g#5 g5 a#4 f5 d#5 c#5 c5 g#5 c#5 c5 b4 c#5@2 b4 a5@3 c#5 b4@2 a5@6 \n b5 g5@2 e5 a5 b5 b5@6 b5 a#5 g5 a5@3 b5 g5 d5 c#5 a5@2 b5 g5 d#5 c#5 a5@2\n g5@2 d#5 f5 d#5 c#5 b4 a4 g4 a4 b4 c#5 d#5 f5 g5 ]`.legato(0.93)\nstack( \n // melody \n melody.transpose(-12).n().s('Overdriven Guitar: Guitar').gain(0.20).out(), \n melody.n().s('Overdriven Guitar: Guitar').gain(0.10).out(), \n // chords\n `[C#4 D#4 F4 G4 A3 B3]!8`.add(imaj)\n .n().s('Choir Aahs: Ensemble').gain(0.25).out(),\n // bass\n `[C#2 D#2 C2 D2 A1 B1]!8`.legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(), \n // drums\n s(\"[bd ~ bd sn ~ bd,hh*6]!23 [sn*6,hh*6]\").gain(0.25).out()\n).slow(38)\n ","hash":"AL73np8C7Fe7"},{"id":156,"created_at":"2022-09-11T16:46:44.314327+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .out()\n .slow(3/2)","hash":"89gJxIK34OPK"},{"id":157,"created_at":"2022-09-12T01:28:44.939598+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"8g4oMFkLYMXZ"},{"id":158,"created_at":"2022-09-12T02:53:20.33879+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\n\nconst drums = stack(\n \"c1*2\".tone(kick).mask(\"/8\"),\n \"~ \".tone(snare).mask(\"/4\"),\n \"[~ c4]*2\".tone(hihat)\n);\n\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n .layer(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).apply(thru).tone(keys).mask(\"<~ x>/16\"),\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).apply(thru).tone(bass),\n \"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask(\"/8\".early(1/4))\n)\nstack(\n drums.fast(2), \n synths\n).slow(2)","hash":"NIQF-VGYdB83"},{"id":159,"created_at":"2022-09-12T04:21:55.945329+00:00","code":"const chords = \"\";\nstack(\n chords.voicings().struct(\"x(3,8,-1)\").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)),\n chords.rootNotes(2).struct(\"x(4,8,-2)\"),\n chords.rootNotes(4)\n .scale(cat('C minor','F dorian','G dorian','F# mixolydian'))\n .struct(\"x(3,8,-2)\".fast(2))\n .scaleTranspose(\"0 4 0 6\".early(\".125 .5\")).layer(scaleTranspose(\"0,<2 [4,6] [5,7]>/4\"))\n).slow(2)\n .velocity(sine.struct(\"x*8\").add(3/5).mul(2/5).fast(8))\n .note().piano().out()","hash":"KOAtvzaJcmmY"},{"id":160,"created_at":"2022-09-12T16:58:43.165364+00:00","code":"stack(\n // melody\n `[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] \n [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]\n [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]\n [B3@2 D4] [A4@2 G4] D5@2 \n [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]\n [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]`,\n // bass\n `[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]`\n).transpose(12).slow(48).tone(\n new PolySynth().chain(\n new Gain(0.3), \n new Chorus(2, 2.5, 0.5).start(), \n new Freeverb(), \n getDestination())\n)","hash":"pK517-FAktOc"},{"id":161,"created_at":"2022-09-13T21:04:40.773025+00:00","code":"samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})\nstack(\n stack(\n \"c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>\".legato(\".5 1\".fast(2)).velocity(.8),\n \"0 ~\".scale('c4 whole tone')\n .euclidLegato(3,8).slow(2).mask(\"x ~\")\n .stutWith(8, 1/16, (x,n)=>x.scaleTranspose(n).velocity(Math.pow(.7,n)))\n .scaleTranspose(\"<0 1 2 3 4 3 2 1>\")\n .fast(2)\n .velocity(.7)\n .legato(.5)\n .stut(3, .5, 1/8)\n ).transpose(-1).note().piano(),\n s(\"mad\").slow(2)\n).cpm(78).slow(4)\n .out()\n .pianoroll()\n","hash":"H3BbA0AovtKs"},{"id":162,"created_at":"2022-09-13T21:48:42.132401+00:00","code":"// \"Oh\" (By Tim Smith of Spratleys Japs)\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst line = `[g#3@16 f#3@8 b3@12 e3@4 a3@8 d3@4 g3@8 a3@4 g3@16 a3@4 g3@16 g#3@4 c#4@4 f#3@4 b3@4 e3@4 a3@8 b3@4 a3@8 c4@4 d#4@24 f4@8 d#4@16]`\n\nstack( \n // melody\n `d#5@16 d#5@8 d#5@12 e5@4 c#5@8 d5@4 d5@8 c#5@4 b4@16 c#5@4 b4@16 c5@4 f5@4 a#4@4 d#5@4 g#4@4 e5@4 b4@3 d#5 f#5@4 d#5@8 e5@4 g4@4 g5@12 f5@4 a5@16 a#5@12`\n .n().s('Piccolo: Pipe').gain(0.35).out(), \n // chords\n line.add(maj)\n .n().s('Choir Aahs: Ensemble').gain(0.15).out(),\n line.add(imaj).transpose(12)\n .n().s('Choir Aahs: Ensemble').gain(0.15).out(),\n // bass\n line.struct(\"x x x x\".fast(48)).transpose(-24).legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(),\n\n s(\"[[bd bd] sn],hh*2\").fast(48).gain(.20).out()\n \n).slow(65)\n ","hash":"Y9RZADkxt8UL"},{"id":163,"created_at":"2022-09-13T23:04:35.959127+00:00","code":"stack(\n seq(\n e5, [b4, c5], d5, [c5, b4],\n a4, [a4, c5], e5, [d5, c5],\n b4, [r, c5], d5, e5,\n c5, a4, a4, r,\n [r, d5], [r, f5], a5, [g5, f5],\n e5, [r, c5], e5, [d5, c5],\n b4, [b4, c5], d5, e5,\n c5, a4, a4, r,\n ).rev(),\n seq(\n e2, e3, e2, e3, e2, e3, e2, e3,\n a2, a3, a2, a3, a2, a3, a2, a3,\n gs2, gs3, gs2, gs3, e2, e3, e2, e3,\n a2, a3, a2, a3, a2, a3, b1, c2,\n d2, d3, d2, d3, d2, d3, d2, d3,\n c2, c3, c2, c3, c2, c3, c2, c3,\n b1, b2, b1, b2, e2, e3, e2, e3,\n a1, a2, a1, a2, a1, a2, a1, a2,\n ).rev()\n).slow(16)","hash":"bxwipc2kqreB"},{"id":164,"created_at":"2022-09-13T23:06:23.988071+00:00","code":"// theme from \"The Breakfast Line\" (By Tim Smith of Cardiacs)\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nstack( \n // melody \n `[\n c#6@2 f5 c6@3 a#5 a5@2 g5@3 c#5 e5@2 d#5@2 f#5 a5@3 a6@3\n a5 g5 f5 d#5 c#5 b4 a5@3 a5@3 f5 g5 a5 a#5 g#5 g5 f5 g5 a5 b5 d5 g5 \n c#5@2 b4 f5@3 c#5 d#5 f5 g5 c#5@2 c5@3 c#5@3 c#5@6\n c#5 g#5 g5 a#4 f5 d#5 c#5 c5 g#5 c#5 c5 b4 c#5@2 b4 a5@3 c#5 b4@2 a5@6 \n b5 g5@2 e5 a5 b5 b5@6 b5 a#5 g5 a5@3 b5 g5 d5 c#5 a5@2 b5 g5 d#5 c#5 a5@2\n g5@2 d#5 f5 d#5 c#5 b4 a4 g4 a4 b4 c#5 d#5 f5 g5 \n ]`.rev()\n .legato(0.93).n().s('Overdriven Guitar: Guitar').gain(0.18).out(), \n // chords\n `[C#4 D#4 F4 G4 A3 B3]!8`.rev().add(imaj)\n .n().s('Choir Aahs: Ensemble').gain(0.24).out(),\n // bass\n `[C#2 D#2 C2 D2 A1 B1]!8`.rev().legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out(), \n // drums\n s(\"[[bd ~ bd sn ~ bd],[hh*6]]!24\").rev().gain(.20).out()\n\n).slow(37.6)\n ","hash":"qGimkQi_nszY"},{"id":165,"created_at":"2022-09-14T10:53:59.02489+00:00","code":"const delay = new FeedbackDelay(1/3, .8).chain(vol(.2), out());\nlet bell = await sampler({\n C6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3'\n})\nconst bass = await sampler({\n d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3'\n});\nbell = bell.chain(vol(0.6).connect(delay),out());\n\n\"0\".euclidLegato(3,8)\n .echo(3, 1/16, .5)\n .add(rand.range(0,12))\n .velocity(rand.range(.5,1))\n .legato(rand.range(.4,3))\n .scale(cat('D minor pentatonic')).tone(bell)\n .stack(\"\".euclidLegato(6,8,1).tone(bass.toDestination()))\n .slow(6)\n .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})","hash":"DVESSaRggtn_"},{"id":166,"created_at":"2022-09-14T10:58:21.481945+00:00","code":"const lfo = cosine.slow(15);\nconst lfo2 = sine.slow(16);\nconst filter1 = x=>x.cutoff(lfo2.range(300,3000));\nconst filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)\nconst scales = cat('D3 major', 'G3 major').slow(8)\n\nconst drums = await players({\n bd: '344/344757_1676145-lq.mp3',\n sn: '387/387186_7255534-lq.mp3',\n hh: '561/561241_12517458-lq.mp3',\n hh2:'44/44944_236326-lq.mp3',\n hh3: '44/44944_236326-lq.mp3',\n}, 'https://freesound.org/data/previews/')\n\nstack(\n \"-7 0 -7 7\".struct(\"x(5,8,2)\").fast(2).sub(7)\n .scale(scales)\n .n()\n .s(\"sawtooth,square\")\n .gain(.3).attack(0.01).decay(0.1).sustain(.5)\n .apply(filter1),\n \"~@3 [<2 3>,<4 5>]\"\n .echo(4,1/16,.7)\n .scale(scales)\n .n()\n .s('square').gain(.7)\n .attack(0.01).decay(0.1).sustain(0)\n .apply(filter1),\n \"6 4 2\".add(14)\n .superimpose(sub(\"5\"))\n .fast(1).euclidLegato(3,8)\n .mask(\"<1 0@7>\")\n .fast(2)\n .echo(32, 1/8, .8)\n .scale(scales)\n .n()\n .s(\"sawtooth\")\n .gain(sine.range(.1,.4).slow(8))\n .attack(.001).decay(.2).sustain(0)\n .apply(filter2)\n).out().stack(\n stack(\n \"bd <~@7 [~ bd]>\".fast(2),\n \"~ sn\",\n \"[~ hh3]*2\"\n ).tone(drums.chain(vol(.18),out())).fast(2)\n).slow(2)\n \n//.pianoroll({minMidi:20, maxMidi:160})\n// strudel disable-highlighting","hash":"CHh9ZGJxiWnm"},{"id":167,"created_at":"2022-09-14T20:27:56.840816+00:00","code":"Pattern.prototype.teeter = function(probability, other) {\n return this.sometimesBy(probability, () => other)\n}\n\n\"bd\".teeter(0.7, \"hh\").s().fast(4).out()","hash":"7C7fQJ7ENNd3"},{"id":168,"created_at":"2022-09-14T22:19:56.095051+00:00","code":"\"bd\".sometimes(set(\"hh\")).s().fast(4).out()","hash":"VGsjmHzmkMz0"},{"id":169,"created_at":"2022-09-14T22:22:17.092485+00:00","code":"\"bd\".sometimes(x => x.squeeze(\"hh hh hh\")).s().fast(4).out()","hash":"4QSBDxgdgAIr"},{"id":170,"created_at":"2022-09-14T22:27:33.350324+00:00","code":"\"bd@2 bd\".sometimes(x => x.squeeze(\"hh hh hh\")).s().out()","hash":"_1ClWbH9kSKC"},{"id":171,"created_at":"2022-09-15T05:18:14.096948+00:00","code":"\n\nconst delay = new FeedbackDelay(1/7, .1).chain(vol(0.9), out());\nconst reverb = new Reverb(1).chain(vol(3), out());\nconst hihat = new MetalSynth()\n .set(adsr(0, .01, 0, .1))\n .chain(vol(.01).connect(delay),out());\nlet kick = await sampler({\n c3: 'https://blog.livecoding.nyuadim.com/public/Dirt-Samples/808bd/BD0010.WAV'\n})\nkick = kick.chain(vol(1).connect(reverb),out());\n\nstack(\n \"\"\n .add(isaw.mul(12).slow(4))\n .slow(2).tone(kick.toDestination()),\n `[ >, \n ]`\n .degradeBy(0.01)\n .legato(20)\n .velocity(1)\n .tone((await piano()).toDestination()),//.midi('IAC Driver Bus 1'),\n \"<~ 3> 2 ~ [2 <[~ [-0*3]?] ~>]\"\n .slow(2).tone(hihat.toDestination())\n)\n\n","hash":"nmwsMPG16O1L"},{"id":173,"created_at":"2022-09-15T19:53:11.667602+00:00","code":"\"\"\n .off(1/8,x=>x.add(12).degradeBy(.5))\n .superimpose(add(.05))\n .n() \n .decay(.25).sustain(0)\n .s('sawtooth')\n .gain(.4)\n .vowel(\"\")\n .out()","hash":"bdsxEcjr7fkg"},{"id":184,"created_at":"2022-09-20T16:08:24.400263+00:00","code":"stack(\n \"2,6\"\n .scale('F3 dorian')\n .transpose(sine2.struct(\"x*64\").slow(4).mul(2).round())\n .fast(2)\n .struct(\"x x*3\")\n .legato(\".9 .3\"),\n \"0@3 -3*3\".legato(\".95@3 .4\").scale('F2 dorian')\n)\n .transpose(\"<0 1 2 1>/2\".early(0.5))\n .transpose(5)\n .fast(2 / 3)\n .note().piano().out()","hash":"irMD_KH0ICbf"},{"id":175,"created_at":"2022-09-16T16:10:39.404129+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\n\nconst drums = stack(\n \"c1*2\".tone(kick).mask(\"/8\"),\n \"~ \".tone(snare).mask(\"/4\"),\n \"[~ c4]*2\".tone(hihat)\n);\n\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n .layer(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).apply(thru).tone(keys).mask(\"<~ x>/16\"),\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).apply(thru).tone(bass),\n \"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask(\"/8\".early(1/4))\n)\nstack(\n drums.fast(2), \n synths\n).slow(2)","hash":"1QH3HPhZ1uad"},{"id":176,"created_at":"2022-09-16T16:17:58.099744+00:00","code":"const scale = cat('C3 dorian','Bb2 major').slow(4);\nstack(\n \"2*4\".add(12).scale(scale)\n .off(1/8,x=>x.scaleTranspose(\"2\")).fast(2)\n .scaleTranspose(\"<0 1 2 1>\").hush(),\n \"<0 1 2 3>(3,8,2)\"\n .scale(scale)\n .off(1/4,x=>x.scaleTranspose(\"2,4\")),\n \"<0 4>(5,8)\".scale(scale).transpose(-12)\n)\n .velocity(\".6 .7\".fast(4))\n .legato(\"2\")\n .scale(scale)\n.scaleTranspose(\"<0>\".slow(4))\n.transpose(5)\n.note().piano().out()\n.velocity(.8)\n.slow(2)\n.pianoroll({maxMidi:100,minMidi:20})","hash":"hxJZG7SS71HP"},{"id":177,"created_at":"2022-09-16T22:21:30.67989+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"EoVX7HjwHB8r"},{"id":178,"created_at":"2022-09-16T23:02:44.33235+00:00","code":"const chords = \"\";\nstack(\n chords.voicings().struct(\"x(3,8,-1)\").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)),\n chords.rootNotes(2).struct(\"x(4,8,-2)\"),\n chords.rootNotes(4)\n .scale(cat('C minor','F dorian','G dorian','F# mixolydian'))\n .struct(\"x(3,8,-2)\".fast(2))\n .scaleTranspose(\"0 4 0 6\".early(\".125 .5\")).layer(scaleTranspose(\"0,<2 [4,6] [5,7]>/4\"))\n).slow(2)\n .velocity(sine.struct(\"x*8\").add(3/5).mul(2/5).fast(8))\n .note().piano().out()","hash":"tVIePZOlbUFE"},{"id":179,"created_at":"2022-09-18T04:46:14.855382+00:00","code":"stack(\n freq(\"55 [110,165] 110 [220,275]\".mul(\"<1 <3/4 2/3>>\").struct(\"x(3,8)\").layer(x=>x.mul(\"1.006,.995\"))),\n freq(\"440(5,8)\".legato(.18).mul(\"<1 3/4 2 2/3>\")).gain(perlin.range(.2,.8))\n).s(\"/2\")\n .onTrigger((t,hap,ct)=>{\n const ac = Tone.getContext().rawContext;\n t = ac.currentTime + t - ct;\n const { freq, s, gain = 1 } = hap.value;\n const master = ac.createGain();\n master.gain.value = 0.1 * gain;\n master.connect(ac.destination);\n const o = ac.createOscillator();\n o.type = s || 'triangle';\n o.frequency.value = Number(freq);\n o.connect(master);\n o.start(t);\n o.stop(t + hap.duration);\n}).stack(s(\"bd(3,8),hh*4,~ sd\").webdirt())","hash":"P_Fi2yRHrXHj"},{"id":180,"created_at":"2022-09-18T15:44:49.144663+00:00","code":"stack(\ns(\"bd, [~ sd], hh(3, 4)\")\n,\"5@2 4 3 5@2 4 4 ~ 3 ~!2 ~!4 ~ 4!3 4@2 4 4@2 3 ~@6\"\n .slow(4).scale('C2 major').note().s('sawtooth')\n.slow(2)\n).out()","hash":"brh8FpBbbH--"},{"id":181,"created_at":"2022-09-19T00:39:23.928137+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"Uw7K4l1pIVUt"},{"id":182,"created_at":"2022-09-19T18:35:27.986831+00:00","code":"seq(5).seq([8,9]).cat(6).cat([7,5])\n .superimpose(x=>x.add(3))\n \n.scale('c major')\n.pianoroll()","hash":"dhBbMccpPgg8"},{"id":183,"created_at":"2022-09-20T00:55:07.074524+00:00","code":"// mixer\nconst mix = (key) => vol({\n chords: .2,\n lead: 0.8,\n bass: .4,\n snare: .95, \n kick: .9,\n hihat: .35,\n}[key]||0);\nconst delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out());\nconst delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\n// instruments\nconst instr = (instrument) => ({\n organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()),\n lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()),\n bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()),\n pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()),\n hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()),\n snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()),\n kick: membrane().chain(mix('kick'), out())\n}[instrument]);\n// harmony\nconst t = transpose(\"<0 0 1 0>/8\");\nconst sowhat = scaleTranspose(\"0,3,6,9,11\");\n// track\nstack(\n \"[<0 4 [3 [2 1]]>]/4\".struct(\"[x]*3\").mask(\"[~ x ~]\").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask(\"<~ ~ x x>/8\"),\n \"< <[d3 ~] [c3 f3] g3>>\".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask(\"/8\"),\n \"<[d2 [d2 ~]*3]!3 >\".apply(t).tone(instr('bass')),\n \"c1*6\".tone(instr('hihat')),\n \"~ c3\".tone(instr('snare')),\n \"<[c1@5 c1] >\".tone(instr('kick')),\n \"[2,4]/4\".scale('D dorian').apply(t).tone(instr('pad')).mask(\"/8\")\n).fast(6/8)\n// strudel disable-highlighting","hash":"U5sIL_DhqTip"},{"id":185,"created_at":"2022-09-20T16:20:26.184708+00:00","code":"stack()\n\n// Notes\n// stack(\"e5\")\n\n// Sequences\n// stack(\"e5 b4 d5 c5\")\n\n// Sequences divided by 2\n// stack(\"[e5 b4 d5 c5]/2\")\n\n// Angle brackets, same as sequences divided by 4\n// stack(\"\")\n\n// Sequences multiplication\n// stack(\"[e5 b4 d5 c5]*2\")\n\n// Bracket nesting\n// stack(\"e5 [b4 c5] d5 [c5 b4]\")\n\n// Rests\n// stack(\"[b4 [~ c5] d5 e5]\")\n\n// Parallel\n// stack(\"g3,b3,e4\")\n\n// Multiple parallels\n// stack(\"<[g3,b3,e4] [a3,c3,e4] [b3,d3,f#4] [b3,e4,g4]>\")\n\n// Elongation\n// stack(\"<[g3,b3,e4]@2 [a3,c3,e4] [b3,d3,f#4]>\")\n\n// Replication\n// stack(\"<[g3,b3,e4]!2 [a3,c3,e4] [b3,d3,f#4]>\")\n\n// Euclidian with slow down\n// stack(\"e5(2,8) b4(3,8) d5(2,8) c5(3,8)\".slow(4))","hash":"A6Mqjuhn1Wpr"},{"id":186,"created_at":"2022-09-20T16:29:53.076012+00:00","code":"stack()\n\n// Synths\n// stack(note(\"c2 >\").s('sawtooth').out())\n\n// Multiple synths\n// stack(note(\"c2 >\").s(\"\").out())\n\n// Envelope\n// stack(note(\"c2 >\").s('sawtooth').attack(.1).decay(.1).sustain(.2).release(.1).out())\n\n// Samples\n// stack(s(\"bd sd,hh*8,misc/2\").out())\n\n// Custom sample maps\n// samples({\n// bd: 'bd/BT0AADA.wav',\n// sd: 'sd/rytm-01-classic.wav',\n// hh: 'hh27/000_hh27closedhh.wav',\n// }, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/');\n// s(\"bd sd,hh*8\").out()\n\n// Custom sample maps with Github shortcuts\n// samples({\n// bd: 'bd/BT0AADA.wav',\n// sd: 'sd/rytm-01-classic.wav',\n// hh: 'hh27/000_hh27closedhh.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// s(\"bd sd,hh*8\").out()\n\n// Mutiple samples per sound\n// samples({\n// bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav'],\n// sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n// hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// s(\",~ ,[hh:0 hh:1]*2\").out()\n\n// Pitched sounds\n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s('gtr').gain(.5).out()\n\n// Pitched sounds with clip\n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s('gtr').clip(1)\n// .gain(.5).out()\n\n// Base pitch \n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// \"moog\": { 'g3': 'moog/005_Mighty%20Moog%20G3.wav' },\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s(\"gtr,moog\").clip(1)\n// .gain(.5).out()\n\n// Base pitch with different regions of the keyboard\n// samples({\n// \"moog\": {\n// 'g2': 'moog/004_Mighty%20Moog%20G2.wav',\n// 'g3': 'moog/005_Mighty%20Moog%20G3.wav',\n// 'g4': 'moog/006_Mighty%20Moog%20G4.wav',\n// }}, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g2!2 !2, g4 f4]>\")\n// .s('moog').clip(1)\n// .gain(.5).out()","hash":"2-JbRPIoRj7X"},{"id":187,"created_at":"2022-09-20T16:30:30.971605+00:00","code":"stack()\n\n// Synths\n// stack(note(\"c2 >\").s('sawtooth').out())\n\n// Multiple synths\n// stack(note(\"c2 >\").s(\"\").out())\n\n// Envelope\n// stack(note(\"c2 >\").s('sawtooth').attack(.1).decay(.1).sustain(.2).release(.1).out())\n\n// Samples\n// stack(s(\"bd sd,hh*8,misc/2\").out())\n\n// Custom sample maps\n// samples({\n// bd: 'bd/BT0AADA.wav',\n// sd: 'sd/rytm-01-classic.wav',\n// hh: 'hh27/000_hh27closedhh.wav',\n// }, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/');\n// s(\"bd sd,hh*8\").out()\n\n// Custom sample maps with Github shortcuts\n// samples({\n// bd: 'bd/BT0AADA.wav',\n// sd: 'sd/rytm-01-classic.wav',\n// hh: 'hh27/000_hh27closedhh.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// s(\"bd sd,hh*8\").out()\n\n// Mutiple samples per sound\n// samples({\n// bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav'],\n// sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n// hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// s(\",~ ,[hh:0 hh:1]*2\").out()\n\n// Pitched sounds\n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s('gtr').gain(.5).out()\n\n// Pitched sounds with clip\n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s('gtr').clip(1)\n// .gain(.5).out()\n\n// Base pitch \n// samples({\n// \"gtr\": 'gtr/0001_cleanC.wav',\n// \"moog\": { 'g3': 'moog/005_Mighty%20Moog%20G3.wav' },\n// }, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g3 [bb3 c4] @2\").s(\"gtr,moog\").clip(1)\n// .gain(.5).out()\n\n// Base pitch with different regions of the keyboard\n// samples({\n// \"moog\": {\n// 'g2': 'moog/004_Mighty%20Moog%20G2.wav',\n// 'g3': 'moog/005_Mighty%20Moog%20G3.wav',\n// 'g4': 'moog/006_Mighty%20Moog%20G4.wav',\n// }}, 'github:tidalcycles/Dirt-Samples/master/');\n// note(\"g2!2 !2, g4 f4]>\")\n// .s('moog').clip(1)\n// .gain(.5).out()","hash":"wVDgPVVgbrSK"},{"id":188,"created_at":"2022-09-21T15:48:45.208649+00:00","code":"const drums = await players({\n bd: 'bd/BT0A0D0.wav',\n sn: 'sn/ST0T0S3.wav',\n hh: 'hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nstack(\n \"\",\n \"hh*4\",\n \"~ \"\n).tone(drums.chain(out()))\n","hash":"z0OoCML7DPQb"},{"id":189,"created_at":"2022-09-21T17:16:52.291937+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\nconst drums = stack(\n \"c1*2\".tone(kick).mask(\"/8\"),\n \"~ \".tone(snare).mask(\"/4\"),\n \"[~ c4]*2\".tone(hihat)\n);\nconst thru = (x) => x.transpose(\"<0 1>\").transpose(-1);\nstack(\n seq(\n \"[e4 c4] [a4 c4] [e4 c4] [e4 f4]\",\n \"[e4 b4] [g3 b4] e4 d4\",\n \"[e4 c4] [a4 c4] [e4 c4] [e4 f4]\",\n \"[e4 b4] [g3 b4] e4@1.5 g5@0.5\"\n ).tone(keys),\n drums.fast(8),\n // chords\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).apply(thru).tone(bass),\n \"[A3,C4,E4,A5]*2\".tone(kick).mask(\"*4\")\n).slow(8).note()","hash":"SWekIFXDlrLE"},{"id":190,"created_at":"2022-09-21T19:46:26.709827+00:00","code":"//let p = s(\"hh\").chop(4) // this works\n//let p = s(\"hh\").chop(4).slow(2) // this also works\nlet p = s(\"hh\").slow(2).chop(4) // this doesnt work\n\nconsole.log(p._firstCycleValues)\n\np.out()\n\n","hash":"70M98P_ZVSJe"},{"id":191,"created_at":"2022-09-21T19:54:06.809667+00:00","code":"//let p = s(\"hh\").ply(4) // this works\n//let p = s(\"hh\").ply(4).slow(2) // this also works\nlet p = s(\"hh\").slow(2).ply(2) // this doesnt work\n\nconsole.log(p._firstCycleValues)\n\np.out()\n\n","hash":"SB-hFm0uROHV"},{"id":192,"created_at":"2022-09-21T22:08:51.441153+00:00","code":"samples({\n p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3',\n})\n\ns(\"p\")\n .chop(128)\n .loopAt(32,1)\n .jux(rev)\n .shape(.5)\n .out()","hash":"t2KXoS_qssjD"},{"id":193,"created_at":"2022-09-22T06:39:38.309395+00:00","code":"const bpm = 80;\nconst lead = polysynth().set({...osc('sine4'),...adsr(.004)}).chain(vol(0.15),out())\nconst bass = fmsynth({...osc('sawtooth6'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out());\nconst s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4));\nstack(\n \"0 2\".struct(\" [x ~]\").apply(s).scaleTranspose(stack(0,2)).tone(lead),\n \"<6 7 9 7>\".struct(\"[~ [x ~]*2]*2\").apply(s).scaleTranspose(\"[0,2] [2,4]\".fast(2).every(4,rev)).tone(lead),\n\t\"-14\".struct(\"[~ x@0.8]*2\".early(0.01)).apply(s).tone(bass),\n \"c2*2\".tone(membrane().chain(vol(0.6), out())),\n \"~ c2\".tone(noise().chain(vol(0.2), out())),\n \"c4*4\".tone(metal(adsr(0,.05,0)).chain(vol(0.03), out()))\n)\n.slow(120 / bpm)","hash":"k0435I3IQEH4"},{"id":194,"created_at":"2022-09-22T06:52:23.642954+00:00","code":"const bpm = 10;\nconst lead = polysynth().set({...osc('sine4'),...adsr(.004)}).chain(vol(0.15),out())\nconst bass = fmsynth({...osc('sawtooth6'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out());\nconst s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4));\nstack(\n \"0 2\".struct(\" [x ~]\").apply(s).scaleTranspose(stack(0,2)).tone(lead),\n \"<6 7 9 7>\".struct(\"[~ [x ~]*2]*2\").apply(s).scaleTranspose(\"[0,2] [2,4]\".fast(2).every(4,rev)).tone(lead),\n\t\"-14\".struct(\"[~ x@0.8]*2\".early(0.01)).apply(s).tone(bass),\n \"c2*2\".tone(membrane().chain(vol(0.6), out())),\n \"~ c2\".tone(noise().chain(vol(0.2), out())),\n \"c4*4\".tone(metal(adsr(0,.05,0)).chain(vol(0.03), out()))\n)\n.slow(120 / bpm)","hash":"vDsUyH8IUJn6"},{"id":195,"created_at":"2022-09-22T07:19:55.396442+00:00","code":"backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' })\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst h = x=>x.transpose(\"<0@2 5 0 7 5 0 -5>/2\")\n\nstack(\n s(\"< sn> hh\").fast(2).gain(.7),\n \"[c2 a1 bb1 ~] ~\"\n .echo(2, 1/16, 1)\n .legato(.4)\n .slow(2)\n .layer(h)\n .note().s('square')\n .cutoff(400).decay(.12).sustain(0)\n ,\n \"[g2,[c3 eb3]]\".iter(4)\n .echoWith(4, 1/8, (x,n)=>x.transpose(n*12).velocity(Math.pow(.4,n)))\n .legato(.1)\n .layer(h).note()\n).out()\n .fast(2/3)\n .pianoroll({})","hash":"YJ2iESN49BD6"},{"id":196,"created_at":"2022-09-22T08:09:58.051557+00:00","code":"const f = fast(\"<1 <2 [6 5]>>\");\nstack(\n \"c3,g3,c4\".struct(\"[x ~]*2\").apply(f).transpose(\"<0 <3 [5 [7 [9 [11 22]]]]>>\"),\n \"c2 [c2 ~]*2\".tone(synth(osc('sawtooth8')).chain(vol(0.8),out())),\n \"c1*2\".tone(membrane().chain(vol(0.8),out()))\n).slow(1)","hash":"Z6fHLg-51AUc"},{"id":197,"created_at":"2022-09-22T12:10:13.836207+00:00","code":"stack(\n \"c1*2\".tone(membrane().chain(vol(0.8),out())),\n \"~ c3\".tone(noise().chain(vol(0.8),out())),\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.015)).chain(vol(0.8),out()))\n)\n","hash":"GW0d4wRtDmED"},{"id":219,"created_at":"2022-09-28T16:11:31.253189+00:00","code":"\"\".voicings()\n .superimpose(x=>x.add(perlin.range(0,.3)))\n .color(\"orange | orchid | darkseagreen\".fast(3))\n .add(\"<0 2>/8\")\n .note().s('sawtooth')\n .attack(.1).decay(.05).sustain(.2)\n .segment(\"<6@3 3>\")\n .cutoff(saw.range(500,2000).slow(16))\n .gain(isaw)\n .out()\n .pianoroll({ vertical:1, fold:1, smear:0 })","hash":"ddiSv-lz2_cp"},{"id":198,"created_at":"2022-09-22T17:02:04.116881+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"iliL_rgeboIg"},{"id":199,"created_at":"2022-09-22T18:47:54.868449+00:00","code":"\"42\".segment(32).add(sine.range(0,12).slow(8)).note()\n .attack(0).release(0).s('triangle').out()","hash":"IVv5q7W4BDiN"},{"id":200,"created_at":"2022-09-22T18:50:13.653446+00:00","code":"\"50\".segment(32).add(sine.range(0,12).slow(4)).note()\n .attack(0).release(0).s('triangle').out()","hash":"N6kOKngern0Y"},{"id":201,"created_at":"2022-09-22T18:57:27.613815+00:00","code":"\"42\".segment(16).add(rand.range(0,12).slow(8)).note()\n .attack(0).release(0).s('triangle').out()","hash":"wIjKrvTVPfgZ"},{"id":202,"created_at":"2022-09-22T20:39:36.833517+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\n\nconst maj1 = \"[0 4 7 4]\"\nconst maj2 = \"[0 4 7]*2\"\nconst maj4 = \"[0 4 7 12]*7\"\nconst imaj1 = \"[-5 0 4]\"\nconst imaj2 = \"[-5 0 4]*2\"\nconst iimaj2 = \"[-8 -5 0]*2\"\nconst imaj3 = \"[-5 0 4]*3\"\nconst imaj4 = \"[-5 0 4]*4\"\nconst min1 = \"[0 3 7]\"\n\nstack(\n \n timeCat([2,imaj2.add(\"a3\")],[2,maj2.add(\"e3\")],\n [1,imaj1.add(\"a3\")],[1,min1.add(\"f#3\")],[2,imaj2.add(\"b3\")],[2,maj2.add(\"e3\")],\n [1,imaj1.add(\"a3\")],[1,\"~\"],[4,maj4.add(\"f#3\")],\n [2,imaj1.add(\"a3\")],[1,\"~\"],[4,maj4.add(\"f#3\")], [2,\"~\"])\n .velocity(\"[.2@4 .22 .23 .24 .25 .2@3 .4@4 .2@3 .4@6]\")\n .slow(2)\n .tone(kalimba)\n \n)\n .slow(6).pianoroll()","hash":"iqZ-ex573FFd"},{"id":203,"created_at":"2022-09-23T01:28:49.684702+00:00","code":"note(\"db5 [[<[b5 eb5] [b5,eb5]> ] ] [d5 ] [ab5,[],]\"\n .off(0, x=>x.rev().fast(\"1\").transpose(\"<7 -14>\"))\n )\n .rev()\n .fast(\"0.25\")\n // .transpose(\"0 1\")\n .s(\"\")\n .out()","hash":"0nlMXAIzgsdw"},{"id":204,"created_at":"2022-09-23T10:35:55.739979+00:00","code":"samples({\n p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3',\n})\n\ns(\"p\")\n .loopAt(32,1)\n .chop(128)\n .ply(2)\n .jux(rev)\n .shape(.4)\n .decay(.1)\n .sustain(.4)\n .out()","hash":"-4PvWekokc4W"},{"id":205,"created_at":"2022-09-23T15:33:41.821479+00:00","code":"note(\"db5 [[<[b5 eb5] [b5,eb5]> ] ] [d5 ] [ab5,[],]\"\n .chunk(4, x=>x.fast(1.5).add(\"5 -9\"))\n .slow(1.1)\n )\n .cat(\n note(\"db5 [[<[b5 eb5] [b5,eb5]> ] ] [d5 ] [ab5,[],]\"\n .chunk(4, x=>x.slow(1.5).add(\"9 -5\"))\n .fast(1.1)\n .rev()\n )\n )\n .fast(\"0.25\")\n // .transpose(\"0 1\")\n .s(\"[piano]\")\n .out()","hash":"norqcTA-uOs0"},{"id":206,"created_at":"2022-09-23T18:28:20.03322+00:00","code":"\nconst melody1=\"c3 eb3 g3 g2\"\nconst melody2=\"g3 f3 ab3 b2 ab3 f3\"\n\nn(cat(melody1,melody2)).s('sawtooth')\n .attack(0).decay(.1).sustain(.2).release(0.9).out()","hash":"WrN_Cv-hQMo0"},{"id":207,"created_at":"2022-09-23T18:31:59.033058+00:00","code":"\nconst melody1=\"c3 eb3 g3 g2 \"\nconst melody2=\"g3 f3 ab3 b2 ab3 f3 \"\n\nn(melody1 + melody2).s('sawtooth')\n ","hash":"YFbUtVxvA82E"},{"id":208,"created_at":"2022-09-23T18:52:39.661234+00:00","code":"\nconst melody1=[2,\"c3 \"]\nconst melody2=[6,\"g3 f3 ab3 b2 ab3 f3\"]\nconst melody3=[3,\"eb3 f3 g3\"]\n\nn(timeCat(melody1,melody2,melody1,melody3)).s('sawtooth').attack(0.1).decay(0.1).sustain(0.4).release(1)\n.slow(3)\n ","hash":"SHdla152eDum"},{"id":209,"created_at":"2022-09-23T18:52:51.599247+00:00","code":"\nconst melody1='c3 eb3 g3 g2 '\nconst melody2='g3 f3 ab3 b2 ab3 f3 '\n\nmini(melody1 + melody2).n().s('sawtooth')\n ","hash":"Jk_4KtRME5zL"},{"id":212,"created_at":"2022-09-24T22:37:52.29314+00:00","code":"stack(\n s(\"bd \")\n .delay(.5)\n .delaytime(.33)\n .delayfeedback(.6),\n s(\"hh*2\")\n .delay(.8)\n .delaytime(.08)\n .delayfeedback(.7)\n .orbit(2)\n).out()","hash":"QJdSFHrNzFlO"},{"id":213,"created_at":"2022-09-24T22:39:00.918817+00:00","code":"stack(\n s(\"bd \")\n .delay(.5)\n .delaytime(.33)\n .delayfeedback(.6),\n s(\"hh*2\")\n .delay(.8)\n .delaytime(.08)\n .delayfeedback(.7)\n .orbit(2)\n).sometimes(x=>x.speed(\"-1\")).out()","hash":"Nkv2L01eF62W"},{"id":214,"created_at":"2022-09-24T22:46:56.820568+00:00","code":"stack(\n s(\"bd \")\n .delay(\"<0 .5>\")\n .delaytime(\".16 | .33\")\n .delayfeedback(\".6 | .8\")\n).sometimes(x=>x.speed(\"-1\")).out()","hash":"fWCYi76JTGuA"},{"id":215,"created_at":"2022-09-25T14:33:05.944043+00:00","code":"stack(\n \"c1*2\".tone(membrane().chain(vol(0.8),out())),\n \"~ c3\".tone(noise().chain(vol(0.8),out())),\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.015)).chain(vol(0.8),out()))\n)\n","hash":"yJ-qOjgrjkMk"},{"id":216,"created_at":"2022-09-25T14:51:05.640729+00:00","code":"note(cat(\n stack(g3,b3,e4)*6,\n stack(a3,c3,e4)*10,\n stack(b3,d3,fs4)*12,\n stack([b3,e4,g4])*7\n)).s(\"sawtooth triangle triangle\")\n .cutoff(\"<4000 2000 1000 500 1000 2000>\")\n .crush(\"<16 8 7>\")\n .out()","hash":"UPVdAQhVNgbc"},{"id":217,"created_at":"2022-09-26T18:22:25.575795+00:00","code":"samples({\n \"gtr\": 'gtr/0001_cleanC.wav',\n}, 'github:tidalcycles/Dirt-Samples/master/');\nnote(\"db5 [[<[b5 eb5] [b5,eb5]> ] ] [d5 ] <[ab5,[],] [ab3 e7 c6]>\"\n .chunk(4, x=>x.fast(1.5).add(\"-24 -12\"))\n .every(2, x=>x.chunk(8, x=>x.slow(5.5).add(\"12 -12\")).rev())\n .sometimesBy(.4, x=>x.add(\"12\"))\n .every(3, x=>x.add(\"<-7 0 3 14>\"))\n )\n .fast(\"0.125 0.25\")\n .s(\"piano\")\n .cutoff('500')\n // .stack(sine.struct(\"x*16\").mul(7).round().scale('C major'))\n .out()","hash":"WDuiXaMhRRx5"},{"id":211,"created_at":"2022-09-23T21:55:34.405544+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav', 'bd/BT7A0D7.wav'],\n birds: ['birds/001_10.wav','birds/003_3.wav','birds/005_5.wav'],\n breaks125: 'breaks125/015_sdstckbr.wav',\n hh: ['hh/000_hh3closedhh.wav','hh27/008_hh27perc1.wav','hh/002_hh3hit1.wav'],\n \"gtr\": 'gtr/0001_cleanC.wav',\n}, 'github:tidalcycles/Dirt-Samples/master/');\ns(\"[bd birds [misc ht,bd] breaks125]/4.5,hh lt hh bd\").note(\"[44 30 51]/2.4\").n(\"[0 1 2 3]/2.75\")//\n .cut(\"[1 0 1 0 2 2 1 2 2]/1.75\")\n .attack(\"[.01 0.05 0]/1.2\").decay(\".1 0.01 0.9\").sustain(\".2 0.6\").release(\"[.5 1 0.1]/2.6\")\n // .shape(\"0.2\")\n .pan(\"[.5 1 .5 0]/0.75\")\n .iterBack(4)\n .echoWith(3, \"[2.125 2.5]/3\", (p,n) => p.add(n + 4).rev().release(2))\n // .coarse(\"1\")\n // .shape(1)\n .out()","hash":"o5LLePbx8kiQ"},{"id":221,"created_at":"2022-09-29T18:38:57.572257+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"IPOyuRRkZaNr"},{"id":222,"created_at":"2022-10-01T09:49:32.918623+00:00","code":"const chords = \"\"\nconst roots = chords.rootNotes(2)\n\n\nstack(\n chords.voicings(['F4','F5','F6','F8'])\n .struct(\n `x ~ x x|x ~ ~ x ~ x` ), //` x@2 | ~ x | ~ x ~ x x? ~ ~ x@3 ~ x | x? ~ ~ x ~ x@3`),\n roots\n .struct(\n `x(3,12)`\n )\n).slow(0.5)\n .note().piano().out();\n \n //.pianoroll().note().piano().out();","hash":"fGbP7VOtCWWU"},{"id":223,"created_at":"2022-10-01T10:03:38.40993+00:00","code":"const chords = \"\"\nconst roots = chords.rootNotes(2)\n\n\nstack(\n chords.voicings()\n .struct(\n `x ~ x x|x ~ ~ x ~ x` ).slow(6), //` x@2 | ~ x | ~ x ~ x x? ~ ~ x@3 ~ x | x? ~ ~ x ~ x@3`),\n roots\n .struct(\n `x(1,4) | x(2,8)`\n )\n).slow(0.5)\n .note().piano().out();\n \n //.pianoroll().note().piano().out();","hash":"4YKibw76FrRb"},{"id":224,"created_at":"2022-10-01T12:33:23.714652+00:00","code":"const chords = \"\"\nconst roots = chords.rootNotes(2)\n\n\nstack(\n chords.voicings()\n .struct(\n `x x x [x x]| x ~ x x` ).slow(4), //` x@2 | ~ x | ~ x ~ x x? ~ ~ x@3 ~ x | x? ~ ~ x ~ x@3`),\n roots\n .struct(\n `x(1,4) | x(4,8)`\n ).slow(2)\n).slow(0.5)\n .note().piano().out();\n \n //.pianoroll().note().piano().out();","hash":"7UmR7rJMSvWq"},{"id":225,"created_at":"2022-10-01T12:55:39.978417+00:00","code":"`C5 f5 f5 [g5 a5][bb5 g5] a5 [g5 a5]bb5 a5 [g5 f5] g5 [f5]@2 [a5 bb5] [c6]@2 [d6] [c6]@2,\n[c3][g3]`\n\n .slow(8).note().piano().out()\n","hash":"N0a4wkk96WWE"},{"id":226,"created_at":"2022-10-02T07:10:22.771855+00:00","code":"n(\n \"a4 [a3 c3] a3 c3\"\n .sub(\"<7 12 5 12>\".slow(2))\n .off(1/4,x=>x.add(7))\n .off(1/8,x=>x.add(12))\n)\n .slow(2)\n .legato(sine.range(0.3, 2).slow(28))\n .s(\"sawtooth square\".fast(2))\n .cutoff(cosine.range(500,4000).slow(16))\n .out()","hash":"s8HiRvW_Rngj"},{"id":227,"created_at":"2022-10-02T16:05:55.819171+00:00","code":"// theme from \"The Breakfast Line\" (By Tim Smith of Cardiacs)\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst melody =`[\n c#6@2 f5 c6@3 a#5 a5@2 g5@3 c#5 e5@2 d#5@2 f#5 a5@3 a6@3\n a5 g5 f5 d#5 c#5 b4 a5@3 a5@3 f5 g5 a5 a#5 g#5 g5 f5 g5 a5 b5 d5 g5 \n c#5@2 b4 f5@3 c#5 d#5 f5 g5 c#5@2 c5@3 c#5@3 c#5@6\n c#5 g#5 g5 a#4 f5 d#5 c#5 c5 g#5 c#5 c5 b4 c#5@2 b4 a5@3 c#5 b4@2 a5@6 \n b5 g5@2 e5 a5 b5 b5@6 b5 a#5 g5 a5@3 b5 g5 d5 c#5 a5@2 b5 g5 d#5 c#5 a5@2\n g5@2 d#5 f5 d#5 c#5 b4 a4 g4 a4 b4 c#5 d#5 f5 g5 ]`.legato(0.93)\nstack( \n // melody \n melody.transpose(-12).n().s('Overdriven Guitar: Guitar').gain(0.20).out().rev(), \n melody.n().s('Overdriven Guitar: Guitar').gain(0.10).out().rev(), \n // chords\n `[C#4 D#4 F4 G4 A3 B3]!8`.add(imaj)\n .n().s('Choir Aahs: Ensemble').gain(0.25).out().rev(),\n // bass\n `[C#2 D#2 C2 D2 A1 B1]!8`.legato(0.90)\n .n().s('Electric Bass (finger): Bass').gain(0.3).out().rev(), \n // drums\n s(\"[bd ~ bd sn ~ bd,hh*6]!23 [sn*6,hh*6]\").gain(0.25).out().rev()\n).slow(38)\n ","hash":"Z1ywkDoR6Tca"},{"id":228,"created_at":"2022-10-02T19:17:12.25556+00:00","code":"// BIG SHIP THEME - (Cardiacs)\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst iimaj = \"[0,-8,-5]\"\nconst min = \"[0,3,7]\"\nconst imin = \"[0,3,-5]\"\nconst iimin = \"[0,-9,-5]\"\nstack(\n // NON-VOICED VERSION\n timeCat(\n [1,min.add(\"a4\")],[1,min.add(\"a4\")],[1,maj.add(\"d5\")],[1,maj.add(\"f4\")],[1,min.add(\"a4\")],[2,maj.add(\"d5\")],\n [1,min.add(\"a4\")],[1,min.add(\"a4\")],[1,maj.add(\"a#4\")],[1,min.add(\"a4\")],[2,maj.add(\"e4\")],\n [1,maj.add(\"c5\")],[1,maj.add(\"f4\")],[1,min.add(\"a4\")],[4,maj.add(\"d5\")]\n ).n().s('Church Organ: Organ').gain(0.2).out()\n \n \n // VOICED VERSION\n /*\n timeCat(\n [1,min.add(\"a4\")],[1,imin.add(\"a4\")],[1,iimaj.add(\"d5\")],[1,maj.add(\"f4\")],[1,imin.add(\"a4\")],[2,iimaj.add(\"d5\")],\n [1,min.add(\"a4\")],[1,imin.add(\"a4\")],[1,imaj.add(\"a#4\")],[1,imin.add(\"a4\")],[2,maj.add(\"e4\")],\n [1,iimaj.add(\"c5\")],[1,maj.add(\"f4\")],[1,imin.add(\"a4\")],[4,iimaj.add(\"d5\")]\n ).n().s('Church Organ: Organ').gain(0.2).out(),\n */\n \n ,\n s(\"[[bd bd] [cp ~ ~ cp] ,hh*4]!20\").gain(0.25).out() \n)\n .slow(20).pianoroll()","hash":"eXyJ5cvdMxIl"},{"id":229,"created_at":"2022-10-02T19:18:09.419605+00:00","code":"// BIG SHIP THEME - (Cardiacs)\nconst maj = \"[0,4,7]\"\nconst imaj = \"[0,4,-5]\"\nconst iimaj = \"[0,-8,-5]\"\nconst min = \"[0,3,7]\"\nconst imin = \"[0,3,-5]\"\nconst iimin = \"[0,-9,-5]\"\nstack(\n // NON-VOICED VERSION\n /*\n timeCat(\n [1,min.add(\"a4\")],[1,min.add(\"a4\")],[1,maj.add(\"d5\")],[1,maj.add(\"f4\")],[1,min.add(\"a4\")],[2,maj.add(\"d5\")],\n [1,min.add(\"a4\")],[1,min.add(\"a4\")],[1,maj.add(\"a#4\")],[1,min.add(\"a4\")],[2,maj.add(\"e4\")],\n [1,maj.add(\"c5\")],[1,maj.add(\"f4\")],[1,min.add(\"a4\")],[4,maj.add(\"d5\")]\n ).n().s('Church Organ: Organ').gain(0.2).out()\n */ \n // VOICED VERSION\n timeCat(\n [1,min.add(\"a4\")],[1,imin.add(\"a4\")],[1,iimaj.add(\"d5\")],[1,maj.add(\"f4\")],[1,imin.add(\"a4\")],[2,iimaj.add(\"d5\")],\n [1,min.add(\"a4\")],[1,imin.add(\"a4\")],[1,imaj.add(\"a#4\")],[1,imin.add(\"a4\")],[2,maj.add(\"e4\")],\n [1,iimaj.add(\"c5\")],[1,maj.add(\"f4\")],[1,imin.add(\"a4\")],[4,iimaj.add(\"d5\")]\n ).n().s('Church Organ: Organ').gain(0.2).out()\n \n ,s(\"[[bd bd] [cp ~ ~ cp] ,hh*4]!20\").gain(0.25).out() \n).slow(20).pianoroll()","hash":"YSgSSFCioxs0"},{"id":230,"created_at":"2022-10-03T06:54:57.974976+00:00","code":"stack(\n \"c1*2\".tone(membrane().chain(vol(0.8),out())),\n \"~ c3\".tone(noise().chain(vol(0.8),out())),\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.015)).chain(vol(0.8),out()))\n)\n","hash":"lAIAC1TOD3zB"},{"id":231,"created_at":"2022-10-05T10:39:01.1837+00:00","code":"n(\n \"a4 [a3 c3] a3 c3\"\n .sub(\"<7 12 5 12>\".slow(2))\n .off(1/4,x=>x.add(7))\n .off(1/8,x=>x.add(12))\n)\n .slow(2)\n .legato(sine.range(0.3, 2).slow(28))\n .s(\"sawtooth square\".fast(2))\n .cutoff(cosine.range(500,4000).slow(16))\n .out()","hash":"LZ-aTB2xiaZ8"},{"id":232,"created_at":"2022-10-05T22:33:35.053024+00:00","code":"backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' })\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst h = x=>x.transpose(\"<0@2 5 0 7 5 0 -5>/2\")\n\nstack(\n s(\"< sn> hh\").fast(1).gain(.14),\n \"[c2 a1 bb1 ~] ~\"\n .echo(2, 1/16, 1)\n .legato(.4)\n .slow(2)\n .layer(h)\n .note().s('square')\n .cutoff(400).decay(.12).sustain(0)\n ,\n \"[g2,[c3 eb3]]\".iter(4)\n .echoWith(4, 1/8, (x,n)=>x.transpose(n*150).velocity(Math.pow(.4,n)))\n .legato(.1)\n .layer(h).note()\n).out()\n .fast(2/3)\n .pianoroll({})","hash":"_zhepg-kT6fD"},{"id":234,"created_at":"2022-10-06T09:10:06.054531+00:00","code":"stack(\n note(\"c2 >\").s('square').attack(.1).decay(.1).sustain(.2).release(.1),\n s(\",hh*2\").fast(2).crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"1moEu58ZjMF4"},{"id":235,"created_at":"2022-10-06T09:15:51.853391+00:00","code":"stack(\n note(\"c2 >\").slow(2).s('square').attack(.1).decay(.1).sustain(.2).release(.1),\n s(\",hh*2\").fast(2).crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"1W8nlZAFzi5T"},{"id":236,"created_at":"2022-10-06T09:41:01.092404+00:00","code":"stack(\n note(\"c2 >\").slow(2).s('square').attack(.1).decay(.1).sustain(.2).release(.1),\n s(\",hh*2\").fast(2).crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"exwhYw9VYVQz"},{"id":237,"created_at":"2022-10-06T12:19:08.812397+00:00","code":"stack(\n note(\"c3!2 g3@2 e3, \").slow(2).s('sawtooth')\n .attack(.1).decay(.2).sustain(.3).release(.1).bandf(500).bandq(\"1\"),\n // s(\",hh*2\").slow(1).crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"z4zPoaRLF6Vs"},{"id":238,"created_at":"2022-10-06T12:33:27.258246+00:00","code":"stack(\n // note(\"c3!2 g3@2 e3, \").slow(2).s('sawtooth')\n // .attack(.1).decay(.2).sustain(.3).release(.1).bandf(500).bandq(\"1\"),\n s(\"bd bd bd [bd bd], hh*2 hh*4\").fast(1).every(3, x=>x.rev())\n //.crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"VzJokumWaip_"},{"id":239,"created_at":"2022-10-06T12:41:54.620683+00:00","code":"stack(\n // note(\"c3!2 g3@2 e3, \").slow(2).s('sawtooth')\n // .attack(.1).decay(.2).sustain(.3).release(.1).bandf(500).bandq(\"1\"),\n s(\"bd bd@2 bd [bd bd], hh*2 hh*4\").fast(1)\n .every(3, x=>x.rev())\n .every(3, x=>x.cutoff(\"4000 2000 1000 500 200 100\"))\n .every(1, x=>x.resonance(\"0 10 20 30\"))\n //.crush((\"<16 8 7 6 5 4 3 2>\").fast(4))\n).out()","hash":"gb4pffOZyATk"},{"id":240,"created_at":"2022-10-07T00:06:10.737895+00:00","code":"\"0 1 1 2 3 5 8 13\"\n.scale(seq('C2 major', 'C2 minor').slow(4))\n.color(\" [white | gray]\")\n.pianoroll({ vertical:1, fold:1, smear:0,background:'black' })","hash":"C6vcsMx8UtjJ"},{"id":241,"created_at":"2022-10-07T04:46:50.108192+00:00","code":"backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' })\n\nsamples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nconst h = x=>x.transpose(\"<0@2 5 0 7 5 0 -5>/2\")\n\nstack(\n s(\"< sn> hh\").fast(2).gain(.7),\n \"[c2 a1 bb1 ~] ~\"\n .echo(2, 1/16, 1)\n .legato(.4)\n .slow(2)\n .layer(h)\n .note().s('square')\n .cutoff(400).decay(.12).sustain(0)\n ,\n \"[g2,[c3 eb3]]\".iter(4)\n .echoWith(4, 1/8, (x,n)=>x.transpose(n*12).velocity(Math.pow(.4,n)))\n .legato(.1)\n .layer(h).note()\n).out()\n .fast(2/3)\n .pianoroll({})","hash":"jyNjgy-bZ0X7"},{"id":242,"created_at":"2022-10-07T18:26:30.694005+00:00","code":"stack(\n note(\"c1\").slow(2).s('sawtooth').\n attack(.1).decay(.2).sustain(.3).release(.1).bandf(500).bandq(\"1\").gain(3),\n s(\"bd@2 bd bd!2 bd*2\").slow(2)\n .every(4, x=>x.rev())\n).out()","hash":"MPVT_kG6Yni7"},{"id":243,"created_at":"2022-10-07T20:00:29.896851+00:00","code":"n(\n \"a4 [a#3 c3] a3 cb3\"\n .sub(\"<7 3>/2\")\n .off(1/8, add(\"21\"))\n .off(1/4, add(\"3\"))\n)\n .legato(.10)\n .slow(1)\n .s(\"sawtooth square\")\n .cutoff(\"<2000 1000 500 300>\")\n .out()\n","hash":"Ul_u7MyAGKXb"},{"id":244,"created_at":"2022-10-07T20:02:44.300956+00:00","code":"n(\n \"a4 [a#3 c3] a3 cb3\"\n .sub(\"<7 3>/2\")\n .off(1/8, add(\"21\"))\n .off(1/4, add(\"3\"))\n)\n .legato(.15)\n .slow(1)\n .s(\"sine\")\n .cutoff(\"<1500 1000 500 300>\")\n .out()\n","hash":"6geTqvPlUvv4"},{"id":245,"created_at":"2022-10-08T00:37:52.294005+00:00","code":"const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());\nconst snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());\nconst s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());\nstack(\n stack(\n \"0 1 4 [3!2 5]\".layer(\n // chords\n x=>x.add(\"0,3\").duration(\"0.05!3 0.02\"),\n // bass\n x=>x.add(\"-8\").struct(\"x*8\").duration(0.1) \n ),\n // melody\n \"12 11*3 12 ~\".duration(0.005) \n )\n .add(\"<0 1>\")\n .tune(\"jemblung2\")\n //.mul(22/5).round().xen(\"22edo\")\n //.mul(12/5).round().xen(\"12edo\")\n .tone(s),\n // kick\n \"[c2 ~]*2\".duration(0.05).tone(membrane().chain(out())), \n // snare\n \"[~ c1]*2\".early(0.001).tone(snare),\n // hihat\n \"c2*8\".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),\n).slow(3)","hash":"5-NpsIAJqGJX"},{"id":248,"created_at":"2022-10-08T13:16:52.512562+00:00","code":"\"<0 2 4 8 ~ 4 ~ 2 0!3 3 6 ~!5>*4\"\n .superimpose(x=>x.add(2))\n .scale('C minor').note().out()","hash":"FavmsfMCEJh9"},{"id":250,"created_at":"2022-10-09T07:02:03.84216+00:00","code":"const delay = new FeedbackDelay(1/12, .4).chain(vol(0.3), out());\n\nconst drums = await players({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/')\n\nconst rhodes = await sampler({\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n \" \"\n .tone(drums.chain(out())),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .tone(rhodes.chain(vol(0.5).connect(delay), out())),\n //\"]>\".slow(2).voicings().struct(\"~ x\").legato(.25).tone(rhodes),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2)\n .tone(bass),\n).fast(3/2)","hash":"JzQ_9QyLrKhy"},{"id":251,"created_at":"2022-10-15T14:48:24.331421+00:00","code":"stack(\"\".m.voicings(), ''.m)\n .midi('Midi Through Port-0' | 'TiMidity port 0' | 'TiMidity port 1' | 'TiMidity port 2' | 'TiMidity port 3')","hash":"H9-8RjyncjzI"},{"id":252,"created_at":"2022-10-18T18:17:58.804856+00:00","code":"\"c3 eb3 g3\".add(\"<0 2 0 -2 5>\")","hash":"CG9iByv5zHY-"},{"id":253,"created_at":"2022-10-18T18:42:01.436719+00:00","code":"\"c3 eb3 g3 c2\".add(\"<0 2 0 -2 5>\")","hash":"FgUTcaG_XKGK"},{"id":254,"created_at":"2022-10-19T04:54:32.526246+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"CmY3ebvIfYEG"},{"id":255,"created_at":"2022-10-19T19:20:59.256279+00:00","code":"const delay = new FeedbackDelay(1/3, .8).chain(vol(.2), out());\nlet bell = await sampler({\n C6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3'\n})\nconst bass = await sampler({\n d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3'\n});\nbell = bell.chain(vol(0.6).connect(delay),out());\n\n\"0\".euclidLegato(3,8)\n .echo(3, 1/16, .5)\n .add(rand.range(0,12))\n .velocity(rand.range(.5,1))\n .legato(rand.range(.4,3))\n .scale(cat('D minor pentatonic')).tone(bell)\n .stack(\"\".euclidLegato(6,8,1).tone(bass.toDestination()))\n .slow(6)\n .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})","hash":"yNx4koGpPrSH"},{"id":256,"created_at":"2022-10-19T19:21:32.488574+00:00","code":"\"<0 2 [4 6](3,4,1) 3*2>\"\n.scale('D minor')\n.color('salmon')\n.off(1/4, x=>x.scaleTranspose(2).color('green'))\n.off(1/2, x=>x.scaleTranspose(6).color('steelblue'))\n.legato(.5)\n.echo(4, 1/8, .5)\n.note().piano().out()\n.pianoroll()","hash":"oBtcxYrbZlNG"},{"id":257,"created_at":"2022-10-20T00:32:19.539706+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n perc: ['perc/002_perc2.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\n\n\"C^7 Am7 Dm7 G7\".slow(2).voicings()\n .stack(\"0@6 [<1 2> <2 0> 1]@2\".scale('C5 major'))\n .n().slow(4)\n .s('0040_FluidR3_GM_sf2_file')\n .color('steelblue')\n .stack(\n \"<-7 ~@2 [~@2 -7] -9 ~@2 [~@2 -9] -10!2 ~ [~@2 -10] -5 ~ [-3 -2 -10]@2>*2\".scale('C3 major')\n .n().s('sawtooth').color('brown')\n )\n .attack(0.05).decay(.1).sustain(.7)\n .cutoff(perlin.range(800,2000))\n .gain(.3)\n .stack(\n s(\" sd,hh*3,~@5 \")\n .speed(perlin.range(.9,1.1))\n .n(3).color('gray')\n ).slow(3/2)\n //.pianoroll({autorange:1,vertical:1,fold:0})\n .out()","hash":"eCz4nyUk3TnN"},{"id":259,"created_at":"2022-10-22T03:34:18.383322+00:00","code":"samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})\nstack(\n stack(\n \"c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>\".legato(\".5 1\".fast(2)).velocity(.8),\n \"0 ~\".scale('c4 whole tone')\n .euclidLegato(3,8).slow(2).mask(\"x ~\")\n .stutWith(8, 1/16, (x,n)=>x.scaleTranspose(n).velocity(Math.pow(.7,n)))\n .scaleTranspose(\"<0 1 2 3 4 3 2 1>\")\n .fast(2)\n .velocity(.7)\n .legato(.5)\n .stut(3, .5, 1/8)\n ).transpose(-1).note().piano(),\n s(\"mad\").slow(2)\n).cpm(78).slow(4)\n .out()\n .pianoroll()\n","hash":"J3FcQgOeZ3cV"},{"id":260,"created_at":"2022-10-22T12:26:24.413978+00:00","code":"stack(\n // melody\n `[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] \n [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]\n [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]\n [B3@2 D4] [A4@2 G4] D5@2 \n [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]\n [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]`,\n // bass\n `[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]`\n).transpose(12).slow(48).tone(\n new PolySynth().chain(\n new Gain(0.3), \n new Chorus(2, 2.5, 0.5).start(), \n new Freeverb(), \n getDestination())\n)","hash":"tTlyA1JzHklU"},{"id":261,"created_at":"2022-10-22T16:40:24.481644+00:00","code":"samples({\n bd: 'bd/BT0AADA.wav',\n sd: 'sd/rytm-01-classic.wav',\n hh: 'hh27/000_hh27closedhh.wav',\n oh: 'hh27/007_hh3openhh.wav',\n}, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/');\n\nstack(\n cat(\n note(\"[c2(2, 8), c3(3, 8)] [e2(4, 5), g3(3, 2)]\"),\n note(\"[g2(2, 8), a#2(3, 8)] [e2(2, 5), g2(3, 2)]\")\n ).slow(2).s('sawtooth').attack(.1).release(.3).vowel(\" \").out(),\n cat(\n note(\" [] ~ [(3,8,4) ]\".transpose(\"<0 5 3> [<0 12> <5 12>] 3 7\".slow(5)))\n ).slow(3).s('sawtooth').attack(0).release(.3).cutoff(\"<200 100> <300 100 200 400>\").fast(2).out(),\n cat(\n note(\"c2(3, 2, 8) c#2(3, 2, 7)\")\n )\n .s(\"sd bd sd bd bd\").degradeBy(.3).out(),\n cat(\n note(\"c2(2, 3, 3)\"),\n note(\"c2(1, 3, 3)\")\n ).fast(4)\n .s(\"hh oh\").sometimesBy(.4, x=>x.speed(\"0.5\")).out()\n)","hash":"hIhmX2R9gtwL"},{"id":262,"created_at":"2022-10-22T22:19:47.056704+00:00","code":"const t = x => x.scaleTranspose(\"<0 2 4 3>/4\").transpose(-2)\nconst s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))\nconst delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());\nconst chorus = new Chorus(1,2.5,0.5).start();\nstack(\n // melody\n \"<<10 7> <8 3>>/4\".struct(\"x*3\").apply(s)\n .scaleTranspose(\"<0 3 2> <1 4 3>\")\n .superimpose(scaleTranspose(2).early(1/8))\n .apply(t).tone(polysynth().set({\n ...osc('triangle4'),\n ...adsr(0,.08,0)\n }).chain(vol(0.2).connect(delay),chorus,out())).mask(\"<~@3 x>/16\".early(1/8)),\n // pad\n \"[1,3]/4\".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({\n ...osc('square2'),\n ...adsr(0.1,.4,0.8)\n }).chain(vol(0.2),chorus,out())).mask(\"<~ x>/32\"),\n // xylophone\n \"c3,g3,c4\".struct(\"\").fast(\"<1 <2!3 [4 8]>>\").apply(s).scaleTranspose(\"<0 <1 [2 [3 <4 5>]]>>\").apply(t).tone(polysynth().set({\n ...osc('sawtooth4'),\n ...adsr(0,.1,0)\n }).chain(vol(0.4).connect(delay),out())).mask(\"/16\".early(1/8)),\n // bass\n \"c2 [c2 ~]*2\".scale('C hirajoshi').apply(t).tone(synth({\n ...osc('sawtooth6'),\n ...adsr(0,.03,.4,.1)\n }).chain(vol(0.4),out())),\n // kick\n \"*2\".tone(membrane().chain(vol(0.8),out())),\n // snare\n \"~ \".tone(noise().chain(vol(0.8),out())),\n // hihat\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))\n).slow(1)\n// strudel disable-highlighting","hash":"NIL21RJTmuAa"},{"id":263,"created_at":"2022-10-23T20:15:19.203301+00:00","code":"stack(\n // melody\n `[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3] \n [B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]\n [B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]\n [B3@2 D4] [A4@2 G4] D5@2 \n [D5@2 [C5 B4]] [[C5 B4] G4@2] [C5@2 [B4 A4]] [[B4 A4] E4@2]\n [D5@2 [C5 B4]] [[C5 B4] G4 C5] [G5] [~ ~ B3]`,\n // bass\n `[[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[C2 G2] E3@2] [[C2 G2] F#3@2] [[C2 G2] E3@2] [[C2 G2] F#3@2]\n [[B1 D3] G3@2] [[Bb1 Db3] G3@2] [[A1 C3] G3@2] [[D2 C3] F#3@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[D2 A2] C3@2] [[C2 G2] B2@2]\n [[F2 C3] E3@2] [[E2 B2] D3@2] [[Eb2 Bb2] Db3@2] [[D2 A2] C3 [F3,G2]]`\n).transpose(12).slow(48).tone(\n new PolySynth().chain(\n new Gain(0.3), \n new Chorus(2, 2.5, 0.5).start(), \n new Freeverb(), \n getDestination())\n)","hash":"CGh4oLKu9tOp"},{"id":264,"created_at":"2022-10-23T21:30:29.104084+00:00","code":"stack(\n freq(\"55 [110,165] 110 [220,275]\".mul(\"<1 <3/4 2/3>>\").struct(\"x(3,8)\").layer(x=>x.mul(\"1.006,.995\"))),\n freq(\"440(5,8)\".legato(.18).mul(\"<1 3/4 2 2/3>\")).gain(perlin.range(.2,.8))\n).s(\"/2\")\n .onTrigger((t,hap,ct)=>{\n const ac = Tone.getContext().rawContext;\n t = ac.currentTime + t - ct;\n const { freq, s, gain = 1 } = hap.value;\n const master = ac.createGain();\n master.gain.value = 0.1 * gain;\n master.connect(ac.destination);\n const o = ac.createOscillator();\n o.type = s || 'triangle';\n o.frequency.value = Number(freq);\n o.connect(master);\n o.start(t);\n o.stop(t + hap.duration);\n}).stack(s(\"bd(3,8),hh*4,~ sd\").webdirt())","hash":"N486QfFJ2NvV"},{"id":265,"created_at":"2022-10-25T19:49:39.322172+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\n\nnote(\"c2 >/2\").s(\"\").vowel(\"\").gain(sine.range(.2,2).slow(16))\n .stack(\n note(\"c1 >\").s(\"sine\").shape(.7).gain(cosine.range(.4,1.6).slow(9))\n )\n .stack(\n s(\"[[hh hh]*2 [hh]*2]\").pan(cc(\"<.5 .8 .5 .2>\", \".5\", \".5\")).degradeBy(0.08).often(x=>x.speed(\"0.9 1.1\")).gain([.2,.5,.6,.4]) ).stack(\n s(\"[bd@2 bd@2 bd]/2\") ).stack(\n s(\"[misc misc]/4\").n(\"13\") )\n .fast(1.1)\n .delay(.1)\n .out()","hash":"Njas64Vf03LO"},{"id":266,"created_at":"2022-10-25T20:06:35.487506+00:00","code":"const drums = await players({\n bd: 'bd/BT0A0D0.wav',\n sn: 'sn/ST0T0S3.wav',\n hh: 'hh/000_hh3closedhh.wav'\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\n\nstack(\n \"\",\n \"hh*4\",\n \"~ \"\n).tone(drums.chain(out()))\n","hash":"-qcqwVsJXv8J"},{"id":267,"created_at":"2022-10-25T20:07:36.84852+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\n\nnote(\"c2 >/2\").s(\"\").vowel(\"\").gain(perlin.range(.2,2).slow(16))\n .stack(\n note(\"c1 >\").s(\"sine\").shape(.7).gain(perlin.range(.4,1.6).slow(9))\n )\n .stack(\n s(\"[[hh hh]*2 [hh]*2]\").pan(perlin.range(0,1)).degradeBy(0.08).often(x=>x.speed(\"0.9 1.1\")).gain([.2,.5,.6,.4]) ).stack(\n s(\"[bd:4@2 bd:4@2 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\") ).stack(\n s(\"[misc]/4\").n(\"13\") )\n .fast(1.1)\n .delay(.1)\n .out()","hash":"Q2WQMrJVFb46"},{"id":268,"created_at":"2022-10-25T20:21:05.405473+00:00","code":"stack(\n \"c1*2\".tone(membrane().chain(vol(0.8),out())),\n \"~ c3\".tone(noise().chain(vol(0.8),out())),\n \"c3*4\".transpose(\"[-24 0]*2\").tone(metal(adsr(0,.015)).chain(vol(0.8),out()))\n)\n","hash":"IV4pDyaLUMB0"},{"id":269,"created_at":"2022-10-25T21:03:15.282811+00:00","code":"backgroundImage('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXR0rKqW3VwY%2Fmaxresdefault.jpg&f=1&nofb=1', \n{ className:'darken', style:'background-size:cover'})\nstack(\n \"[g3,bb3,d4] [f3,a3,c4] [c3,e3,g3]@2\".slow(2).late(.1),\n cat(\n 'Baker man',\n 'is baking bread',\n 'Baker man',\n 'is baking bread',\n 'Sagabona',\n 'kunjani wena',\n 'Sagabona',\n 'kunjani wena',\n 'The night train, is coming',\n 'got to keep on running',\n 'The night train, is coming',\n 'got to keep on running',\n ).speak(\"en zu en\".slow(12), \"<0 2 3 4 5 6>\".slow(2)),\n).slow(4)","hash":"XQ_uhshhjEYw"},{"id":270,"created_at":"2022-10-27T00:16:11.505229+00:00","code":"backgroundImage(\n 'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg',\n {style:'background-size:cover'})\n \n\"0,2,[7 6]\"\n .add(\"<0 1 2 3 4 5 7 8>\")\n .scale('C bebop major')\n .transpose(\"<0 1 2 1>/8\")\n .slow(2)\n .note().piano().out()\n","hash":"XDCsI7uPtnav"},{"id":271,"created_at":"2022-10-27T08:08:10.650623+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\n\nnote(\"c2 >/2\").s(\"\").vowel(\"\").gain(perlin.range(.2,2).slow(16))\n .stack(\n note(\"c1 >\").s(\"sine\").shape(.7).gain(perlin.range(.4,1.6).slow(9))\n )\n .stack(\n s(\"[[hh hh]*2 [hh]*2]\").pan(perlin.range(0,1)).degradeBy(0.08).often(x=>x.speed(\"0.9 1.1\")).gain([.2,.5,.6,.4]) ).stack(\n s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\") ).stack(\n s(\"[~@3 misc]/4\").n(\"13\") )\n .fast(1.1)\n .delay(.1)\n .out()","hash":"2t_PSStoDUhV"},{"id":272,"created_at":"2022-10-27T18:07:18.311401+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\n\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4)\n .stack(\n note(\"[c4 >]/2\").transpose(0).s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n note(\"c1 >\").transpose(-12).degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n //note(\"c3 >/2\").transpose(7).s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n //note(\"[c2 >/2]/3\").transpose(12).s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(1.2)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()","hash":"J4419vLymh08"},{"id":273,"created_at":"2022-10-27T21:25:31.085012+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\n\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4)\n .stack(\n note(\"[c4 >]/2\").transpose(0).s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n note(\"c1 >\").transpose(-12).degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n //note(\"c3 >/2\").transpose(7).s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n //note(\"[c2 >/2]/3\").transpose(12).s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(.8)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()","hash":"hGG0rEr1zC3A"},{"id":274,"created_at":"2022-10-28T14:32:09.078571+00:00","code":"const scale = cat('C3 dorian','Bb2 major').slow(4);\nstack(\n \"2*4\".add(12).scale(scale)\n .off(1/8,x=>x.scaleTranspose(\"2\")).fast(2)\n .scaleTranspose(\"<0 1 2 1>\").hush(),\n \"<0 1 2 3>(3,8,2)\"\n .scale(scale)\n .off(1/4,x=>x.scaleTranspose(\"2,4\")),\n \"<0 4>(5,8)\".scale(scale).transpose(-12)\n)\n .velocity(\".6 .7\".fast(4))\n .legato(\"2\")\n .scale(scale)\n.scaleTranspose(\"<0>\".slow(4))\n.transpose(5)\n.note().piano().out()\n.velocity(.8)\n.slow(2)\n.pianoroll({maxMidi:100,minMidi:20})","hash":"ahkvgPdMeapI"},{"id":275,"created_at":"2022-10-28T15:22:48.00853+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\nnote(\"<[c4,e4,g4] [f4,a4,d4] ~ ~ >\").s(\"piano\")\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n ) \n .gain(.5).out()\n/*\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4)\n .stack(\n note(\"[c4 >]/2\").s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n note(\"c1 >\").degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n note(\"c3 >/2\").s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n note(\"[c2 >/2]/3\").s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(1.2)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()*/","hash":"um_AAxJMJr5U"},{"id":276,"created_at":"2022-10-28T15:47:08.283377+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\nnote(\"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\").s(\"\").gain(sine.slow(8).range(0,1))\n .stack(\n note(\"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\").s(\"\").vowel(\"\").gain(cosine.slow(8).range(1,0))\n )\n .stack(\n s(\"*2\").pan(perlin.range(0,1)).often(x=>x.speed(\"<.9 1.1>\")).gain(rand.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n s(\"*8\").pan(rand.range(0,1)).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n ).fast(.8)\n .gain(.5).out()\n/*\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4)\n .stack(\n note(\"[c4 >]/2\").s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n note(\"c1 >\").degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n note(\"c3 >/2\").s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n note(\"[c2 >/2]/3\").s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(1.2)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()*/","hash":"UxSJbzL1d05O"},{"id":277,"created_at":"2022-10-28T15:52:33.545403+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\nnote(\"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\").s(\"\").gain(sine.slow(8).range(0,1))\n .stack(\n note(\"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\").s(\"\").vowel(\"\").gain(cosine.slow(8).range(0,1))\n )\n .stack(\n s(\"*2\").pan(perlin.range(0,1)).often(x=>x.speed(\"<.9 1.1>\")).gain(rand.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n s(\"*8\").pan(rand.range(0,1)).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n ).fast(.8)\n .gain(.5).out()\n/*\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4) \n .stack(\n note(\"[c4 >]/2\").s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n note(\"c1 >\").degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n note(\"c3 >/2\").s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n note(\"[c2 >/2]/3\").s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(1.2)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()*/","hash":"90drkbxdBr2-"},{"id":278,"created_at":"2022-10-28T19:07:09.296506+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .out()\n .slow(3/2)","hash":"aGtqNXDNRxdA"},{"id":279,"created_at":"2022-10-28T19:08:18.322641+00:00","code":"const delay = new FeedbackDelay(1/3, .5).chain(vol(.2), out())\nlet kalimba = await sampler({\n C5: 'https://freesound.org/data/previews/536/536549_11935698-lq.mp3'\n})\nkalimba = kalimba.chain(vol(0.6).connect(delay),out());\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])\n\nstack(\n \"[0 2 4 6 9 2 0 -2]*3\"\n .add(\"<0 2>/4\")\n .scale(scales)\n .struct(\"x*8\")\n .velocity(\"<.8 .3 .6>*8\")\n .slow(2)\n .tone(kalimba),\n \"\"\n .scale(scales)\n .scaleTranspose(\"[0 <2 4>]*2\")\n .struct(\"x*4\")\n .velocity(\"<.8 .5>*4\")\n .velocity(0.8)\n .slow(2)\n .tone(kalimba)\n)\n .legato(\"<.4 .8 1 1.2 1.4 1.6 1.8 2>/8\")\n .fast(1)","hash":"N3UBBhj_uwxd"},{"id":280,"created_at":"2022-10-28T19:15:47.584269+00:00","code":"const bpm = 80;\nconst lead = polysynth().set({...osc('sine3'),...adsr(.004)}).chain(vol(0.15),out())\nconst bass = fmsynth({...osc('sawtooth5'),...adsr(0.05,.6,0.8,0.1)}).chain(vol(0.6), out());\nconst s = scale(cat('F3 minor', 'Ab3 major', 'Bb3 dorian', 'C4 phrygian dominant').slow(4));\nstack(\n \"0 2\".struct(\" [x ~]\").apply(s).scaleTranspose(stack(0,2)).tone(lead),\n \"<6 7 9 7>\".struct(\"[~ [x ~]*2]*2\").apply(s).scaleTranspose(\"[0,2] [2,4]\".fast(2).every(4,rev)).tone(lead),\n\t\"-14\".struct(\"[~ x@0.8]*2\".early(0.01)).apply(s).tone(bass),\n \"c2*2\".tone(membrane().chain(vol(0.6), out())),\n \"~ c2\".tone(noise().chain(vol(0.2), out())),\n \"c4*4\".tone(metal(adsr(0,.1,0)).chain(vol(0.03), out()))\n)\n.slow(120/ bpm)","hash":"wF7a24BViyqU"},{"id":281,"created_at":"2022-10-28T20:47:17.342086+00:00","code":"let cc = chooseCycles\n\"<0 1 2 3 4 5 6 7 8 9 10 11 12 13>\"\nnote(\"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\").s(\"\").gain(sine.slow(8).range(0,1))\n .stack(\n \"<[c4,eb4,g4] [f4,ab4,d4] ~ [[c4,eb4,[a5 g4]]]>\".transpose(12).s(\"\").vowel(\"\").gain(cosine.slow(8).range(0,1))\n )\n .stack(\n s(\"*2\").pan(perlin.range(0,1)).often(x=>x.speed(\"<.9 1.1>\")).gain(rand.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n s(\"*8\").pan(rand.range(0,1)).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.1,.2)).cutoff(perlin.range(1000,10000))).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .stack(\n \"c1 >\".degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).fast(1.2)\n .gain(.5).out()\n/*\nnote(\"[c4 >]/2\").s(\"piano\").degradeBy(.4) \n .stack(\n note(\"[c4 >]/2\").s(\"/2\").vowel(\"\").gain(perlin.range(1.8,2).slow(16)).hcutoff(800)\n )\n .stack(\n \"c1 >\".degradeBy(0.3).s(\"sine\").shape(perlin.range(.3,.5)).gain(perlin.range(.3,.8))\n ).stack(\n note(\"c3 >/2\").s(\"\").vowel(\"*2\").gain(perlin.range(1.5,1.3)).pan(1).hcutoff(700)\n ).stack(\n note(\"[c2 >/2]/3\").s(\"\").vowel(\"\").gain(perlin.range(1,1.6)).pan(0).hcutoff(900)\n )\n .cutoff(perlin.range(1000,2000)).resonance(0)\n .stack(\n s(\"*8\").pan(perlin.range(0,1)).degradeBy(0.12).often(x=>x.speed(\"<0.8 .9 1.1 1.2>\")).gain(perlin.range(0.2,.4)).cutoff(100)).stack(\n // s(\"[bd:4@2 bd:4@3 bd:4]/2\") ).stack( \n s(\"[bd:7@2 ~@2 bd:7]/2\").cutoff(\"300 1000\") ).stack(\n s(\"<~@3 misc>\").n(\"<13 7>/4\").gain(.5)\n )\n .fast(1.2)\n .cutoff(perlin.range(500,2000))\n .delay(.1)\n .out()*/","hash":"h87w26zgMJ0L"},{"id":282,"created_at":"2022-10-29T16:50:15.341568+00:00","code":"samples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', \n hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',\n}, 'https://loophole-letters.vercel.app/samples/tidal/')\nconst imaj = \"[0,4,-5]\"\nconst melody =`[\n c#6@2 f5 c6@3 a#5 a5@2 g5@3 c#5 e5@2 d#5@2 f#5 a5@3 a6@3\n a5 g5 f5 d#5 c#5 b4 a5@3 a5@3 f5 g5 a5 a#5 g#5 g5 f5 g5 a5 b5 d5 g5 \n c#5@2 b4 f5@3 c#5 d#5 f5 g5 c#5@2 c5@3 c#5@3 c#5@6\n c#5 g#5 g5 a#4 f5 d#5 c#5 c5 g#5 c#5 c5 b4 c#5@2 b4 a5@3 c#5 b4@2 a5@6 \n b5 g5@2 e5 a5 b5 b5@6 b5 a#5 g5 a5@3 b5 g5 d5 c#5 a5@2 b5 g5 d#5 c#5 a5@2\n g5@2 d#5 f5 d#5 c#5 b4 a4 g4 a4 b4 c#5 d#5 f5 g5 ]`.legato(0.93)\nstack( \n melody.transpose(-12).n().s('Overdriven Guitar: Guitar').gain(0.19).rev(), \n melody.n().s('Overdriven Guitar: Guitar').gain(0.09).rev(), \n `[C#4 D#4 F4 G4 A3 B3]!8`.add(imaj).n().s('Choir Aahs: Ensemble').gain(0.25).rev(),\n `[C#2 D#2 C2 D2 A1 B1]!8`.legato(0.90).n().s('Electric Bass (finger): Bass').gain(0.3).rev(), \n s(\"[bd ~ bd sn ~ bd,hh*6]!23 [sn*6,hh*6]\").gain(0.25).rev()\n).slow(38)","hash":"fwBxQjt9aVhx"},{"id":283,"created_at":"2022-10-29T19:07:09.320134+00:00","code":"samples({ bell: {b4:'https://cdn.freesound.org/previews/339/339809_5121236-lq.mp3'}})\n\nstack(\n // bass\n note(\"[0 ~] [2 [0 2]] [4 4*2] [[4 ~] [2 ~] 0@2]\".scale('g1 dorian').superimpose(x=>x.add(.02)))\n .s('sawtooth').cutoff(200).resonance(20).gain(.15).shape(.6).release(.05),\n // perc\n s(\"[~ hh]*4\").room(\"0 0.5\".fast(2)).end(perlin.range(0.02,1)),\n s(\"mt lt ht\").struct(\"x(3,8)\").fast(2).gain(.5).room(.5).sometimes(x=>x.speed(\".5\")),\n s(\"misc:2\").speed(1).delay(.5).delaytime(1/3).gain(.4),\n // chords\n note(\"[~ Gm7] ~ [~ Dm7] ~\".voicings().superimpose(x=>x.add(.1)))\n .s('sawtooth').gain(.5)\n .cutoff(perlin.range(400,3000).slow(8))\n .decay(perlin.range(0.05,.2)).sustain(0)\n .delay(.9).room(1),\n // blips\n note(\n \"0 5 4 2\".iter(4)\n .off(1/3, add(7))\n .scale('g4 dorian')\n ).s('square').cutoff(2000).decay(.03).sustain(0)\n .degradeBy(.2)\n .orbit(2).delay(.2).delaytime(\".33 | .6 | .166 | .25\")\n .room(1).gain(.5).mask(\"<0 1>/8\"),\n // bell\n note(rand.range(0,12).struct(\"x(5,8)\").scale('g2 minor pentatonic')).s('bell').begin(.05)\n .delay(.2).degradeBy(.4).gain(.4)\n .mask(\"<1 0>/8\")\n).slow(5)","hash":"3rnmA7q0g2i-"},{"id":284,"created_at":"2022-10-29T20:05:35.807211+00:00","code":"samples({bass:'https://cdn.freesound.org/previews/614/614637_2434927-hq.mp3',\n dino:{b4:'https://cdn.freesound.org/previews/316/316403_5123851-hq.mp3'}})\n\nstack(\n s('bass').loopAt(8,1).clip(1),\n s(\"bd*2, ~ sd,hh*4\"),\n note(\"Abm7\".voicings(['c3','a4']).struct(\"x(3,8,1)\".slow(2))),\n \"0 1 2 3\".scale('ab4 minor pentatonic')\n .superimpose(x=>x.add(.1))\n .sometimes(x=>x.add(12))\n .note().s('sawtooth')\n .cutoff(sine.range(400,2000).slow(16)).gain(.8)\n .decay(perlin.range(.05,.2)).sustain(0)\n .delay(sine.range(0,.5).slow(32))\n .degradeBy(.4).room(1),\n note(\"\").s('dino').delay(.8).slow(8).room(.5)\n)","hash":"w1af5xWyhwNm"},{"id":285,"created_at":"2022-10-29T20:27:02.094212+00:00","code":"samples({ bell: {b4:'https://cdn.freesound.org/previews/339/339809_5121236-lq.mp3'}})\n\nstack(\n // bass\n note(\"[0 ~] [2 [0 2]] [4 4*2] [[4 ~] [2 ~] 0@2]\".scale('g1 dorian').superimpose(x=>x.add(.02)))\n .s('sawtooth').cutoff(200).resonance(20).gain(.15).shape(.6).release(.05),\n // perc\n s(\"[~ hh]*4\").room(\"0 0.5\".fast(2)).end(perlin.range(0.02,1)),\n s(\"mt lt ht\").struct(\"x(3,8)\").fast(2).gain(.5).room(1).sometimes(x=>x.speed(\"2\")),\n s(\"misc:2\").speed(1).delay(.5).delaytime(1/3).gain(.4),\n // chords\n note(\"[~ Gm7] ~ [~ Dm7] ~\".voicings().superimpose(x=>x.add(.1)))\n .s('sawtooth').gain(.5)\n .cutoff(perlin.range(400,3000).slow(8))\n .decay(perlin.range(0.05,.2)).sustain(0)\n .delay(.9).room(1),\n // blips\n note(\n \"0 5 4 2\".iter(4)\n .off(1/3, add(7))\n .scale('g4 dorian')\n ).s('square').cutoff(2000).decay(.03).sustain(0)\n .degradeBy(.2)\n .orbit(2).delay(.2).delaytime(\".33 | .6 | .166 | .25\")\n .room(1).gain(.5).mask(\"<0 1>/8\"),\n // bell\n note(rand.range(0,12).struct(\"x(5,8)\").scale('g2 minor pentatonic')).s('bell').begin(.05)\n .delay(.2).degradeBy(.4).gain(.4)\n .mask(\"<1 0>/8\")\n).slow(5)","hash":"Ne_BJMKKDCO_"},{"id":286,"created_at":"2022-10-30T18:26:13.585639+00:00","code":"stack(\n s(\"[woodblock:1 woodblock:2*2] snare_rim:0,gong/8,brakedrum:1(3,8),~@3 cowbell:3\")\n .sometimes(x=>x.speed(2)),\n note(\"<0 4 1 3 2>\".off(\".25 | .125\",add(2)).scale('D3 hirajoshi')).s(\"clavisynth\").gain(.2).delay(.25).jux(rev).degradeBy(sine.range(0,.5).slow(32)),\n note(\"<0@3 <2(3,8) 3(3,8)>>\".scale('D1 hirajoshi')).s('psaltery_pluck').gain(.6).clip(1).release(.1).room(.5)\n)","hash":"G2H5FM0Fc94a"},{"id":287,"created_at":"2022-10-30T19:31:11.094689+00:00","code":"\"c3 eb3(3,8) c4/2 g3*2\"\n .superimpose(\n x=>x.slow(2).add(12),\n x=>x.slow(4).sub(5)\n ).add(\"<0 1>/16\")\n .note().s('ocarina_vib').clip(1)\n .release(.1).room(1).gain(.2)\n .color(\"salmon | orange | darkseagreen\")\n.pianoroll({fold:0,autorange:0,vertical:0,cycles:12,smear:0,minMidi:40})\n","hash":"EPFzAz99hwZW"},{"id":288,"created_at":"2022-10-31T23:47:57.778883+00:00","code":"stack(\n s(\"bd*2,~ [cp,sd]\").bank('RolandTR909'),\n \n s(\"hh:1*4\").sometimes(fast(\"2\"))\n .rarely(x=>x.speed(\".5\").delay(.5))\n .end(perlin.range(0.02,.05).slow(8))\n .bank('RolandTR909').room(.5)\n .gain(\"0.4,0.4(5,8)\"),\n \n note(\"<0 2 5 3>\".scale('G1 minor')).struct(\"x(5,8)\").s('sawtooth').decay(.1).sustain(0),\n \n note(\",Bb3,D3\").struct(\"~ x*2\").s('square').clip(1)\n .cutoff(sine.range(500,4000).slow(16)).resonance(10)\n .decay(sine.slow(15).range(.05,.2)).sustain(0)\n .room(.5).gain(.3).delay(.2).mask(\"<0 1@3>/8\"),\n \n \"0 5 3 2\".sometimes(slow(2)).off(1/8,add(5)).scale('G4 minor').note()\n .decay(.05).sustain(0).delay(.2).degradeBy(.5).mask(\"<0 1>/16\")\n)","hash":"DSvgYUzEgx6n"},{"id":289,"created_at":"2022-11-01T23:23:38.813645+00:00","code":"stack(\n s(\"bd \")\n .delay(\"<0 .5>\")\n .delaytime(\".16 | .33\")\n .delayfeedback(\".6 | .8\")\n ).sometimes(x=>x.speed(\"-1\"))","hash":"cRvfurHbl4jo"},{"id":290,"created_at":"2022-11-02T20:39:52.338505+00:00","code":"await samples('https://gist.githubusercontent.com/felixroos/b9d461966ae1aaa660beea7c61482d21/raw/dirt-samples.json')\n\ns(\"jvbass:7 , bd hh,[bottle | psr]\")\n .sometimes(fast(\"2\"))\n .rarely(x=>x.speed(\".5\"))\n .off(1/8,x=>x.delay(.5))\n .often(x=>x.cutoff(1000))\n .gain(rand.range(.4,.8))\n .room(1)","hash":"DGHGUqRXr5pe"},{"id":291,"created_at":"2022-11-02T20:50:13.110981+00:00","code":"await samples('https://gist.githubusercontent.com/felixroos/b9d461966ae1aaa660beea7c61482d21/raw/dirt-samples.json')\n\ns(\"jvbass:7(2,9) , bd hh*3,[bottle | psr]\")\n .sometimes(slow(\"2\"))\n .rarely(x=>x.speed(\".5\"))\n .often(x=>x.cutoff(1000))\n .every(4, rev)\n .gain(rand.range(.4,.8))\n .room(.6).jux(rev)","hash":"RBaWr8-15Guk"},{"id":292,"created_at":"2022-11-02T20:54:16.465272+00:00","code":"await samples('https://tinyurl.com/dirt-samples')\n\ns(\"jvbass:7(2,9) , bd hh*3,[bottle | psr]\")\n .sometimes(slow(\"2\"))\n .rarely(x=>x.speed(\".5\"))\n .often(x=>x.cutoff(1000))\n .every(4, rev)\n .gain(rand.range(.4,.8))\n .room(.6).jux(rev)","hash":"c41h3Z1fwqTB"},{"id":293,"created_at":"2022-11-02T20:54:46.19725+00:00","code":"await samples('https://gist.githubusercontent.com/felixroos/b9d461966ae1aaa660beea7c61482d21/raw/dirt-samples.json')\n\ns(\"bev\")\n .chop(64)\n .slow(16)\n .jux(rev)\n .chunk(4, x => x.slow(2).speed(0.5))\n .room(.9)","hash":"lvF3fzHrDbyx"},{"id":294,"created_at":"2022-11-02T22:21:18.991653+00:00","code":"await samples('github:tidalcycles/Dirt-Samples/master')\n\ns(\"jvbass:7(2,9) , bd hh*3,[bottle | psr]\")\n .sometimes(slow(\"2\"))\n .rarely(x=>x.speed(\".5\"))\n .often(x=>x.cutoff(1000))\n .every(4, rev)\n .gain(rand.range(.4,.8))\n .room(.6).jux(rev)","hash":"vqqfVtY-n1Z6"},{"id":295,"created_at":"2022-11-02T22:28:26.618474+00:00","code":"await samples('github:tidalcycles/Dirt-Samples/master')\n\ns(\"[future:2 future:3] sd [future:4 future:3 future:2] sd\")\n .chop(\"<16 32>\")\n .chunk(4,x => x.speed(2))\n .iter(4)\n .slow(2)\n .jux(rev)\n .room(0.6)","hash":"C7PwKmsYAOJL"},{"id":296,"created_at":"2022-11-02T23:23:44.68464+00:00","code":"samples({\n bell: { c6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3' },\n bass: { d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3' }\n})\n\nstack(\n // bells\n \"0\".euclidLegato(3,8)\n .echo(3, 1/16, .5)\n .add(rand.range(-24,24))\n .velocity(rand.range(.5,1))\n .legato(rand.range(.4,3))\n .scale(cat('D minor pentatonic')).note()\n .s('bell').gain(.6).delay(.2).delaytime(1/3).delayfeedback(.8),\n // bass\n \"\".euclidLegato(6,8,1).note().s('bass').clip(1).gain(.8)\n)\n .slow(2)\n .pianoroll({minMidi:20,maxMidi:120,background:'transparent'})\n ","hash":"Z1mqx-eU-KcX"},{"id":297,"created_at":"2022-11-03T09:36:30.528728+00:00","code":"samples({ p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3' })\n\ns(\"p\")\n .loopAt(32,1)\n .chop(128)\n .jux(rev)\n .shape(.4)\n .decay(.1)\n .sustain(.6)\n ","hash":"Ypr_TlVFjVV5"},{"id":298,"created_at":"2022-11-03T11:03:58.705803+00:00","code":"saw.range(0,7).floor().slow(2)\n .struct(seq(\"x\", \"x(3,8)\".slow(2)))\n .superimpose(\n x=>x.add(\"1 6\").slow(2),\n x=>x.add(\"2\").late(.5).slow(2),\n x=>x.sub(\"7\").slow(4),\n )\n .degradeBy(0.2)\n .echo(4,\"<.5 .25 .125>\",.5)\n .scale(cat('C major',['D dorian','G mixolydian']).slow(4))\n .velocity(\".5 .6 .7\".fast(7))\n .transpose(2)\n .tone((await piano()).toDestination())\n .slow(2)","hash":"5pmvveRR-gKc"},{"id":39,"created_at":"2022-07-16T16:42:59.341865+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\nconst drums = stack(\n\"c1*2\".tone(kick).bypass(\"<0@7 1>/8\"),\n\"~ \".tone(snare).bypass(\"<0@7 1>/4\"),\n\"[~ c4]*2\".tone(hihat)\n);\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n\"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n.layer(\nscaleTranspose(0).early(0),\nscaleTranspose(2).early(1/8),\nscaleTranspose(7).early(1/4),\nscaleTranspose(8).early(3/8)\n).layer(thru).tone(keys).bypass(\"<1 0>/16\"),\n\"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).layer(thru).tone(bass),\n\"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().layer(thru).every(2, early(1/8)).tone(keys).bypass(\"<0@7 1>/8\".early(1/4))\n)\nstack(\ndrums.fast(2),\nsynths\n).slow(2);","hash":"E9HzjWmePz3x"},{"id":50,"created_at":"2022-07-18T13:08:12.569425+00:00","code":"const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\nconst kick = new MembraneSynth().chain(vol(.8), out());\nconst snare = new NoiseSynth().chain(vol(.8), out());\nconst hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\nconst bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\nconst keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\n\nconst drums = stack(\n \"c1*2\".tone(kick).mask(\"/8\"),\n \"~ \".tone(snare).mask(\"/4\"),\n \"[~ c4]*2\".tone(hihat)\n);\n\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n .layer(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).apply(thru).tone(keys).mask(\"<~ x>/16\"),\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).apply(thru).tone(bass),\n \"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().apply(thru).every(2, early(1/8)).tone(keys).mask(\"/8\".early(1/4))\n)\nstack(\n drums.fast(2), \n synths\n).slow(2)","hash":"PQfKr5ac-4x0"},{"id":299,"created_at":"2022-11-03T14:38:53.729877+00:00","code":"const keys = x => x.s('sawtooth').cutoff(1200).gain(.5).attack(0).decay(.16).sustain(.3).release(.1);\n\nconst drums = stack(\n s(\"bd*2\").mask(\"/8\").gain(.8),\n s(\"~ \").mask(\"/4\").gain(.5),\n s(\"[~ hh]*2\").delay(.3).delayfeedback(.5).delaytime(.125).gain(.4)\n);\n\nconst thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\nconst synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor'])\n .slow(8)).struct(\"[~ x]*2\")\n .layer(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).apply(thru).note().apply(keys).mask(\"<~ x>/16\"),\n note(\"/2\".apply(thru))\n .struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2))\n .s('sawtooth').attack(0.001).decay(0.2).sustain(1).cutoff(500),\n \"/2\".struct(\"~ [x@0.2 ~]\".fast(2)).voicings()\n .apply(thru).every(2, early(1/8)).note().apply(keys).sustain(0)\n .delay(.4).delaytime(.12)\n .mask(\"/8\".early(1/4))\n)\nstack(\n drums.fast(2), \n synths\n).slow(2)","hash":"rGJ0heffHHl4"},{"id":172,"created_at":"2022-09-15T05:18:49.069714+00:00","code":"const delay = new FeedbackDelay(1/7, .1).chain(vol(0.9), out());\nconst hihat = new MetalSynth()\n .set(adsr(0, .01, 0, .1))\n .chain(vol(.1).connect(delay),out());\n\nstack(\n `<[0, 4, 7] [-1, 4, 8] [-3, 0, 4, 9] [-5, 0, 4, 10]\n [-9, 1, 6, 11] [-8, 0, 7, 12] [-6, 2, 4, 13] [-7, 4, 9, 14] \n [-8, 0, 7, 16] [-4, 0, 7, 17] [-9, 1, 6, 11, 18] [-8, 0, 7, 14, 19] \n [-7, 2, 10, 14, 20] [-3, 5, 7, 12, 21] [-5, 3, 5, 14, 22] [-4, 3, 5, 13, 23]\n >`\n .struct(\"\".slow(\"2\"))\n .legato(1)\n .add(a3).note(),\n \n \"<0 -1 -3 -5 -9 -8 -6 -7 -8 -4 -9 -8 -7 -3 -5 -4>\".add(a2).note(),\n \n //\"<7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23>\".add(a3),\n \n \"<~ 3?> 2 ~ [2 <[~ [0*3]?] ~>]\".fast(2)\n .slow(2).tone(hihat.toDestination()),\n \n \"c1(3,8)|c1(4,8)\".slow(2).tone(new MembraneSynth().toDestination()),\n \n \"~ x\".tone(new NoiseSynth().toDestination()),\n )","hash":"DBp75NUfSxIn"},{"id":210,"created_at":"2022-09-23T21:49:46.53913+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav', 'bd/BT7A0D7.wav'],\n birds: ['birds/001_10.wav','birds/003_3.wav','birds/005_5.wav'],\n breaks125: 'breaks125/015_sdstckbr.wav',\n hh: ['hh/000_hh3closedhh.wav','hh27/008_hh27perc1.wav','hh/002_hh3hit1.wav'],\n \"gtr\": 'gtr/0001_cleanC.wav',\n}, 'github:tidalcycles/Dirt-Samples/master/');\ns(\"[bd birds [misc misc,bd] breaks125]/4.5,hh lt hh bd\").note(\"[44 30 51]/2.4\").n(\"[0 1 2 3]/2.75\")//\n .cut(\"[1 0 1 0 2 2 1 2 2]/1.75\")\n // .clip(\"1\")\n .attack(\"[.01 0.05]/1.2\").decay(\".1 0.01\").sustain(\".2 0.6\").release(\"[.5 1 0.1]/2.6\")\n // .shape(\"0.2\")\n .pan(\"[.5 1 .5 0]/0.75\")\n .echoWith(3, \"[2.125 2.5]/3\", (p,n) => p.add(n + 4).rev().release(2))\n // .coarse(\"1\")\n // .shape(1)\n .out()","hash":"xHaKTd1kTpCn"},{"id":300,"created_at":"2022-11-03T18:07:55.787937+00:00","code":"Clock.bpm = 120\n\nstack(\n note(\"[e3, b4, d4, a4]\").slow(4).s('sawtooth')\n .attack(.1).decay(.2).sustain(.3).release(.1).bandf(100).bandq(\"1\").gain(3),\n //s(\"bd@2 bd bd!2 bd*2\").fast(2)\n s(\"hh@2 hh hh!2 hh*2\").fast(2)\n .every(4, x=>x.rev())\n).slow(2)","hash":"Z7Nxzf3lmgTN"},{"id":301,"created_at":"2022-11-03T19:06:07.236828+00:00","code":"Clock.bpm = 120\n\nstack(\n note(\"[e3, b4, a4, g#4]\").slow(4).s('sawtooth')\n .attack(.1).decay(.2).sustain(.3).release(.1).bandf(100).bandq(\"1\").gain(3),\n //s(\"bd@2 bd bd!2 bd*2\").fast(2)\n //s(\"hh@2 hh hh!2 hh*2\").fast(2)\n //.every(4, x=>x.rev())\n).slow(2)","hash":"e63x61eOPPvl"},{"id":302,"created_at":"2022-11-03T19:26:59.635412+00:00","code":"await samples('https://gist.githubusercontent.com/felixroos/2f75409930854895e9cddd37dbe9bcd9/raw/dirt-jv1080.json')\n\nnote(\"\")\n .off(1/4, add(n(7)))\n .off(1/8, add(n(12)))\n .s(\"[xx@3 rash@1]/16\")\n .cutoff(sine.range(500,4000).slow(7))\n .room(.8)\n .jux(rev)\n .gain(.5)","hash":"bUd8QxyN4kvJ"},{"id":303,"created_at":"2022-11-03T19:36:55.420352+00:00","code":"Clock.bpm = 120\n\nstack(\n note(\"[e3, b4, a4, g#4]*32\").slow(4).s('sawtooth')\n .decay(.1).sustain(.1).bandf(50).bandq(\".5\").gain(sine.range(8, 2)),\n s(\"bd\").decay(.1),\n s(\"hh*8\").gain(\".4!2 1 .4!2 1 .4 1\").velocity(\".4 1\").every(4, x=>x.rev())\n).slow(2)","hash":"y5PdLktz5gnb"},{"id":304,"created_at":"2022-11-04T03:26:49.316926+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .slow(3/2)","hash":"BpChMc3nxrYv"},{"id":305,"created_at":"2022-11-04T03:27:43.596872+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .slow(3/2)","hash":"Swuvt887AOe1"},{"id":306,"created_at":"2022-11-04T03:29:34.553409+00:00","code":"samples({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav',\n rhodes: {\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n }\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n s(\" \"),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .note()\n .s('rhodes')\n .clip(1)\n .room(.5)\n .delay(.3)\n .delayfeedback(.4)\n .delaytime(1/12).gain(.5),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2).superimpose(x=>x.add(.02))\n .note().gain(.3)\n .s('sawtooth').cutoff(600),\n).fast(3/2)","hash":"UboMuFOnT0hy"},{"id":307,"created_at":"2022-11-04T03:29:34.618152+00:00","code":"samples({\n bd: 'samples/tidal/bd/BT0A0D0.wav',\n sn: 'samples/tidal/sn/ST0T0S3.wav',\n hh: 'samples/tidal/hh/000_hh3closedhh.wav',\n rhodes: {\n E1: 'samples/rhodes/MK2Md2000.mp3',\n E2: 'samples/rhodes/MK2Md2012.mp3',\n E3: 'samples/rhodes/MK2Md2024.mp3',\n E4: 'samples/rhodes/MK2Md2036.mp3',\n E5: 'samples/rhodes/MK2Md2048.mp3',\n E6: 'samples/rhodes/MK2Md2060.mp3',\n E7: 'samples/rhodes/MK2Md2072.mp3'\n }\n}, 'https://loophole-letters.vercel.app/')\n\nconst bass = synth(osc('sawtooth8')).chain(vol(.5),out())\nconst scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', cat('Db major','Db mixolydian')])\n\nstack(\n s(\" \"),\n \"]>\"\n .scale(scales)\n .struct(\"x*8\")\n .scaleTranspose(\"0 [-5,-2] -7 [-9,-2]\")\n .legato(.3)\n .slow(2)\n .note()\n .s('rhodes')\n .clip(1)\n .room(.5)\n .delay(.3)\n .delayfeedback(.4)\n .delaytime(1/12).gain(.5),\n \"\"\n .legato(\"<1@3 [.3 1]>\")\n .slow(2).superimpose(x=>x.add(.02))\n .note().gain(.3)\n .s('sawtooth').cutoff(600),\n).fast(3/2)","hash":"vYFGpZ6XObVG"},{"id":308,"created_at":"2022-11-04T08:35:06.643516+00:00","code":"samples({\n bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],\n sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],\n hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],\n}, 'github:tidalcycles/Dirt-Samples/master/');\nstack(\n s(\"bd,[~ ],hh(3,4)\") // drums\n .speed(perlin.range(.7,.9)) // random sample speed variation\n //.hush()\n ,\"\" // bassline\n .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps\n .add(perlin.range(0,.5)) // random pitch variation\n .superimpose(add(.05)) // add second, slightly detuned voice\n .n() // wrap in \"n\"\n .decay(.15).sustain(0) // make each note of equal length\n .s('sawtooth') // waveform\n .gain(.4) // turn down\n .cutoff(sine.slow(7).range(300,5000)) // automate cutoff\n //.hush()\n ,\">\".voicings() // chords\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .s('sawtooth') // waveform\n .gain(.16) // turn down\n .cutoff(500) // fixed cutoff\n .attack(1) // slowly fade in\n //.hush()\n ,\"a4 c5 \".struct(\"x(5,8)\")\n .superimpose(x=>x.add(.04)) // add second, slightly detuned voice\n .add(perlin.range(0,.5)) // random pitch variation\n .n() // wrap in \"n\"\n .decay(.1).sustain(0) // make notes short\n .s('triangle') // waveform\n .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :)\n .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes\n //.hush()\n)\n .fast(3/2)","hash":"TUw_9DfBSsiW"},{"id":309,"created_at":"2022-11-04T09:06:38.730788+00:00","code":"stack(\n s(\"bd \")\n .delay(.5)\n .delaytime(.33)\n .delayfeedback(.6),\n s(\"hh*2\")\n .delay(.8)\n .delaytime(.08)\n .delayfeedback(.7)\n .orbit(2)\n).sometimes(x=>x.speed(\"-1\")).out()","hash":"ctHqwq-97t6X"}] diff --git a/test/runtime.mjs b/test/runtime.mjs index 79e8dcc6d..6a40b09d6 100644 --- a/test/runtime.mjs +++ b/test/runtime.mjs @@ -175,6 +175,7 @@ evalScope( loadCSound, loadCsound, loadcsound, + setcps: id, Clock: {}, // whatever // Tone, }, diff --git a/test/shared.test.mjs b/test/shared.test.mjs deleted file mode 100644 index e32927515..000000000 --- a/test/shared.test.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { queryCode } from '../runtime.mjs'; -import { describe, it } from 'vitest'; -import data from './dbdump.json'; - -describe('renders shared tunes', async () => { - data.forEach(({ id, code, hash }) => { - const url = `https://strudel.cc/?${hash}`; - it(`shared tune ${id} ${url}`, async ({ expect }) => { - if (code.includes('import(')) { - console.log('skip', url); - return; - } - const haps = await queryCode(code, 1); - expect(haps).toMatchSnapshot(); - }); - }); -}); diff --git a/tools/dbpatch/README.md b/tools/dbpatch/README.md new file mode 100644 index 000000000..1e8256f19 --- /dev/null +++ b/tools/dbpatch/README.md @@ -0,0 +1,10 @@ +# dbpatch + +this is a little script to update all patterns in the db. Go to supabase and export as csv as `code_rows.csv` to this folder. +Then run + +```sh +node dbpatch.mjs > code_rows_patched.csv +``` + +It will output a csv file with the changes implemented in dbpatch.mjs diff --git a/tools/dbpatch/dbpatch.mjs b/tools/dbpatch/dbpatch.mjs new file mode 100644 index 000000000..d4e205284 --- /dev/null +++ b/tools/dbpatch/dbpatch.mjs @@ -0,0 +1,31 @@ +import { parse } from 'csv-parse/sync'; +import { readFileSync } from 'fs'; +import { stringify } from 'csv-stringify/sync'; + +const hasCpsCall = (code) => + ['setcps', 'setCps', 'setCpm', 'setcpm'].reduce((acc, m) => acc || code.includes(`${m}`), false); + +function withCps(code, cps) { + if (hasCpsCall(code)) { + return code; + } + const lines = code.split('\n'); + const firstNonLineComment = lines.findIndex((l) => !l.startsWith('//')); + const cpsCall = `setcps(${cps})`; + lines.splice(firstNonLineComment, 0, cpsCall); + return lines.join('\n'); +} + +const dumpNew = readFileSync('./code_rows.csv', { encoding: 'utf-8' }); + +const records = parse(dumpNew, { + columns: true, + skip_empty_lines: true, +}); + +const edited = records.map((entry) => ({ + ...entry, + code: withCps(entry.code, 1), +})); + +console.log(stringify(edited)); diff --git a/tools/dbpatch/package.json b/tools/dbpatch/package.json new file mode 100644 index 000000000..46dfc936a --- /dev/null +++ b/tools/dbpatch/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "csv": "^6.3.6" + } +} diff --git a/website/src/pages/functions/intro.mdx b/website/src/pages/functions/intro.mdx index 2e1bb7eb9..412c086a1 100644 --- a/website/src/pages/functions/intro.mdx +++ b/website/src/pages/functions/intro.mdx @@ -33,7 +33,7 @@ While the Mini Notation is a powerful way to write rhythms concisely, it also ha client:idle tune={`stack( note("c2 eb2(3,8)").s('sawtooth').cutoff(800), - s("bd,~ sd,hh*4") + s("bd(5,8), hh*8") )`} /> diff --git a/website/src/pages/learn/conditional-modifiers.mdx b/website/src/pages/learn/conditional-modifiers.mdx index d66b26989..d9b3426d4 100644 --- a/website/src/pages/learn/conditional-modifiers.mdx +++ b/website/src/pages/learn/conditional-modifiers.mdx @@ -28,6 +28,10 @@ import { JsDoc } from '../../docs/JsDoc'; +### fastChunk + + + ## arp diff --git a/website/src/pages/learn/effects.mdx b/website/src/pages/learn/effects.mdx index be4a11840..308ace71f 100644 --- a/website/src/pages/learn/effects.mdx +++ b/website/src/pages/learn/effects.mdx @@ -150,7 +150,7 @@ Pitch envelopes can breathe life into static sounds: .s("gm_electric_guitar_jazz") .penv("<.5 0 7 -2>*2").vib("4:.1") .phaser(2).delay(.25).room(.3) - .size(4).fast(.75)`} + .size(4).fast(1.5)`} /> You also create some lovely chiptune-style sounds: @@ -163,7 +163,7 @@ You also create some lovely chiptune-style sounds: .voicing().add(note("<0 1>/8")) .dec(.1).room(.2) .segment("<4 [2 8]>") -.penv("<0 <2 -2>>").patt(.02)`} +.penv("<0 <2 -2>>").patt(.02).fast(2)`} /> Let's break down all pitch envelope controls: diff --git a/website/src/pages/learn/hydra.mdx b/website/src/pages/learn/hydra.mdx index f1ace48bc..d7a692dd2 100644 --- a/website/src/pages/learn/hydra.mdx +++ b/website/src/pages/learn/hydra.mdx @@ -36,7 +36,8 @@ osc(1, -0.9, 300) .scale(2) .out() -note("[a,c,e,,b4]/4").s("sawtooth").vib(2) +note("[a,c,e,,b4]/2") +.s("sawtooth").vib(2) .lpf(600).lpa(2).lpenv(6) `} /> @@ -90,7 +91,7 @@ src(s0).kaleid(H("<4 5 6>")) .out() // stack( - s("bd*2,[hh:0:<.5 1>]*4,~ rim").bank("RolandTR909").speed(.9), + s("bd*4,[hh:0:<.5 1>]*8,~ rim").bank("RolandTR909").speed(.9), note("[>>]*3").s("sawtooth") .room(.75).sometimes(add(note(12))).clip(.3) .lpa(.05).lpenv(-4).lpf(2000).lpq(8).ftype('24db') diff --git a/website/src/pages/learn/mini-notation.mdx b/website/src/pages/learn/mini-notation.mdx index 9f92d4280..7dbf67ce2 100644 --- a/website/src/pages/learn/mini-notation.mdx +++ b/website/src/pages/learn/mini-notation.mdx @@ -22,27 +22,25 @@ Before diving deeper into the details, here is a flavour of how the Mini-Notatio \`)`} /> ## Mini Notation Format @@ -74,9 +72,21 @@ Taking the two examples above, we have four and eight events respectively, and s This is perhaps counter-intuitive if you are used to adding notes in a sequencer or piano roll and the overall length increasing. But, it will begin to make sense as we go through more elements of mini-notation. +## Multiplication + +A sequence can be sped up by multiplying it by a number using the asterisk symbol (`*`): + + + +The multiplication by two here means that the sequence will play twice per cycle. + +Multiplications can also be decimal (`*2.75`): + + + ## Division -We can slow the sequence down by enclosing it in brackets and dividing it by a number (`/2`): +Contrary to multiplication, division can slow the sequence down by enclosing it in brackets and dividing it by a number (`/2`): @@ -102,18 +112,11 @@ The advantage of the angle brackets, is that we can add more events without need ")`} punchcard /> This is more similar to traditional music sequencers and piano rolls, where adding a note increases the perceived overall duration. +We can also play a certain number of notes per cycle by using angle brackets with multiplication: -## Multiplication - -Contrary to division, a sequence can be sped up by multiplying it by a number using the asterisk symbol (`*`): - - +*8")`} punchcard /> -The multiplication by two here means that the sequence will play twice per cycle. - -As with divisions, multiplications can be decimal (`*2.75`): - - +Now we are playing 8 notes per cycle! ## Subdividing time with bracket nesting @@ -149,13 +152,13 @@ The following are the same: But to play multiple chords in a sequence, we have to wrap them in brackets: -")`} punchcard /> +*2")`} punchcard /> ## Elongation With the "@" symbol, we can specify temporal "weight" of a sequence child: -")`} punchcard /> +*2")`} punchcard /> Here, the first chord has a weight of 2, making it twice the length of the other chords. The default weight is 1. @@ -163,19 +166,19 @@ Here, the first chord has a weight of 2, making it twice the length of the other Using "!" we can repeat without speeding up: -")`} punchcard /> +*2")`} punchcard /> ## Mini-notation review To recap what we've learned so far, compare the following patterns: -")`} /> -")`} /> -")`} /> -")`} /> -")`} /> -")`} /> -")`} /> +*2")`} /> +*2")`} /> +*2")`} /> +*2")`} /> +*2")`} /> +*2")`} /> +*2")`} /> ## Euclidian rhythms @@ -196,7 +199,7 @@ But using the Euclidian rhythm notation, we only need to express "3 beats over 8 This makes it easy to write patterns with interesting rhythmic structures and variations that still sound familiar: - + Note that since the example above does not use the third `offset` parameter, it can be written simply as `"(3,8)"`. diff --git a/website/src/pages/learn/samples.mdx b/website/src/pages/learn/samples.mdx index dc0989c48..fffea2825 100644 --- a/website/src/pages/learn/samples.mdx +++ b/website/src/pages/learn/samples.mdx @@ -18,7 +18,7 @@ Strudel allows loading samples in the form of audio files of various formats (wa By default, strudel comes with a built-in "sample map", providing a solid base to play with. - + Here, we are using the `s` function to play back different default samples (`bd`, `sd`, `hh` and `misc`) to get a drum beat. @@ -59,15 +59,15 @@ If we open the `sounds` tab and then `drum machines`, we can see that the drum s We _could_ use them like this: - + ... but thats obviously a bit much to write. Using the `bank` function, we can shorten this to: - + You could even pattern the bank to switch between different drum machines: -")`} /> + Behind the scenes, `bank` will just prepend the drum machine name to the sample name with `_` to get the full name. This of course only works because the name after `_` (`bd`, `sd` etc..) is standardized. @@ -79,17 +79,21 @@ If we open the `sounds` tab again, followed by tab `drum machines`, there is als For example `RolandTR909_hh(4)` means there are 4 samples of a TR909 hihat available. By default, `s` will play the first sample, but we can select the other ones using `n`, starting from 0: -")`} /> + Numbers that are too high will just wrap around to the beginning -")`} /> + Here, 0-3 will play the same sounds as 4-7, because `RolandTR909_hh` only has 4 sounds. Selecting sounds also works inside the mini notation, using "`:`" like this: - + # Loading Custom Samples @@ -103,7 +107,7 @@ In this example we create a map using sounds from the default sample map: sd: 'sd/rytm-01-classic.wav', hh: 'hh27/000_hh27closedhh.wav', }, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/'); -s("bd sd,hh*8")`} +s("bd sd bd sd,hh*16")`} /> When you load your own samples, you can choose the names that you will then refer to in your pattern string inside the `s` function. @@ -116,7 +120,7 @@ Compare with this example which uses the same samples, but with different names. snaredrum: 'sd/rytm-01-classic.wav', hihat: 'hh27/000_hh27closedhh.wav', }, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/'); -s("bassdrum snaredrum, hihat*8")`} +s("bassdrum snaredrum bassdrum snaredrum, hihat*16")`} /> Here we have changed the "map" to include longer sample names. @@ -140,7 +144,7 @@ Because GitHub is a popular place for uploading open source samples, it has its sd: 'sd/rytm-01-classic.wav', hh: 'hh27/000_hh27closedhh.wav', }, 'github:tidalcycles/Dirt-Samples/master/'); -s("bd sd,hh*8")`} +s("bd sd bd sd,hh*16")`} /> The format is `github:user/repo/branch/`. @@ -157,7 +161,7 @@ We can see there are some guitar samples inside the `/samples` folder, so let's g3: 'samples/guitar/guitar_3.wav', g4: 'samples/guitar/guitar_4.wav' }, 'github:jarmitage/jarmitage.github.io/master/'); -s("[g0 g1 g2 g3 g4]/5")`} +s("/2")`} /> ## Multiple Samples per Sound @@ -171,7 +175,7 @@ It is also possible, to declare multiple files for one sound, using the array no sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'], hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'], }, 'github:tidalcycles/Dirt-Samples/master/'); -s(",~ ,[hh:0 hh:1]*2")`} +s("bd:0 bd:1,~ ~ sd:0,[hh:0 hh:1]*4")`} /> The `:0` `:1` etc. are the indices of the array. @@ -184,7 +188,7 @@ The sample number can also be set using `n`: sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'], hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'], }, 'github:tidalcycles/Dirt-Samples/master/'); -s("bd,~ sd,hh*4").n("<0 1>")`} +s("bd bd,~ sd ~ sd,hh*8").n("<0 1>")`} /> In that case, we might load our guitar sample map a different way: @@ -200,7 +204,7 @@ In that case, we might load our guitar sample map a different way: 'samples/guitar/guitar_4.wav' ] }, 'github:jarmitage/jarmitage.github.io/master/'); -s("[guitar:0 guitar:1 guitar:2 guitar:3 guitar:4]/5")`} +s("*2")`} /> And as above, we can choose the sample number using `n` for even more flexibility: @@ -216,7 +220,7 @@ And as above, we can choose the sample number using `n` for even more flexibilit 'samples/guitar/guitar_4.wav' ] }, 'github:jarmitage/jarmitage.github.io/master/'); -n("<0 1 2 3 4>").s("guitar")`} +n("<0 1 2 3 4>*2").s("guitar")`} /> ## Pitched Sounds @@ -271,7 +275,7 @@ We can also declare different samples for different regions of the keyboard: }}, 'github:tidalcycles/Dirt-Samples/master/'); note("g2!2 !2, g4 f4]>") .s('moog').clip(1) - .gain(.5)`} + .gain(.5).cpm(60)`} /> The sampler will always pick the closest matching sample for the current note! @@ -285,9 +289,9 @@ With it, you can enter any sample name(s) to query from [freesound.org](https:// client:idle tune={`await samples('shabda:bass:4,hihat:4,rimshot:2') stack( - n("0 1 2 3").s('bass').slow(2), + n("0 1 2 3 0 1 2 3").s('bass'), n("0 1*2 2 3*2").s('hihat'), - n("~ 0 ~ 1").s('rimshot') + n("~ 0 ~ 1 ~ 0 0 1").s('rimshot') ).clip(1)`} /> @@ -299,8 +303,8 @@ Note that the language code and the gender parameters are optional and default t tune={`await samples('shabda/speech:the_drum,forever') await samples('shabda/speech/fr-FR/m:magnifique') stack( - s("the_drum").chop(16).speed(rand.range(0.85,1.1)), - s("forever magnifique").slow(8).late(0.25) + s("the_drum*2").chop(16).speed(rand.range(0.85,1.1)), + s("forever magnifique").slow(4).late(0.125) )`} /> diff --git a/website/src/pages/learn/synths.mdx b/website/src/pages/learn/synths.mdx index d6ac50614..76bb72e9b 100644 --- a/website/src/pages/learn/synths.mdx +++ b/website/src/pages/learn/synths.mdx @@ -16,7 +16,7 @@ The basic waveforms are `sine`, `sawtooth`, `square` and `triangle`, which can b >") + tune={`note("c2 >".fast(2)) .sound("") .scope()`} /> @@ -28,7 +28,7 @@ If you don't set a `sound` but a `note` the default value for `sound` is `triang You can also use noise as a source by setting the waveform to: `white`, `pink` or `brown`. These are different flavours of noise, here written from hard to soft. -/2").scope()`} /> +").scope()`} /> Here's a more musical example of how to use noise for hihats: @@ -44,7 +44,7 @@ Some amount of pink noise can also be added to any oscillator by using the `nois You can also use the `crackle` type to play some subtle noise crackles. You can control noise amount by using the `density` parameter: -".slow(4)).scope()`} /> +".slow(2)).scope()`} /> ### Additive Synthesis @@ -52,7 +52,7 @@ To tame the harsh sound of the basic waveforms, we can set the `n` control to li >") + tune={`note("c2 >".fast(2)) .sound("sawtooth") .n("<32 16 8 4>") .scope()`} @@ -63,7 +63,7 @@ You can also set `n` directly in mini notation with `sound`: >") + tune={`note("c2 >".fast(2)) .sound("sawtooth:<32 16 8 4>") .scope()`} /> @@ -125,7 +125,7 @@ note("<[g3,b3,e4]!2 [a3,c3,e4] [b3,d3,f#4]>") .n("<1 2 3 4 5 6 7 8 9 10>/2").room(0.5).size(0.9) .s('wt_flute').velocity(0.25).often(n => n.ply(2)) .release(0.125).decay("<0.1 0.25 0.3 0.4>").sustain(0) -.cutoff(2000).scope({}).cutoff("<1000 2000 4000>").fast(2)`} +.cutoff(2000).scope({}).cutoff("<1000 2000 4000>").fast(4)`} /> ## ZZFX @@ -137,8 +137,8 @@ It has 20 parameters in total, here is a snippet that uses all: ") // also supports freq - .s("") + tune={`note("c2 eb2 f2 g2") // also supports freq + .s("{z_sawtooth z_tan z_noise z_sine z_square}%4") .zrand(0) // randomization // zzfx envelope .attack(0.001) diff --git a/website/src/pages/learn/tonal.mdx b/website/src/pages/learn/tonal.mdx index 130c7880d..a5a02508b 100644 --- a/website/src/pages/learn/tonal.mdx +++ b/website/src/pages/learn/tonal.mdx @@ -14,6 +14,19 @@ These functions use [tonaljs](https://github.com/tonaljs/tonal) to provide helpe +Here's an example of how you can play chords and a bassline: + +*2") + .dict('ireal').layer( + x=>x.struct("[~ x]*2").voicing() + , + x=>n("0*4").set(x).mode("root:g2").voicing() + .s('sawtooth').cutoff("800:4:2") +)`} +/> + ### scale(name) @@ -22,13 +35,13 @@ These functions use [tonaljs](https://github.com/tonaljs/tonal) to provide helpe Transposes all notes to the given number of semitones: -".slow(2)).note()`} /> +").note()`} /> This method gets really exciting when we use it with a pattern as above. Instead of numbers, scientific interval notation can be used as well: -".slow(2)).note()`} /> +").note()`} /> ### scaleTranspose(steps) @@ -36,9 +49,9 @@ Transposes notes inside the scale by the number of steps: ") +.scaleTranspose("<0 -1 -2 -3 -4 -5 -6 -4>*2") .note()`} /> @@ -46,22 +59,28 @@ Transposes notes inside the scale by the number of steps: Turns chord symbols into voicings, using the smoothest voice leading possible: -".voicings('lefthand'), "").note()`} /> +".voicings('lefthand'), + "" +).note()`} +/> + +Note: This function might be removed, as `voicing` (without s) is a newer implementation. ### rootNotes(octave = 2) Turns chord symbols into root notes of chords in given octave. -".rootNotes(3).note()`} /> +*2".rootNotes(3).note()`} /> Together with layer, struct and voicings, this can be used to create a basic backing track: ".layer( - x => x.voicings('lefthand').struct("~ x").note(), + tune={`"*2".layer( + x => x.voicings('lefthand').struct("[~ x]*2").note(), x => x.rootNotes(2).note().s('sawtooth').cutoff(800) )`} /> - -So far, we've stayed within the browser. [MIDI and OSC](/learn/input-output/) are ways to break out of it. diff --git a/website/src/pages/recipes/recipes.mdx b/website/src/pages/recipes/recipes.mdx index 22617e4bf..b17df9a78 100644 --- a/website/src/pages/recipes/recipes.mdx +++ b/website/src/pages/recipes/recipes.mdx @@ -61,7 +61,7 @@ A sample can be looped and chopped like this: @@ -72,9 +72,9 @@ Let's add randmized doubling + reversing: @@ -83,9 +83,9 @@ If we want to specify the order of samples, we can replace `chop` with `slice`: ") - .cut(1).rarely(ply(2))`} +s("amen/4").fit() + .slice(8, "<0 1 2 3 4*2 5 6 [6 7]>*2") + .cut(1).rarely(ply("2"))`} punchcard /> @@ -95,8 +95,8 @@ If we use `splice` instead of `slice`, the speed adjusts to the duration of the client:visible tune={`await samples('github:yaxu/clean-breaks/main') s("amen") - .splice(8, "<0 1 2 3 4*2 5 6 [6 7]>") - .cut(1).rarely(ply(2))`} + .splice(8, "<0 1 2 3 4*2 5 6 [6 7]>*2") + .cut(1).rarely(ply("2"))`} punchcard /> @@ -104,26 +104,38 @@ Note that we don't need `fit`, because `splice` will do that by itself. ## Filter Envelopes -A minimal filter envelope looks like this: +Using `lpenv`, we can make the filter move: d2") .s("sawtooth") + .lpf(400).lpenv(4) + .scope()`} +/> + +The type of envelope depends on the methods you're setting. Let's set `lpa`: + + d2") + .s("sawtooth").lpq(8) .lpf(400).lpa(.2).lpenv(4) .scope()`} /> -We can flip the envelope by setting `lpenv` negative + add some resonance `lpq`: +Now the filter is attacking, rather than decaying as before (decay is the default). We can also do both d2") .s("sawtooth").lpq(8) - .lpf(400).lpa(.2).lpenv(-4) + .lpf(400).lpa(.1).lpd(.1).lpenv(4) .scope()`} /> +You can play around with `lpa` | `lpd` | `lps` | `lpd` to see what the filter envelope will do. + ## Layering Sounds We can layer sounds by separating them with ",": @@ -183,7 +195,7 @@ A polyrhythm is when 2 different tempos happen at the same time. This is a polymeter: -,").fast(2)`} punchcard /> +*4")`} punchcard /> A polymeter is when 2 different bar lengths play at the same tempo. @@ -201,8 +213,8 @@ Using `run` with `n`, we can rush through a sample bank: @@ -212,17 +224,17 @@ In this case, I hear the beginning at the third sample, which can be accounted f Let's add some randomness: ## Tape Warble @@ -231,7 +243,7 @@ We can emulate a pitch warbling effect like this: *8") .add(note(perlin.range(0,.5))) // <------ warble .clip(2).s("gm_electric_guitar_clean")`} /> @@ -243,7 +255,7 @@ There are a number of ways to change the sound duration. Using clip: /2")`} +.clip("<2 1 .5 .25>")`} /> The value of clip is relative to the duration of each event. @@ -252,20 +264,18 @@ We can also create overlaps using release: /2")`} +.release("<2 1 .5 .25>")`} /> This will smoothly fade out each sound for the given number of seconds. -We could also make the notes shorter with decay / sustain: +We could also make the notes shorter by using a decay envelope: /2").sustain(0)`} +.decay("<2 1 .5 .25>")`} /> -For now, there is a limitation where decay values that exceed the event duration may cause little cracks, so use higher numbers with caution.. - When using samples, we also have `.end` to cut relative to the sample length: ")`} /> @@ -274,9 +284,9 @@ Compare that to clip: ")`} /> -or decay / sustain +or decay: -").sustain(0)`} /> +")`} /> ## Wavetable Synthesis diff --git a/website/src/pages/understand/cycles.mdx b/website/src/pages/understand/cycles.mdx index a66794bea..4694850c3 100644 --- a/website/src/pages/understand/cycles.mdx +++ b/website/src/pages/understand/cycles.mdx @@ -15,20 +15,20 @@ Strudel's mother language, TidalCycles, even has it in its name. ## Cycles and BPM In most music software, the unit BPM (beats per minute) is used to set the tempo. -Strudel expresses tempo as CPS (cycles per second), with a default of 1CPS: +Strudel expresses tempo as CPS (cycles per second), with a default of 0.5 CPS: -Here we can hear the 1CPS in action: The kick repeats once per second like a clock. -We could say 1CPS = 1BPS (beats per second) = 60BPM. Let's add another kick: +Here we can hear the 0.5CPS in action: The kick repeats once every two seconds. +Let's make it 4 kicks: - + -Now we have 2 kicks per second, but the whole pattern still plays at 1CPS. +Now we have 4 kicks per cycle, but the whole pattern still plays at 0.5CPS. In terms of BPM, most musicians would tell you this is playing at 120bpm. What about this one: - + Because the second sound is now a hihat, the tempo feels slower again. This brings us to an important realization: @@ -103,7 +103,7 @@ To get a time signature, just change the number of elements per bar. Here is a r or with 5: -*5")`} /> + We could also write multiple bars with different time signatures: diff --git a/website/src/pages/understand/pitch.mdx b/website/src/pages/understand/pitch.mdx index 5ddfe2b53..616d29016 100644 --- a/website/src/pages/understand/pitch.mdx +++ b/website/src/pages/understand/pitch.mdx @@ -35,7 +35,7 @@ The upper limit decreases with age. What's your upper limit? In Strudel, we can play frequencies directly with the `freq` control: -]")`} /> +]>*8")`} /> ## Frequency vs Pitch Perception diff --git a/website/src/pages/workshop/first-effects.mdx b/website/src/pages/workshop/first-effects.mdx index 48764bce3..e7251624d 100644 --- a/website/src/pages/workshop/first-effects.mdx +++ b/website/src/pages/workshop/first-effects.mdx @@ -18,7 +18,7 @@ We have sounds, we have notes, now let's look at effects! /2") + tune={`note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") .sound("sawtooth").lpf(800)`} /> @@ -35,8 +35,8 @@ lpf = **l**ow **p**ass **f**ilter /2") -.sound("sawtooth").lpf("200 1000")`} + tune={`note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") +.sound("sawtooth").lpf("200 1000 200 1000")`} /> @@ -52,8 +52,8 @@ We will learn how to automate with waves later... /2") -.sound("sawtooth").vowel("/2")`} + tune={`note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>") +.sound("sawtooth").vowel("")`} /> **gain** @@ -61,8 +61,8 @@ We will learn how to automate with waves later... @@ -84,13 +84,13 @@ Let's combine all of the above into a little tune: client:visible tune={`stack( stack( - sound("hh*8").gain("[.25 1]*2"), - sound("bd*2,~ sd:1") + sound("hh*8").gain("[.25 1]*4"), + sound("bd*4,[~ sd:1]*2") ), - note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>/2") - .sound("sawtooth").lpf("200 1000"), - note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>/2") - .sound("sawtooth").vowel("/2") + note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") + .sound("sawtooth").lpf("200 1000 200 1000"), + note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>") + .sound("sawtooth").vowel("") ) `} /> @@ -105,7 +105,7 @@ The 3 parts (drums, bassline, chords) are exactly as earlier, just stacked toget ") + tune={`note("c3 bb2 f3 eb3") .sound("sawtooth").lpf(600) .attack(.1) .decay(.1) @@ -141,7 +141,7 @@ Can you guess what they do? ") + tune={`note("c3 bb2 f3 eb3") .sound("sawtooth").lpf(600) .adsr(".1:.1:.5:.2") `} @@ -152,7 +152,7 @@ Can you guess what they do? ~]") + note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2") .sound("gm_electric_guitar_muted"), sound("").bank("RolandTR707") ).delay(".5")`} @@ -182,7 +182,7 @@ What happens if you use `.delay(".8:.06:.8")` ? Can you guess what the third num ~@16] ~>/2") + tune={`n("<4 [3@3 4] [<2 0> ~@16] ~>") .scale("D4:minor").sound("gm_accordion:2") .room(2)`} /> @@ -200,10 +200,10 @@ Add a delay too! ~]") + note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2") .sound("gm_electric_guitar_muted").delay(.5), sound("").bank("RolandTR707").delay(.5), - n("<4 [3@3 4] [<2 0> ~@16] ~>/2") + n("<4 [3@3 4] [<2 0> ~@16] ~>") .scale("D4:minor").sound("gm_accordion:2") .room(2).gain(.5) )`} @@ -214,13 +214,13 @@ Let's add a bass to make this complete: ~]") + note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2") .sound("gm_electric_guitar_muted").delay(.5), sound("").bank("RolandTR707").delay(.5), - n("<4 [3@3 4] [<2 0> ~@16] ~>/2") + n("<4 [3@3 4] [<2 0> ~@16] ~>") .scale("D4:minor").sound("gm_accordion:2") .room(2).gain(.4), - n("<0 [~ 0] 4 [3 2] [0 ~] [0 ~] <0 2> ~>*2") + n("[0 [~ 0] 4 [3 2] [0 ~] [0 ~] <0 2> ~]/2") .scale("D2:minor") .sound("sawtooth,triangle").lpf(800) )`} @@ -237,19 +237,18 @@ Try adding `.hush()` at the end of one of the patterns in the stack... **speed** -").room(.2)`} /> +").room(.2)`} /> **fast and slow** We can use `fast` and `slow` to change the tempo of a pattern outside of Mini-Notation: - + @@ -261,13 +260,13 @@ What happens if you use a pattern like `.fast("<1 [2 4]>")`? By the way, inside Mini-Notation, `fast` is `*` and `slow` is `/`. -")`} /> +")`} /> ## automation with signals Instead of changing values stepwise, we can also control them with signals: - + @@ -283,7 +282,7 @@ The gain is visualized as transparency in the pianoroll. By default, waves oscillate between 0 to 1. We can change that with `range`: - + @@ -295,9 +294,9 @@ We can change the automation speed with slow / fast: /2") + tune={`note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") .sound("sawtooth") -.lpf(sine.range(100, 2000).slow(8))`} +.lpf(sine.range(100, 2000).slow(4))`} /> @@ -308,15 +307,15 @@ The whole automation will now take 8 cycles to repeat. ## Recap -| name | example | -| ----- | --------------------------------------------------------------------------------------- | -| lpf | ")`} /> | -| vowel | ")`} /> | -| gain | | -| delay | | -| room | | -| pan | | -| speed | ")`} /> | -| range | | +| name | example | +| ----- | ---------------------------------------------------------------------------------------- | +| lpf | ")`} /> | +| vowel | ")`} /> | +| gain | | +| delay | | +| room | | +| pan | | +| speed | ")`} /> | +| range | | Let us now take a look at some of Tidal's typical [pattern effects](/workshop/pattern-effects). diff --git a/website/src/pages/workshop/first-notes.mdx b/website/src/pages/workshop/first-notes.mdx index 230c8e604..df3c90a50 100644 --- a/website/src/pages/workshop/first-notes.mdx +++ b/website/src/pages/workshop/first-notes.mdx @@ -175,11 +175,11 @@ Try adding more notes inside the brackets and notice how it does **not** get fas **Play one sequence per cycle** -{/* <[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>/2 */} +{/* <[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4> */} /2") + tune={`note("<[36 48]*4 [34 46]*4 [41 53]*4 [39 51]*4>") .sound("gm_acoustic_bass")`} punchcard /> @@ -197,7 +197,7 @@ This is also useful for unpitched sounds: , [~ hh]*2") + tune={`sound("bd*4, [~ ]*2, [~ hh]*4") .bank("RolandTR909")`} punchcard /> @@ -209,7 +209,7 @@ Finding the right notes can be difficult.. Scales are here to help: ") -.scale("C:minor").sound("piano")`} +.scale("C:minor").sound("piano").cpm(60)`} punchcard /> @@ -236,7 +236,7 @@ Just like anything, we can automate the scale with a pattern: client:visible tune={`n("<0 -3>, 2 4 <[6,8] [7,9]>") .scale("/4") -.sound("piano")`} +.sound("piano").cpm(60)`} punchcard /> @@ -269,7 +269,7 @@ Try changing that number! client:visible tune={`n("<[4@2 4] [5@2 5] [6@2 6] [5@2 5]>*2") .scale("/4") -.sound("gm_acoustic_bass")`} +.sound("gm_acoustic_bass").cpm(60)`} punchcard /> @@ -283,7 +283,7 @@ This is also sometimes called triplet swing. You'll often find it in blues and j **Replicate** -]").sound("piano")`} punchcard /> +]").sound("piano").cpm(60)`} punchcard /> @@ -300,7 +300,7 @@ Let's recap what we've learned in this chapter: | Concept | Syntax | Example | | --------- | ------ | -------------------------------------------------------- | | Slow down | \/ | | -| Alternate | \<\> | ")`} /> | +| Alternate | \<\> | ")`} /> | | Elongate | @ | | | Replicate | ! | | @@ -318,7 +318,7 @@ New functions: /2") + tune={`note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") .sound("gm_synth_bass_1") .lpf(800) // <-- we'll learn about this soon`} /> @@ -332,7 +332,7 @@ New functions: [~ 0] 1 [0 1] [~ 1] [~ 0] 3 [0 3] [~ 3] [~ 0] 2 [0 2] [~ 2] ->*2\`).scale("C4:minor") +>*4\`).scale("C4:minor") .sound("gm_synth_strings_1")`} /> @@ -340,7 +340,7 @@ New functions: , [~ hh]*2") + tune={`sound("bd*4, [~ ]*2, [~ hh]*4") .bank("RolandTR909")`} /> @@ -355,16 +355,16 @@ It's called `stack` 😙 /2") + note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>") .sound("gm_synth_bass_1").lpf(800), n(\`< [~ 0] 2 [0 2] [~ 2] [~ 0] 1 [0 1] [~ 1] [~ 0] 3 [0 3] [~ 3] [~ 0] 2 [0 2] [~ 2] - >*2\`).scale("C4:minor") + >*4\`).scale("C4:minor") .sound("gm_synth_strings_1"), - sound("bd*2, ~ , [~ hh]*2") + sound("bd*4, [~ ]*2, [~ hh]*4") .bank("RolandTR909") )`} /> diff --git a/website/src/pages/workshop/first-sounds.mdx b/website/src/pages/workshop/first-sounds.mdx index 91ae1e5a0..c8f321b8f 100644 --- a/website/src/pages/workshop/first-sounds.mdx +++ b/website/src/pages/workshop/first-sounds.mdx @@ -147,11 +147,11 @@ We will look at other ways to change the tempo later! **Add a rests in a sequence with '~'** - + **Sub-Sequences with [brackets]** - + @@ -163,15 +163,15 @@ Similar to the whole sequence, the content of a sub-sequence will be squished to **Multiplication: Speed things up** - + -**Multiplication: Speed up sequences** +**Multiplication: Speed up subsequences** - + **Multiplication: Speeeeeeeeed things up** - + @@ -181,7 +181,7 @@ Pitch = really fast rhythm **Sub-Sub-Sequences with [[brackets]]** - + @@ -234,34 +234,39 @@ This is shorter and more readable than: Now we've learned the basics of the so called Mini-Notation, the rhythm language of Tidal. This is what we've leared so far: -| Concept | Syntax | Example | -| ----------------- | -------- | --------------------------------------------------------------------- | -| Sequence | space | | -| Sample Number | :x | | -| Rests | ~ | | -| Sub-Sequences | \[\] | | -| Sub-Sub-Sequences | \[\[\]\] | | -| Speed up | \* | | -| Parallel | , | | +| Concept | Syntax | Example | +| ----------------- | -------- | ----------------------------------------------------------------------- | +| Sequence | space | | +| Sample Number | :x | | +| Rests | ~ | | +| Sub-Sequences | \[\] | | +| Sub-Sub-Sequences | \[\[\]\] | | +| Speed up | \* | | +| Parallel | , | | The Mini-Notation is usually used inside some function. These are the functions we've seen so far: -| Name | Description | Example | -| ----- | ----------------------------------- | ----------------------------------------------------------------------- | -| sound | plays the sound of the given name | | -| bank | selects the sound bank | | -| cpm | sets the tempo in cycles per minute | | -| n | select sample number | | +| Name | Description | Example | +| ----- | ----------------------------------- | --------------------------------------------------------------------------------- | +| sound | plays the sound of the given name | | +| bank | selects the sound bank | | +| cpm | sets the tempo in cycles per minute | | +| n | select sample number | | ## Examples **Basic rock beat** - + **Classic house** - + @@ -279,7 +284,7 @@ We Will Rock you diff --git a/website/src/pages/workshop/pattern-effects.mdx b/website/src/pages/workshop/pattern-effects.mdx index 20a432b1d..f4ced4542 100644 --- a/website/src/pages/workshop/pattern-effects.mdx +++ b/website/src/pages/workshop/pattern-effects.mdx @@ -15,19 +15,19 @@ In this chapter, we are going to look at functions that are more unique to tidal **reverse patterns with rev** - + **play pattern left and modify it right with jux** - + This is the same as: @@ -36,8 +36,8 @@ Let's visualize what happens here: @@ -50,16 +50,16 @@ Try commenting out one of the two by adding `//` before a line **multiple tempos** - + This is like doing @@ -74,9 +74,9 @@ Try commenting out one or more by adding `//` before a line >")) + tune={`note("c2 [eb3,g3] ".add("<0 <1 -1>>")) .color(">").adsr("[.1 0]:.2:[1 0]") -.sound("gm_acoustic_bass").room(.5)`} +.sound("gm_acoustic_bass").room(.5).cpm(60)`} punchcard /> @@ -92,7 +92,7 @@ We can add as often as we like: client:visible tune={`note("c2 [eb3,g3]".add("<0 <1 -1>>").add("0,7")) .color(">").adsr("[.1 0]:.2:[1 0]") -.sound("gm_acoustic_bass").room(.5)`} +.sound("gm_acoustic_bass").room(.5).cpm(60)`} punchcard /> @@ -100,7 +100,7 @@ We can add as often as we like: [~ <4 1>]>*2".add("<0 [0,2,4]>/4")) + tune={`n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>")) .scale("C5:minor").release(.5) .sound("gm_xylophone").room(.5)`} punchcard @@ -111,7 +111,7 @@ We can add as often as we like: [~ <4 1>]>*2".add("<0 [0,2,4]>/4")) + n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>")) .scale("C5:minor") .sound("gm_xylophone") .room(.4).delay(.125), @@ -119,17 +119,17 @@ We can add as often as we like: .adsr("[.1 0]:.2:[1 0]") .sound("gm_acoustic_bass") .room(.5), - n("0 1 [2 3] 2").sound("jazz").jux(rev).slow(2) + n("0 1 [2 3] 2").sound("jazz").jux(rev) )`} /> **ply** - + this is like writing: - + @@ -141,10 +141,10 @@ Try patterning the `ply` function, for example using `"<1 2 1 3>"` ] <2 3> [~ 1]>" - .off(1/8, x=>x.add(4)) - //.off(1/4, x=>x.add(7)) -).scale("/4") + tune={`n("0 [4 <3 2>] <2 3> [~ 1]" + .off(1/16, x=>x.add(4)) + //.off(1/8, x=>x.add(7)) +).scale("/2") .s("triangle").room(.5).ds(".1:0").delay(.5)`} punchcard /> @@ -159,14 +159,14 @@ off is also useful for sounds: x.speed(1.5).gain(.25))`} + tune={`s("bd sd [rim bd] sd,[~ hh]*4").bank("CasioRZ1") + .off(1/16, x=>x.speed(1.5).gain(.25))`} /> -| name | description | example | -| ---- | ------------------------------ | ----------------------------------------------------------------------------------- | -| rev | reverse | | -| jux | split left/right, modify right | | -| add | add numbers / notes | ")).scale("C:minor")`} /> | -| ply | speed up each event n times | ")`} /> | -| off | copy, shift time & modify | x.speed(2))`} /> | +| name | description | example | +| ---- | ------------------------------ | ------------------------------------------------------------------------------------------- | +| rev | reverse | | +| jux | split left/right, modify right | | +| add | add numbers / notes | ")).scale("C:minor")`} /> | +| ply | speed up each event n times | ")`} /> | +| off | copy, shift time & modify | x.speed(2))`} /> | diff --git a/website/src/pages/workshop/recap.mdx b/website/src/pages/workshop/recap.mdx index 9260a8f6a..fda7a1717 100644 --- a/website/src/pages/workshop/recap.mdx +++ b/website/src/pages/workshop/recap.mdx @@ -13,12 +13,12 @@ This page is just a listing of all functions covered in the workshop! | Concept | Syntax | Example | | ----------------- | -------- | --------------------------------------------------------------------- | -| Sequence | space | | +| Sequence | space | | | Sample Number | :x | | | Rests | ~ | | | Sub-Sequences | \[\] | | -| Sub-Sub-Sequences | \[\[\]\] | | -| Speed up | \* | | +| Sub-Sub-Sequences | \[\[\]\] | | +| Speed up | \* | | | Parallel | , | | | Slow down | \/ | | | Alternate | \<\> | ")`} /> | @@ -45,22 +45,22 @@ This page is just a listing of all functions covered in the workshop! | name | example | | ----- | --------------------------------------------------------------------------------------- | -| lpf | ")`} /> | +| lpf | | | vowel | ")`} /> | -| gain | | -| delay | | -| room | | -| pan | | -| speed | ")`} /> | -| range | | +| gain | | +| delay | | +| room | | +| pan | | +| speed | ")`} /> | +| range | | ## Pattern Effects | name | description | example | | ---- | ----------------------------------- | ----------------------------------------------------------------------------------- | -| cpm | sets the tempo in cycles per minute | | -| fast | speed up | | -| slow | slow down | | +| cpm | sets the tempo in cycles per minute | | +| fast | speed up | | +| slow | slow down | | | rev | reverse | | | jux | split left/right, modify right | | | add | add numbers / notes | ")).scale("C:minor")`} /> | diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx index d496b9df9..57bdb1d1e 100644 --- a/website/src/repl/Repl.jsx +++ b/website/src/repl/Repl.jsx @@ -30,7 +30,6 @@ import { getRandomTune, initCode, loadModules, shareCode, ReplContext } from './ import PlayCircleIcon from '@heroicons/react/20/solid/PlayCircleIcon'; import './Repl.css'; -const { code: randomTune, name } = getRandomTune(); const { latestCode } = settingsMap.get(); let modulesLoading, presets, drawContext, clearCanvas, isIframe; @@ -98,7 +97,7 @@ export function Repl({ embedded = false }) { // init settings - initCode().then((decoded) => { + initCode().then(async (decoded) => { let msg; if (decoded) { editor.setCode(decoded); @@ -107,6 +106,7 @@ export function Repl({ embedded = false }) { editor.setCode(latestCode); msg = `Your last session has been loaded!`; } else { + const { code: randomTune, name } = await getRandomTune(); editor.setCode(randomTune); msg = `A random code snippet named "${name}" has been loaded!`; } @@ -159,7 +159,7 @@ export function Repl({ embedded = false }) { const resetEditor = async () => { clearCanvas(); resetLoadedSounds(); - editorRef.current.repl.setCps(1); + editorRef.current.repl.setCps(0.5); await prebake(); // declare default samples }; @@ -176,7 +176,7 @@ export function Repl({ embedded = false }) { editorRef.current.evaluate(); }; const handleShuffle = async () => { - const patternData = getRandomTune(); + const patternData = await getRandomTune(); const code = patternData.code; logger(`[repl] ✨ loading random tune "${patternData.id}"`); setActivePattern(patternData.id); diff --git a/website/src/repl/tunes.mjs b/website/src/repl/tunes.mjs index 5f68ee93f..66bf47878 100644 --- a/website/src/repl/tunes.mjs +++ b/website/src/repl/tunes.mjs @@ -314,7 +314,7 @@ stack( ) .fast(2/3) .pianoroll()`; - +/* export const bridgeIsOver = `// "Bridge is over" // @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ // @by Felix Roos, bassline by BDP - The Bridge Is Over @@ -333,7 +333,7 @@ stack( s("mad").slow(2) ).cpm(78).slow(4) .pianoroll() -`; +`; */ export const goodTimes = `// "Good times" // @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ @@ -709,6 +709,8 @@ export const dinofunk = `// "Dinofunk" // @license CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ // @by Felix Roos +setcps(1) + samples({bass:'https://cdn.freesound.org/previews/614/614637_2434927-hq.mp3', dino:{b4:'https://cdn.freesound.org/previews/316/316403_5123851-hq.mp3'}}) setVoicingRange('lefthand', ['c3','a4']) diff --git a/website/src/repl/util.mjs b/website/src/repl/util.mjs index 65fdb4cf8..08e31d42e 100644 --- a/website/src/repl/util.mjs +++ b/website/src/repl/util.mjs @@ -9,8 +9,7 @@ import { createClient } from '@supabase/supabase-js'; import { nanoid } from 'nanoid'; import { writeText } from '@tauri-apps/api/clipboard'; import { createContext } from 'react'; -import { stockPatterns } from './useExamplePatterns'; -import { loadDBPatterns } from '@src/user_pattern_utils.mjs'; +import { $featuredPatterns, loadDBPatterns } from '@src/user_pattern_utils.mjs'; // Create a single supabase client for interacting with your database export const supabase = createClient( @@ -18,8 +17,9 @@ export const supabase = createClient( 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBpZHhkc3hwaGxoempuem1pZnRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTYyMzA1NTYsImV4cCI6MTk3MTgwNjU1Nn0.bqlw7802fsWRnqU5BLYtmXk_k-D1VFmbkHMywWc15NM', ); +let dbLoaded; if (typeof window !== 'undefined') { - loadDBPatterns(); + dbLoaded = loadDBPatterns(); } export async function initCode() { @@ -34,7 +34,7 @@ export async function initCode() { return hash2code(codeParam); } else if (hash) { return supabase - .from('code') + .from('code_v1') .select('code') .eq('hash', hash) .then(({ data, error }) => { @@ -61,10 +61,11 @@ export const parseJSON = (json) => { } }; -export function getRandomTune() { - const allTunes = Object.entries(stockPatterns); +export async function getRandomTune() { + await dbLoaded; + const featuredTunes = Object.entries($featuredPatterns.get()); const randomItem = (arr) => arr[Math.floor(Math.random() * arr.length)]; - const [id, data] = randomItem(allTunes); + const [_, data] = randomItem(featuredTunes); return data; } @@ -111,7 +112,7 @@ export async function shareCode(codeToShare) { // generate uuid in the browser const hash = nanoid(12); const shareUrl = window.location.origin + window.location.pathname + '?' + hash; - const { error } = await supabase.from('code').insert([{ code: codeToShare, hash, ['public']: isPublic }]); + const { error } = await supabase.from('code_v1').insert([{ code: codeToShare, hash, ['public']: isPublic }]); if (!error) { lastShared = codeToShare; // copy shareUrl to clipboard diff --git a/website/src/user_pattern_utils.mjs b/website/src/user_pattern_utils.mjs index f9fef8d20..19cba84bc 100644 --- a/website/src/user_pattern_utils.mjs +++ b/website/src/user_pattern_utils.mjs @@ -44,11 +44,11 @@ export const setViewingPatternData = (data) => { }; export function loadPublicPatterns() { - return supabase.from('code').select().eq('public', true).limit(20).order('id', { ascending: false }); + return supabase.from('code_v1').select().eq('public', true).limit(20).order('id', { ascending: false }); } export function loadFeaturedPatterns() { - return supabase.from('code').select().eq('featured', true).limit(20).order('id', { ascending: false }); + return supabase.from('code_v1').select().eq('featured', true).limit(20).order('id', { ascending: false }); } export async function loadDBPatterns() {