Creates a pattern of numbers in base x from a number or pattern of numbers

This commit is contained in:
Martyn Eggleton
2026-05-27 21:23:55 +01:00
parent 0c61cd7670
commit d83139980b
+27
View File
@@ -4127,3 +4127,30 @@ Pattern.prototype.worklet = function (src, ...inputs) {
};
export const worklet = (...args) => pure({}).worklet(...args);
/**
* Creates a pattern of numbers in base x from a number or pattern of numbers.
*
* @name base
* @tags generators
* @param {number} n - input number to convert
* @param {number} x - base to convert to defaults to 10
* @example
* $: note(base("175 543", 10)).scale("c:major").s("saw")
* // $: note("1 7 5 5 4 3").scale("c:major").s("saw")
*/
export const base = (n, x = 10) => {
n = reify(n);
//console.log("base", n, x)
return n.withValue(v => {
let digits = [];
let value = v;
while (value > 0) {
digits.unshift(value % x);
value = Math.floor(value / x);
}
const length = digits.length;
return sequence(digits);
}).squeezeJoin()
};