From d79716c3f8486a1f9550bc4b3e548d19b33b443d Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 30 Jul 2022 09:27:43 +0100 Subject: [PATCH] add chooseInWith/chooseCycles --- packages/core/signal.mjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/core/signal.mjs b/packages/core/signal.mjs index b3eb2d3b..98d75591 100644 --- a/packages/core/signal.mjs +++ b/packages/core/signal.mjs @@ -134,6 +134,19 @@ export const chooseWith = (pat, xs) => { export const choose = (...xs) => chooseWith(rand, xs); +export const chooseInWith = (pat, xs) => { + xs = xs.map(reify); + if (xs.length == 0) { + return silence; + } + return pat + .range(0, xs.length) + .fmap((i) => xs[Math.floor(i)]) + .innerJoin(); +}; + +export const chooseCycles = (...xs) => chooseInWith(rand.segment(1), xs); + const _wchooseWith = function (pat, ...pairs) { const values = pairs.map((pair) => reify(pair[0])); const weights = [];