From 69211b870164d0eaf3ea55358bbf9cafec5e6e39 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 12:22:26 +0100 Subject: [PATCH 1/8] Document signals --- packages/core/signal.mjs | 56 +++++++++++++++++++++++++++++ website/src/pages/learn/signals.mdx | 32 ++++++++++++++--- 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index c37ef400..546665be 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -143,7 +143,24 @@ export const rand = signal(timeToRand); export const rand2 = rand.toBipolar(); export const _brandBy = (p) => rand.fmap((x) => x < p); + +/** + * A continuous pattern of 0 or 1 (binary random), with a probability for the value being 1 + * + * @name brandBy + * @param {number} probability - a number between 0 and 1 + * @example + * s("hh*10").pan(brandBy(0.2)) + */ export const brandBy = (pPat) => reify(pPat).fmap(_brandBy).innerJoin(); + +/** + * A continuous pattern of 0 or 1 (binary random) + * + * @name brand + * @example + * s("hh*10").pan(brand) + */ export const brand = _brandBy(0.5); export const _irand = (i) => rand.fmap((x) => Math.trunc(x * i)); @@ -397,6 +414,8 @@ export const chooseInWith = (pat, xs) => { * Chooses randomly from the given list of elements. * @param {...any} xs values / patterns to choose from. * @returns {Pattern} - a continuous pattern. + * @example + * note("c2 g2!2 d2 f1").s(choose("sine", "triangle", "bd:6")) */ export const choose = (...xs) => chooseWith(rand, xs); @@ -423,6 +442,7 @@ Pattern.prototype.choose2 = function (...xs) { /** * Picks one of the elements at random each cycle. + * @synonyms randcat * @returns {Pattern} * @example * chooseCycles("bd", "hh", "sd").s().fast(8) @@ -451,10 +471,26 @@ const _wchooseWith = function (pat, ...pairs) { const wchooseWith = (...args) => _wchooseWith(...args).outerJoin(); +/** + * Chooses randomly from the given list of elements by giving a probability to each element + * @param {...any} pairs arrays of value and weight + * @returns {Pattern} - a continuous pattern. + * @example + * note("c2 g2!2 d2 f1").s(wchoose(["sine",10], ["triangle",1], ["bd:6",1])) + */ export const wchoose = (...pairs) => wchooseWith(rand, ...pairs); +/** + * Picks one of the elements at random each cycle by giving a probability to each element + * @synonyms wrandcat + * @returns {Pattern} + * @example + * wchooseCycles(["bd",10], ["hh",1], ["sd",1]).s().fast(8) + */ export const wchooseCycles = (...pairs) => _wchooseWith(rand, ...pairs).innerJoin(); +export const wrandcat = wchooseCycles; + // this function expects pat to be a pattern of floats... export const perlinWith = (pat) => { const pata = pat.fmap(Math.floor); @@ -523,6 +559,11 @@ export const degrade = register('degrade', (pat) => pat._degradeBy(0.5)); * @returns Pattern * @example * s("hh*8").undegradeBy(0.2) + * @example + * s("hh*10").layer( + * x => x.degradeBy(0.2).pan(0), + * x => x.undegradeBy(0.8).pan(1) + * ) */ export const undegradeBy = register('undegradeBy', function (x, pat) { return pat._degradeByWith( @@ -531,6 +572,21 @@ export const undegradeBy = register('undegradeBy', function (x, pat) { ); }); +/** + * Inverse of `degrade`: Randomly removes 50% of events from the pattern. Shorthand for `.undegradeBy(0.5)` + * Events that would be removed by degrade are let through by undegrade and vice versa (see second example). + * + * @name degrade + * @memberof Pattern + * @returns Pattern + * @example + * s("hh*8").undegrade() + * @example + * s("hh*10").layer( + * x => x.degrade().pan(0), + * x => x.undegrade().pan(1) + * ) + */ export const undegrade = register('undegrade', (pat) => pat._undegradeBy(0.5)); /** diff --git a/website/src/pages/learn/signals.mdx b/website/src/pages/learn/signals.mdx index ae64d812..39991c92 100644 --- a/website/src/pages/learn/signals.mdx +++ b/website/src/pages/learn/signals.mdx @@ -31,14 +31,14 @@ They can provide streams of numbers that can be sampled at discrete points in ti -## Ranges from -1 to 1 - -There is also `saw2`, `sine2`, `cosine2`, `tri2` and `square2` which have a range from -1 to 1! - ## rand +## Ranges from -1 to 1 + +There is also `saw2`, `sine2`, `cosine2`, `tri2`, `square2` and `rand2` which have a range from -1 to 1! + ## perlin @@ -47,14 +47,34 @@ There is also `saw2`, `sine2`, `cosine2`, `tri2` and `square2` which have a rang +## brand + + + +## brandBy + + + # Random Modifiers These methods add random behavior to your Patterns. +## choose + + + +## wchoose + + + ## chooseCycles +## wchooseCycles + + + ## degradeBy @@ -67,6 +87,10 @@ These methods add random behavior to your Patterns. +## undegrade + + + ## sometimesBy From 064bff6e4036bd1b32fdb35c926533cfc5f37d13 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 12:22:46 +0100 Subject: [PATCH 2/8] Document conditional modifiers --- .../src/pages/learn/conditional-modifiers.mdx | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/website/src/pages/learn/conditional-modifiers.mdx b/website/src/pages/learn/conditional-modifiers.mdx index d9b3426d..5ef3cf97 100644 --- a/website/src/pages/learn/conditional-modifiers.mdx +++ b/website/src/pages/learn/conditional-modifiers.mdx @@ -68,6 +68,43 @@ import { JsDoc } from '../../docs/JsDoc'; +## pickmod + + + +## pickF + + + +## pickmodF + + + +## pickRestart + + + +## pickmodRestart + + + +## pickReset + + + +## pickmodReset + + + +## inhabit + + + +## inhabitmod + + + + ## squeeze From fc4c70c94f038072403056adf27488f4013a0636 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 12:25:54 +0100 Subject: [PATCH 3/8] Fix codestyle --- packages/core/signal.mjs | 4 ++-- website/src/pages/learn/conditional-modifiers.mdx | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index 546665be..c07a5bec 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -146,7 +146,7 @@ export const _brandBy = (p) => rand.fmap((x) => x < p); /** * A continuous pattern of 0 or 1 (binary random), with a probability for the value being 1 - * + * * @name brandBy * @param {number} probability - a number between 0 and 1 * @example @@ -156,7 +156,7 @@ export const brandBy = (pPat) => reify(pPat).fmap(_brandBy).innerJoin(); /** * A continuous pattern of 0 or 1 (binary random) - * + * * @name brand * @example * s("hh*10").pan(brand) diff --git a/website/src/pages/learn/conditional-modifiers.mdx b/website/src/pages/learn/conditional-modifiers.mdx index 5ef3cf97..c2e22595 100644 --- a/website/src/pages/learn/conditional-modifiers.mdx +++ b/website/src/pages/learn/conditional-modifiers.mdx @@ -104,7 +104,6 @@ import { JsDoc } from '../../docs/JsDoc'; - ## squeeze From af35a1af097a83378c0228b4a02d347bb2a337d8 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 12:40:53 +0100 Subject: [PATCH 4/8] Add examples test snapshots --- test/__snapshots__/examples.test.mjs.snap | 289 ++++++++++++++++++++++ 1 file changed, 289 insertions(+) diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 186de782..5e4e924a 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -1163,6 +1163,96 @@ exports[`runs examples > example "bpsustain" example index 0 1`] = ` ] `; +exports[`runs examples > example "brand" example index 0 1`] = ` +[ + "[ 0/1 → 1/10 | s:hh pan:false ]", + "[ 1/10 → 1/5 | s:hh pan:false ]", + "[ 1/5 → 3/10 | s:hh pan:true ]", + "[ 3/10 → 2/5 | s:hh pan:true ]", + "[ 2/5 → 1/2 | s:hh pan:false ]", + "[ 1/2 → 3/5 | s:hh pan:true ]", + "[ 3/5 → 7/10 | s:hh pan:false ]", + "[ 7/10 → 4/5 | s:hh pan:true ]", + "[ 4/5 → 9/10 | s:hh pan:false ]", + "[ 9/10 → 1/1 | s:hh pan:true ]", + "[ 1/1 → 11/10 | s:hh pan:true ]", + "[ 11/10 → 6/5 | s:hh pan:false ]", + "[ 6/5 → 13/10 | s:hh pan:false ]", + "[ 13/10 → 7/5 | s:hh pan:false ]", + "[ 7/5 → 3/2 | s:hh pan:true ]", + "[ 3/2 → 8/5 | s:hh pan:true ]", + "[ 8/5 → 17/10 | s:hh pan:true ]", + "[ 17/10 → 9/5 | s:hh pan:true ]", + "[ 9/5 → 19/10 | s:hh pan:true ]", + "[ 19/10 → 2/1 | s:hh pan:false ]", + "[ 2/1 → 21/10 | s:hh pan:false ]", + "[ 21/10 → 11/5 | s:hh pan:false ]", + "[ 11/5 → 23/10 | s:hh pan:true ]", + "[ 23/10 → 12/5 | s:hh pan:false ]", + "[ 12/5 → 5/2 | s:hh pan:false ]", + "[ 5/2 → 13/5 | s:hh pan:false ]", + "[ 13/5 → 27/10 | s:hh pan:false ]", + "[ 27/10 → 14/5 | s:hh pan:false ]", + "[ 14/5 → 29/10 | s:hh pan:true ]", + "[ 29/10 → 3/1 | s:hh pan:true ]", + "[ 3/1 → 31/10 | s:hh pan:true ]", + "[ 31/10 → 16/5 | s:hh pan:true ]", + "[ 16/5 → 33/10 | s:hh pan:false ]", + "[ 33/10 → 17/5 | s:hh pan:false ]", + "[ 17/5 → 7/2 | s:hh pan:false ]", + "[ 7/2 → 18/5 | s:hh pan:true ]", + "[ 18/5 → 37/10 | s:hh pan:true ]", + "[ 37/10 → 19/5 | s:hh pan:false ]", + "[ 19/5 → 39/10 | s:hh pan:false ]", + "[ 39/10 → 4/1 | s:hh pan:true ]", +] +`; + +exports[`runs examples > example "brandBy" example index 0 1`] = ` +[ + "[ 0/1 → 1/10 | s:hh pan:false ]", + "[ 1/10 → 1/5 | s:hh pan:false ]", + "[ 1/5 → 3/10 | s:hh pan:false ]", + "[ 3/10 → 2/5 | s:hh pan:false ]", + "[ 2/5 → 1/2 | s:hh pan:false ]", + "[ 1/2 → 3/5 | s:hh pan:false ]", + "[ 3/5 → 7/10 | s:hh pan:false ]", + "[ 7/10 → 4/5 | s:hh pan:true ]", + "[ 4/5 → 9/10 | s:hh pan:false ]", + "[ 9/10 → 1/1 | s:hh pan:true ]", + "[ 1/1 → 11/10 | s:hh pan:true ]", + "[ 11/10 → 6/5 | s:hh pan:false ]", + "[ 6/5 → 13/10 | s:hh pan:false ]", + "[ 13/10 → 7/5 | s:hh pan:false ]", + "[ 7/5 → 3/2 | s:hh pan:false ]", + "[ 3/2 → 8/5 | s:hh pan:true ]", + "[ 8/5 → 17/10 | s:hh pan:true ]", + "[ 17/10 → 9/5 | s:hh pan:false ]", + "[ 9/5 → 19/10 | s:hh pan:false ]", + "[ 19/10 → 2/1 | s:hh pan:false ]", + "[ 2/1 → 21/10 | s:hh pan:false ]", + "[ 21/10 → 11/5 | s:hh pan:false ]", + "[ 11/5 → 23/10 | s:hh pan:false ]", + "[ 23/10 → 12/5 | s:hh pan:false ]", + "[ 12/5 → 5/2 | s:hh pan:false ]", + "[ 5/2 → 13/5 | s:hh pan:false ]", + "[ 13/5 → 27/10 | s:hh pan:false ]", + "[ 27/10 → 14/5 | s:hh pan:false ]", + "[ 14/5 → 29/10 | s:hh pan:false ]", + "[ 29/10 → 3/1 | s:hh pan:false ]", + "[ 3/1 → 31/10 | s:hh pan:false ]", + "[ 31/10 → 16/5 | s:hh pan:true ]", + "[ 16/5 → 33/10 | s:hh pan:false ]", + "[ 33/10 → 17/5 | s:hh pan:false ]", + "[ 17/5 → 7/2 | s:hh pan:false ]", + "[ 7/2 → 18/5 | s:hh pan:false ]", + "[ 18/5 → 37/10 | s:hh pan:false ]", + "[ 37/10 → 19/5 | s:hh pan:false ]", + "[ 19/5 → 39/10 | s:hh pan:false ]", + "[ 39/10 → 4/1 | s:hh pan:true ]", +] +`; + exports[`runs examples > example "cat" example index 0 1`] = ` [ "[ 0/1 → 1/4 | s:hh ]", @@ -1242,6 +1332,31 @@ exports[`runs examples > example "channels" example index 0 1`] = ` ] `; +exports[`runs examples > example "choose" example index 0 1`] = ` +[ + "[ 0/1 → 1/5 | note:c2 s:sine ]", + "[ 1/5 → 2/5 | note:g2 s:bd n:6 ]", + "[ 2/5 → 3/5 | note:g2 s:sine ]", + "[ 3/5 → 4/5 | note:d2 s:triangle ]", + "[ 4/5 → 1/1 | note:f1 s:bd n:6 ]", + "[ 1/1 → 6/5 | note:c2 s:bd n:6 ]", + "[ 6/5 → 7/5 | note:g2 s:triangle ]", + "[ 7/5 → 8/5 | note:g2 s:triangle ]", + "[ 8/5 → 9/5 | note:d2 s:sine ]", + "[ 9/5 → 2/1 | note:f1 s:sine ]", + "[ 2/1 → 11/5 | note:c2 s:triangle ]", + "[ 11/5 → 12/5 | note:g2 s:bd n:6 ]", + "[ 12/5 → 13/5 | note:g2 s:triangle ]", + "[ 13/5 → 14/5 | note:d2 s:sine ]", + "[ 14/5 → 3/1 | note:f1 s:triangle ]", + "[ 3/1 → 16/5 | note:c2 s:sine ]", + "[ 16/5 → 17/5 | note:g2 s:bd n:6 ]", + "[ 17/5 → 18/5 | note:g2 s:triangle ]", + "[ 18/5 → 19/5 | note:d2 s:triangle ]", + "[ 19/5 → 4/1 | note:f1 s:sine ]", +] +`; + exports[`runs examples > example "chooseCycles" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:bd ]", @@ -1807,6 +1922,28 @@ exports[`runs examples > example "degrade" example index 0 1`] = ` ] `; +exports[`runs examples > example "degrade" example index 0 2`] = ` +[ + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:hh ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 23/8 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | s:hh ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 15/4 → 31/8 | s:hh ]", + "[ 31/8 → 4/1 | s:hh ]", +] +`; + exports[`runs examples > example "degrade" example index 1 1`] = ` [ "[ 1/8 → 1/4 | s:hh ]", @@ -1827,6 +1964,51 @@ exports[`runs examples > example "degrade" example index 1 1`] = ` ] `; +exports[`runs examples > example "degrade" example index 1 2`] = ` +[ + "[ 0/1 → 1/10 | s:hh pan:0 ]", + "[ 1/10 → 1/5 | s:hh pan:0 ]", + "[ 1/5 → 3/10 | s:hh pan:1 ]", + "[ 3/10 → 2/5 | s:hh pan:1 ]", + "[ 2/5 → 1/2 | s:hh pan:0 ]", + "[ 1/2 → 3/5 | s:hh pan:1 ]", + "[ 3/5 → 7/10 | s:hh pan:0 ]", + "[ 7/10 → 4/5 | s:hh pan:1 ]", + "[ 4/5 → 9/10 | s:hh pan:0 ]", + "[ 9/10 → 1/1 | s:hh pan:1 ]", + "[ 1/1 → 11/10 | s:hh pan:1 ]", + "[ 11/10 → 6/5 | s:hh pan:0 ]", + "[ 6/5 → 13/10 | s:hh pan:0 ]", + "[ 13/10 → 7/5 | s:hh pan:0 ]", + "[ 7/5 → 3/2 | s:hh pan:1 ]", + "[ 3/2 → 8/5 | s:hh pan:1 ]", + "[ 8/5 → 17/10 | s:hh pan:1 ]", + "[ 17/10 → 9/5 | s:hh pan:1 ]", + "[ 9/5 → 19/10 | s:hh pan:1 ]", + "[ 19/10 → 2/1 | s:hh pan:0 ]", + "[ 2/1 → 21/10 | s:hh pan:0 ]", + "[ 21/10 → 11/5 | s:hh pan:0 ]", + "[ 11/5 → 23/10 | s:hh pan:1 ]", + "[ 23/10 → 12/5 | s:hh pan:0 ]", + "[ 12/5 → 5/2 | s:hh pan:0 ]", + "[ 5/2 → 13/5 | s:hh pan:0 ]", + "[ 13/5 → 27/10 | s:hh pan:0 ]", + "[ 27/10 → 14/5 | s:hh pan:0 ]", + "[ 14/5 → 29/10 | s:hh pan:1 ]", + "[ 29/10 → 3/1 | s:hh pan:1 ]", + "[ 3/1 → 31/10 | s:hh pan:1 ]", + "[ 31/10 → 16/5 | s:hh pan:1 ]", + "[ 16/5 → 33/10 | s:hh pan:0 ]", + "[ 33/10 → 17/5 | s:hh pan:0 ]", + "[ 17/5 → 7/2 | s:hh pan:0 ]", + "[ 7/2 → 18/5 | s:hh pan:1 ]", + "[ 18/5 → 37/10 | s:hh pan:1 ]", + "[ 37/10 → 19/5 | s:hh pan:0 ]", + "[ 19/5 → 39/10 | s:hh pan:0 ]", + "[ 39/10 → 4/1 | s:hh pan:1 ]", +] +`; + exports[`runs examples > example "degradeBy" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:hh ]", @@ -7352,6 +7534,51 @@ exports[`runs examples > example "undegradeBy" example index 0 1`] = ` ] `; +exports[`runs examples > example "undegradeBy" example index 1 1`] = ` +[ + "[ 0/1 → 1/10 | s:hh pan:0 ]", + "[ 1/10 → 1/5 | s:hh pan:0 ]", + "[ 1/5 → 3/10 | s:hh pan:0 ]", + "[ 3/10 → 2/5 | s:hh pan:0 ]", + "[ 2/5 → 1/2 | s:hh pan:0 ]", + "[ 1/2 → 3/5 | s:hh pan:0 ]", + "[ 3/5 → 7/10 | s:hh pan:0 ]", + "[ 7/10 → 4/5 | s:hh pan:1 ]", + "[ 4/5 → 9/10 | s:hh pan:0 ]", + "[ 9/10 → 1/1 | s:hh pan:1 ]", + "[ 1/1 → 11/10 | s:hh pan:1 ]", + "[ 11/10 → 6/5 | s:hh pan:0 ]", + "[ 6/5 → 13/10 | s:hh pan:0 ]", + "[ 13/10 → 7/5 | s:hh pan:0 ]", + "[ 7/5 → 3/2 | s:hh pan:0 ]", + "[ 3/2 → 8/5 | s:hh pan:1 ]", + "[ 8/5 → 17/10 | s:hh pan:1 ]", + "[ 17/10 → 9/5 | s:hh pan:0 ]", + "[ 9/5 → 19/10 | s:hh pan:0 ]", + "[ 19/10 → 2/1 | s:hh pan:0 ]", + "[ 2/1 → 21/10 | s:hh pan:0 ]", + "[ 21/10 → 11/5 | s:hh pan:0 ]", + "[ 11/5 → 23/10 | s:hh pan:0 ]", + "[ 23/10 → 12/5 | s:hh pan:0 ]", + "[ 12/5 → 5/2 | s:hh pan:0 ]", + "[ 5/2 → 13/5 | s:hh pan:0 ]", + "[ 13/5 → 27/10 | s:hh pan:0 ]", + "[ 27/10 → 14/5 | s:hh pan:0 ]", + "[ 14/5 → 29/10 | s:hh pan:0 ]", + "[ 29/10 → 3/1 | s:hh pan:0 ]", + "[ 3/1 → 31/10 | s:hh pan:0 ]", + "[ 31/10 → 16/5 | s:hh pan:1 ]", + "[ 16/5 → 33/10 | s:hh pan:0 ]", + "[ 33/10 → 17/5 | s:hh pan:0 ]", + "[ 17/5 → 7/2 | s:hh pan:0 ]", + "[ 7/2 → 18/5 | s:hh pan:0 ]", + "[ 18/5 → 37/10 | s:hh pan:0 ]", + "[ 37/10 → 19/5 | s:hh pan:0 ]", + "[ 19/5 → 39/10 | s:hh pan:0 ]", + "[ 39/10 → 4/1 | s:hh pan:1 ]", +] +`; + exports[`runs examples > example "unison" example index 0 1`] = ` [ "[ 0/1 → 1/12 | note:d s:supersaw unison:1 ]", @@ -7619,6 +7846,68 @@ exports[`runs examples > example "vowel" example index 1 1`] = ` ] `; +exports[`runs examples > example "wchoose" example index 0 1`] = ` +[ + "[ 0/1 → 1/5 | note:c2 s:sine ]", + "[ 1/5 → 2/5 | note:g2 s:triangle ]", + "[ 2/5 → 3/5 | note:g2 s:sine ]", + "[ 3/5 → 4/5 | note:d2 s:sine ]", + "[ 4/5 → 1/1 | note:f1 s:triangle ]", + "[ 1/1 → 6/5 | note:c2 s:triangle ]", + "[ 6/5 → 7/5 | note:g2 s:sine ]", + "[ 7/5 → 8/5 | note:g2 s:sine ]", + "[ 8/5 → 9/5 | note:d2 s:sine ]", + "[ 9/5 → 2/1 | note:f1 s:sine ]", + "[ 2/1 → 11/5 | note:c2 s:sine ]", + "[ 11/5 → 12/5 | note:g2 s:sine ]", + "[ 12/5 → 13/5 | note:g2 s:sine ]", + "[ 13/5 → 14/5 | note:d2 s:sine ]", + "[ 14/5 → 3/1 | note:f1 s:sine ]", + "[ 3/1 → 16/5 | note:c2 s:sine ]", + "[ 16/5 → 17/5 | note:g2 s:sine ]", + "[ 17/5 → 18/5 | note:g2 s:sine ]", + "[ 18/5 → 19/5 | note:d2 s:sine ]", + "[ 19/5 → 4/1 | note:f1 s:sine ]", +] +`; + +exports[`runs examples > example "wchooseCycles" example index 0 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/1 → 9/8 | s:bd ]", + "[ 9/8 → 5/4 | s:bd ]", + "[ 5/4 → 11/8 | s:bd ]", + "[ 11/8 → 3/2 | s:bd ]", + "[ 3/2 → 13/8 | s:bd ]", + "[ 13/8 → 7/4 | s:bd ]", + "[ 7/4 → 15/8 | s:bd ]", + "[ 15/8 → 2/1 | s:bd ]", + "[ 2/1 → 17/8 | s:bd ]", + "[ 17/8 → 9/4 | s:bd ]", + "[ 9/4 → 19/8 | s:bd ]", + "[ 19/8 → 5/2 | s:bd ]", + "[ 5/2 → 21/8 | s:bd ]", + "[ 21/8 → 11/4 | s:bd ]", + "[ 11/4 → 23/8 | s:bd ]", + "[ 23/8 → 3/1 | s:bd ]", + "[ 3/1 → 25/8 | s:bd ]", + "[ 25/8 → 13/4 | s:bd ]", + "[ 13/4 → 27/8 | s:bd ]", + "[ 27/8 → 7/2 | s:bd ]", + "[ 7/2 → 29/8 | s:bd ]", + "[ 29/8 → 15/4 | s:bd ]", + "[ 15/4 → 31/8 | s:bd ]", + "[ 31/8 → 4/1 | s:bd ]", +] +`; + exports[`runs examples > example "when" example index 0 1`] = ` [ "[ 0/1 → 1/3 | note:c3 ]", From e6eb6c19a867e3a12a2536922977185856b0a795 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 14:15:01 +0100 Subject: [PATCH 5/8] Add random modifiers docs to its own page --- website/src/config.ts | 1 + website/src/pages/learn/random-modifiers.mdx | 85 ++++++++++++++++++++ website/src/pages/learn/signals.mdx | 78 +----------------- 3 files changed, 87 insertions(+), 77 deletions(-) create mode 100644 website/src/pages/learn/random-modifiers.mdx diff --git a/website/src/config.ts b/website/src/config.ts index 012a6542..9dee2aac 100644 --- a/website/src/config.ts +++ b/website/src/config.ts @@ -90,6 +90,7 @@ export const SIDEBAR: Sidebar = { { text: 'Time Modifiers', link: 'learn/time-modifiers' }, { text: 'Control Parameters', link: 'functions/value-modifiers' }, { text: 'Signals', link: 'learn/signals' }, + { text: 'Random Modifiers', link: 'learn/random-modifiers' }, { text: 'Conditional Modifiers', link: 'learn/conditional-modifiers' }, { text: 'Accumulation', link: 'learn/accumulation' }, { text: 'Tonal Functions', link: 'learn/tonal' }, diff --git a/website/src/pages/learn/random-modifiers.mdx b/website/src/pages/learn/random-modifiers.mdx new file mode 100644 index 00000000..7633ec69 --- /dev/null +++ b/website/src/pages/learn/random-modifiers.mdx @@ -0,0 +1,85 @@ +--- +title: Random Modifiers +layout: ../../layouts/MainLayout.astro +--- + +import { MiniRepl } from '../../docs/MiniRepl'; +import { JsDoc } from '../../docs/JsDoc'; + +# Random Modifiers + +These methods add random behavior to your Patterns. + +## choose + + + +## wchoose + + + +## chooseCycles + + + +## wchooseCycles + + + +## degradeBy + + + +## degrade + + + +## undegradeBy + + + +## undegrade + + + +## sometimesBy + + + +## sometimes + + + +## someCyclesBy + + + +## someCycles + + + +## often + + + +## rarely + + + +## almostNever + + + +## almostAlways + + + +## never + + + +## always + + + +Next up: [Conditional Modifiers](/learn/conditional-modifiers) diff --git a/website/src/pages/learn/signals.mdx b/website/src/pages/learn/signals.mdx index 39991c92..7c9d69df 100644 --- a/website/src/pages/learn/signals.mdx +++ b/website/src/pages/learn/signals.mdx @@ -55,80 +55,4 @@ There is also `saw2`, `sine2`, `cosine2`, `tri2`, `square2` and `rand2` which ha -# Random Modifiers - -These methods add random behavior to your Patterns. - -## choose - - - -## wchoose - - - -## chooseCycles - - - -## wchooseCycles - - - -## degradeBy - - - -## degrade - - - -## undegradeBy - - - -## undegrade - - - -## sometimesBy - - - -## sometimes - - - -## someCyclesBy - - - -## someCycles - - - -## often - - - -## rarely - - - -## almostNever - - - -## almostAlways - - - -## never - - - -## always - - - -Next up: [Conditional Modifiers](/learn/conditional-modifiers) +Next up: [Random Modifiers](/learn/random-modifiers) From 731d545a3feb452a9f21effe985d10351ce7d8b4 Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 14:15:20 +0100 Subject: [PATCH 6/8] Fix undegrade doc naming --- packages/core/signal.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index c07a5bec..7c931aff 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -576,7 +576,7 @@ export const undegradeBy = register('undegradeBy', function (x, pat) { * Inverse of `degrade`: Randomly removes 50% of events from the pattern. Shorthand for `.undegradeBy(0.5)` * Events that would be removed by degrade are let through by undegrade and vice versa (see second example). * - * @name degrade + * @name undegrade * @memberof Pattern * @returns Pattern * @example From 8b96e3a6d198d61c67a9f6df47fa6c11743c058b Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 14:17:48 +0100 Subject: [PATCH 7/8] Fix snapshot undegrade function name --- test/__snapshots__/examples.test.mjs.snap | 134 +++++++++++----------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 5e4e924a..115a9ef1 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -1922,28 +1922,6 @@ exports[`runs examples > example "degrade" example index 0 1`] = ` ] `; -exports[`runs examples > example "degrade" example index 0 2`] = ` -[ - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 9/8 → 5/4 | s:hh ]", - "[ 5/4 → 11/8 | s:hh ]", - "[ 3/2 → 13/8 | s:hh ]", - "[ 13/8 → 7/4 | s:hh ]", - "[ 7/4 → 15/8 | s:hh ]", - "[ 2/1 → 17/8 | s:hh ]", - "[ 17/8 → 9/4 | s:hh ]", - "[ 19/8 → 5/2 | s:hh ]", - "[ 23/8 → 3/1 | s:hh ]", - "[ 3/1 → 25/8 | s:hh ]", - "[ 13/4 → 27/8 | s:hh ]", - "[ 15/4 → 31/8 | s:hh ]", - "[ 31/8 → 4/1 | s:hh ]", -] -`; - exports[`runs examples > example "degrade" example index 1 1`] = ` [ "[ 1/8 → 1/4 | s:hh ]", @@ -1964,51 +1942,6 @@ exports[`runs examples > example "degrade" example index 1 1`] = ` ] `; -exports[`runs examples > example "degrade" example index 1 2`] = ` -[ - "[ 0/1 → 1/10 | s:hh pan:0 ]", - "[ 1/10 → 1/5 | s:hh pan:0 ]", - "[ 1/5 → 3/10 | s:hh pan:1 ]", - "[ 3/10 → 2/5 | s:hh pan:1 ]", - "[ 2/5 → 1/2 | s:hh pan:0 ]", - "[ 1/2 → 3/5 | s:hh pan:1 ]", - "[ 3/5 → 7/10 | s:hh pan:0 ]", - "[ 7/10 → 4/5 | s:hh pan:1 ]", - "[ 4/5 → 9/10 | s:hh pan:0 ]", - "[ 9/10 → 1/1 | s:hh pan:1 ]", - "[ 1/1 → 11/10 | s:hh pan:1 ]", - "[ 11/10 → 6/5 | s:hh pan:0 ]", - "[ 6/5 → 13/10 | s:hh pan:0 ]", - "[ 13/10 → 7/5 | s:hh pan:0 ]", - "[ 7/5 → 3/2 | s:hh pan:1 ]", - "[ 3/2 → 8/5 | s:hh pan:1 ]", - "[ 8/5 → 17/10 | s:hh pan:1 ]", - "[ 17/10 → 9/5 | s:hh pan:1 ]", - "[ 9/5 → 19/10 | s:hh pan:1 ]", - "[ 19/10 → 2/1 | s:hh pan:0 ]", - "[ 2/1 → 21/10 | s:hh pan:0 ]", - "[ 21/10 → 11/5 | s:hh pan:0 ]", - "[ 11/5 → 23/10 | s:hh pan:1 ]", - "[ 23/10 → 12/5 | s:hh pan:0 ]", - "[ 12/5 → 5/2 | s:hh pan:0 ]", - "[ 5/2 → 13/5 | s:hh pan:0 ]", - "[ 13/5 → 27/10 | s:hh pan:0 ]", - "[ 27/10 → 14/5 | s:hh pan:0 ]", - "[ 14/5 → 29/10 | s:hh pan:1 ]", - "[ 29/10 → 3/1 | s:hh pan:1 ]", - "[ 3/1 → 31/10 | s:hh pan:1 ]", - "[ 31/10 → 16/5 | s:hh pan:1 ]", - "[ 16/5 → 33/10 | s:hh pan:0 ]", - "[ 33/10 → 17/5 | s:hh pan:0 ]", - "[ 17/5 → 7/2 | s:hh pan:0 ]", - "[ 7/2 → 18/5 | s:hh pan:1 ]", - "[ 18/5 → 37/10 | s:hh pan:1 ]", - "[ 37/10 → 19/5 | s:hh pan:0 ]", - "[ 19/5 → 39/10 | s:hh pan:0 ]", - "[ 39/10 → 4/1 | s:hh pan:1 ]", -] -`; - exports[`runs examples > example "degradeBy" example index 0 1`] = ` [ "[ 0/1 → 1/8 | s:hh ]", @@ -7503,6 +7436,73 @@ exports[`runs examples > example "tri" example index 0 1`] = ` ] `; +exports[`runs examples > example "undegrade" example index 0 1`] = ` +[ + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 9/8 → 5/4 | s:hh ]", + "[ 5/4 → 11/8 | s:hh ]", + "[ 3/2 → 13/8 | s:hh ]", + "[ 13/8 → 7/4 | s:hh ]", + "[ 7/4 → 15/8 | s:hh ]", + "[ 2/1 → 17/8 | s:hh ]", + "[ 17/8 → 9/4 | s:hh ]", + "[ 19/8 → 5/2 | s:hh ]", + "[ 23/8 → 3/1 | s:hh ]", + "[ 3/1 → 25/8 | s:hh ]", + "[ 13/4 → 27/8 | s:hh ]", + "[ 15/4 → 31/8 | s:hh ]", + "[ 31/8 → 4/1 | s:hh ]", +] +`; + +exports[`runs examples > example "undegrade" example index 1 1`] = ` +[ + "[ 0/1 → 1/10 | s:hh pan:0 ]", + "[ 1/10 → 1/5 | s:hh pan:0 ]", + "[ 1/5 → 3/10 | s:hh pan:1 ]", + "[ 3/10 → 2/5 | s:hh pan:1 ]", + "[ 2/5 → 1/2 | s:hh pan:0 ]", + "[ 1/2 → 3/5 | s:hh pan:1 ]", + "[ 3/5 → 7/10 | s:hh pan:0 ]", + "[ 7/10 → 4/5 | s:hh pan:1 ]", + "[ 4/5 → 9/10 | s:hh pan:0 ]", + "[ 9/10 → 1/1 | s:hh pan:1 ]", + "[ 1/1 → 11/10 | s:hh pan:1 ]", + "[ 11/10 → 6/5 | s:hh pan:0 ]", + "[ 6/5 → 13/10 | s:hh pan:0 ]", + "[ 13/10 → 7/5 | s:hh pan:0 ]", + "[ 7/5 → 3/2 | s:hh pan:1 ]", + "[ 3/2 → 8/5 | s:hh pan:1 ]", + "[ 8/5 → 17/10 | s:hh pan:1 ]", + "[ 17/10 → 9/5 | s:hh pan:1 ]", + "[ 9/5 → 19/10 | s:hh pan:1 ]", + "[ 19/10 → 2/1 | s:hh pan:0 ]", + "[ 2/1 → 21/10 | s:hh pan:0 ]", + "[ 21/10 → 11/5 | s:hh pan:0 ]", + "[ 11/5 → 23/10 | s:hh pan:1 ]", + "[ 23/10 → 12/5 | s:hh pan:0 ]", + "[ 12/5 → 5/2 | s:hh pan:0 ]", + "[ 5/2 → 13/5 | s:hh pan:0 ]", + "[ 13/5 → 27/10 | s:hh pan:0 ]", + "[ 27/10 → 14/5 | s:hh pan:0 ]", + "[ 14/5 → 29/10 | s:hh pan:1 ]", + "[ 29/10 → 3/1 | s:hh pan:1 ]", + "[ 3/1 → 31/10 | s:hh pan:1 ]", + "[ 31/10 → 16/5 | s:hh pan:1 ]", + "[ 16/5 → 33/10 | s:hh pan:0 ]", + "[ 33/10 → 17/5 | s:hh pan:0 ]", + "[ 17/5 → 7/2 | s:hh pan:0 ]", + "[ 7/2 → 18/5 | s:hh pan:1 ]", + "[ 18/5 → 37/10 | s:hh pan:1 ]", + "[ 37/10 → 19/5 | s:hh pan:0 ]", + "[ 19/5 → 39/10 | s:hh pan:0 ]", + "[ 39/10 → 4/1 | s:hh pan:1 ]", +] +`; + exports[`runs examples > example "undegradeBy" example index 0 1`] = ` [ "[ 1/8 → 1/4 | s:hh ]", From aba4e72d2900a054df669581fb2f8207fd5f76cd Mon Sep 17 00:00:00 2001 From: Alexandre Gravel-Raymond Date: Sun, 24 Mar 2024 14:18:25 +0100 Subject: [PATCH 8/8] Fewer undocumented functions --- undocumented.json | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/undocumented.json b/undocumented.json index 0179340e..63f5d36b 100644 --- a/undocumented.json +++ b/undocumented.json @@ -380,6 +380,7 @@ "bjork", "euclidrot" ], + "/packages/core/zyklus.mjs": [], "/packages/core/signal.mjs": [ "steady", "signal", @@ -392,18 +393,14 @@ "tri2", "time", "_brandBy", - "brandBy", - "brand", "_irand", "pickSqueeze", "pickmodSqueeze", "__chooseWith", "randcat", - "wchoose", - "wchooseCycles", + "wrandcat", "perlinWith", - "degradeByWith", - "undegrade" + "degradeByWith" ], "/packages/core/speak.mjs": [ "speak" @@ -415,7 +412,6 @@ "/packages/core/neocyclist.mjs": [ "NeoCyclist" ], - "/packages/core/zyklus.mjs": [], "/packages/core/cyclist.mjs": [ "Cyclist" ],