mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-22 02:58:32 +00:00
commit
ac409965d5
@ -979,7 +979,7 @@ function sequence(...xs) {
|
|||||||
return _sequenceCount(xs)[0];
|
return _sequenceCount(xs)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
function polymeter(steps = 0, ...args) {
|
function polymeterSteps(steps, ...args) {
|
||||||
const seqs = args.map((a) => _sequenceCount(a));
|
const seqs = args.map((a) => _sequenceCount(a));
|
||||||
if (seqs.length == 0) {
|
if (seqs.length == 0) {
|
||||||
return silence;
|
return silence;
|
||||||
@ -995,15 +995,20 @@ function polymeter(steps = 0, ...args) {
|
|||||||
if (steps == seq[1]) {
|
if (steps == seq[1]) {
|
||||||
pats.push(seq[0]);
|
pats.push(seq[0]);
|
||||||
} else {
|
} else {
|
||||||
|
console.log("aha");
|
||||||
pats.push(seq[0]._fast(Fraction(steps).div(Fraction(seq[1]))));
|
pats.push(seq[0]._fast(Fraction(steps).div(Fraction(seq[1]))));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return stack(pats);
|
return stack(...pats);
|
||||||
|
}
|
||||||
|
|
||||||
|
function polymeter(...args) {
|
||||||
|
return polymeterSteps(0, ...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
// alias
|
// alias
|
||||||
function pm(args) {
|
function pm(...args) {
|
||||||
polymeter(args);
|
polymeter(...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
function polyrhythm(...xs) {
|
function polyrhythm(...xs) {
|
||||||
@ -1168,6 +1173,7 @@ export {
|
|||||||
cat,
|
cat,
|
||||||
timeCat,
|
timeCat,
|
||||||
sequence,
|
sequence,
|
||||||
|
polymeterSteps,
|
||||||
polymeter,
|
polymeter,
|
||||||
pm,
|
pm,
|
||||||
polyrhythm,
|
polyrhythm,
|
||||||
|
|||||||
@ -13,6 +13,8 @@ import {
|
|||||||
slowcat,
|
slowcat,
|
||||||
cat,
|
cat,
|
||||||
sequence,
|
sequence,
|
||||||
|
polymeter,
|
||||||
|
polymeterSteps,
|
||||||
polyrhythm,
|
polyrhythm,
|
||||||
silence,
|
silence,
|
||||||
fast,
|
fast,
|
||||||
@ -280,6 +282,21 @@ describe('Pattern', function() {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
describe('polymeter()', () => {
|
||||||
|
it('Can layer up cycles, stepwise', () => {
|
||||||
|
assert.deepStrictEqual(
|
||||||
|
polymeterSteps(3, ["d","e"]).firstCycle(),
|
||||||
|
fastcat(pure("d"),pure("e"),pure("d")).firstCycle()
|
||||||
|
)
|
||||||
|
assert.deepStrictEqual(
|
||||||
|
polymeter(["a","b","c"],["d","e"]).fast(2).firstCycle(),
|
||||||
|
stack(sequence("a","b","c","a","b","c"),
|
||||||
|
sequence("d","e","d","e","d","e")
|
||||||
|
).firstCycle()
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('every()', () => {
|
describe('every()', () => {
|
||||||
it('Can apply a function every 3rd time', () => {
|
it('Can apply a function every 3rd time', () => {
|
||||||
assert.deepStrictEqual(
|
assert.deepStrictEqual(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user