From 08cc9b03d7f3fe7e69a390ba187e58ccf3cb4af8 Mon Sep 17 00:00:00 2001 From: Matthew Kaney Date: Wed, 20 Aug 2025 13:22:40 -0400 Subject: [PATCH] Document functions in core/signal.mjs --- packages/core/signal.mjs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index 8b3cbc737..6c144f8e7 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -403,17 +403,23 @@ export const chooseInWith = (pat, xs) => { /** * Chooses randomly from the given list of elements. + * @synonyms chooseOut * @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); - -// todo: doc -export const chooseIn = (...xs) => chooseInWith(rand, xs); export const chooseOut = choose; +/** + * As with {choose}, but the structure comes from the chosen values, rather + * than the pattern you're using to choose with. + * @param {...any} xs + * @returns + */ +export const chooseIn = (...xs) => chooseInWith(rand, xs); + /** * Chooses from the given list of values (or patterns of values), according * to the pattern that the method is called on. The pattern should be in @@ -510,6 +516,7 @@ function _perlin(t) { const v = interp(t - ta)(timeToRand(ta))(timeToRand(tb)); return v; } + export const perlinWith = (tpat) => { return tpat.fmap(_perlin); }; @@ -555,6 +562,15 @@ export const perlin = perlinWith(time.fmap((v) => Number(v))); */ export const berlin = berlinWith(time.fmap((v) => Number(v))); +/** + * Removes events from a pattern given a signal of numbers and a cutoff + * value for interpreting that pattern as true or false. + * @param {number} withPat - A numeric pattern for comparing the main pattern + * against. Values higher than the cutoff will let events through and lower + * values will remove events from the main pattern + * @param {number} cutoff - The threshold value to use when interpreting the + * `withPat` + */ export const degradeByWith = register( 'degradeByWith', (withPat, x, pat) => pat.fmap((a) => (_) => a).appLeft(withPat.filterValues((v) => v > x)),