diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index c37ef400..7c931aff 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 undegrade + * @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/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 186de782..115a9ef1 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 ]", @@ -7321,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 ]", @@ -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 ]", 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" ], 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/conditional-modifiers.mdx b/website/src/pages/learn/conditional-modifiers.mdx index d9b3426d..c2e22595 100644 --- a/website/src/pages/learn/conditional-modifiers.mdx +++ b/website/src/pages/learn/conditional-modifiers.mdx @@ -68,6 +68,42 @@ import { JsDoc } from '../../docs/JsDoc'; +## pickmod + + + +## pickF + + + +## pickmodF + + + +## pickRestart + + + +## pickmodRestart + + + +## pickReset + + + +## pickmodReset + + + +## inhabit + + + +## inhabitmod + + + ## squeeze 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 ae64d812..7c9d69df 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,64 +47,12 @@ There is also `saw2`, `sine2`, `cosine2`, `tri2` and `square2` which have a rang -# Random Modifiers +## brand -These methods add random behavior to your Patterns. + -## chooseCycles +## brandBy - + -## degradeBy - - - -## degrade - - - -## undegradeBy - - - -## sometimesBy - - - -## sometimes - - - -## someCyclesBy - - - -## someCycles - - - -## often - - - -## rarely - - - -## almostNever - - - -## almostAlways - - - -## never - - - -## always - - - -Next up: [Conditional Modifiers](/learn/conditional-modifiers) +Next up: [Random Modifiers](/learn/random-modifiers)