reify all the things

This commit is contained in:
Felix Roos 2022-02-05 20:35:49 +01:00
parent e9e76f7259
commit 96bac589cb

View File

@ -442,13 +442,13 @@ class Pattern {
}
every(n, func) {
pats = Array(n-1).fill(this)
const pats = Array(n-1).fill(this)
pats.unshift(this)
return slowcat(pats)
return slowcat(...pats)
}
append(other) {
return fastcat([this, other])
return fastcat(...[this, other])
}
rev() {
@ -504,19 +504,19 @@ function steady(value) {
return new Pattern(span => Hap(undefined, span, value))
}
function stack(pats) {
var pats = pats.map(reify)
function stack(...pats) {
pats = pats.map(reify)
var query = function(span) {
return flatten(pats.map(pat => pat.query(span)))
}
return new Pattern(query)
}
function slowcat(pats) {
function slowcat(...pats) {
// Concatenation: combines a list of patterns, switching between them
// successively, one per cycle.
// (currently behaves slightly differently from Tidal)
//var pats = pats.map(reify)
pats = pats.map(reify)
var query = function(span) {
var pat = pats[Math.floor(span.begin) % pats.length]
return pat.query(span)
@ -524,19 +524,14 @@ function slowcat(pats) {
return new Pattern(query)._splitQueries()
}
function slow(...pats) {
pats = pats.map(pat => reify(pat));
return slowcat(pats);
}
function fastcat(pats) {
function fastcat(...pats) {
// Concatenation: as with slowcat, but squashes a cycle from each
// pattern into one cycle
return slowcat(pats)._fast(pats.length)
return slowcat(...pats)._fast(pats.length)
}
function cat(pats) {
return fastcat(pats)
function cat(...pats) {
return fastcat(...pats)
}
function _sequenceCount(x) {
@ -547,7 +542,7 @@ function _sequenceCount(x) {
if (x.length == 1) {
return _sequenceCount(x[0])
}
return [fastcat(x.map(a => _sequenceCount(a)[0])), x.length]
return [fastcat(...x.map(a => _sequenceCount(a)[0])), x.length]
}
return [reify(x), 1]
}
@ -599,5 +594,5 @@ function silence() {
export {Fraction, TimeSpan, Hap, Pattern,
pure, stack, slowcat, slow, fastcat, cat, sequence, polymeter}
pure, reify, stack, slowcat, fastcat, cat, sequence, polymeter, silence}