add arrange function

This commit is contained in:
Felix Roos 2023-03-03 20:17:23 +01:00
parent 4bfeaa47bf
commit 487ccb90a1
2 changed files with 18 additions and 0 deletions

View File

@ -1284,6 +1284,20 @@ export function timeCat(...timepats) {
return stack(...pats);
}
/**
* Allows to arrange multiple patterns together over multiple cycles.
* Takes a variable number of arrays with two elements specifying the number of cycles and the pattern to use.
*
* @return {Pattern}
* @example
* arrange([4, "<c a f e>(3,8)"],[2, "<g a>(5,8)"]).note()
*/
export function arrange(...sections) {
const total = sections.reduce((sum, [cycles]) => sum + cycles, 0);
sections = sections.map(([cycles, section]) => [cycles, section.fast(cycles)]);
return timeCat(...sections).slow(total);
}
export function fastcat(...pats) {
return slowcat(...pats)._fast(pats.length);
}

View File

@ -49,6 +49,10 @@ As a chained function:
<JsDoc client:idle name="timeCat" h={0} />
## arrange
<JsDoc client:idle name="arrange" h={0} />
## polymeter
<JsDoc client:idle name="polymeter" h={0} />