mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-24 12:08:28 +00:00
reify all the things
This commit is contained in:
parent
e9e76f7259
commit
96bac589cb
31
strudel.mjs
31
strudel.mjs
@ -442,13 +442,13 @@ class Pattern {
|
|||||||
}
|
}
|
||||||
|
|
||||||
every(n, func) {
|
every(n, func) {
|
||||||
pats = Array(n-1).fill(this)
|
const pats = Array(n-1).fill(this)
|
||||||
pats.unshift(this)
|
pats.unshift(this)
|
||||||
return slowcat(pats)
|
return slowcat(...pats)
|
||||||
}
|
}
|
||||||
|
|
||||||
append(other) {
|
append(other) {
|
||||||
return fastcat([this, other])
|
return fastcat(...[this, other])
|
||||||
}
|
}
|
||||||
|
|
||||||
rev() {
|
rev() {
|
||||||
@ -504,19 +504,19 @@ function steady(value) {
|
|||||||
return new Pattern(span => Hap(undefined, span, value))
|
return new Pattern(span => Hap(undefined, span, value))
|
||||||
}
|
}
|
||||||
|
|
||||||
function stack(pats) {
|
function stack(...pats) {
|
||||||
var pats = pats.map(reify)
|
pats = pats.map(reify)
|
||||||
var query = function(span) {
|
var query = function(span) {
|
||||||
return flatten(pats.map(pat => pat.query(span)))
|
return flatten(pats.map(pat => pat.query(span)))
|
||||||
}
|
}
|
||||||
return new Pattern(query)
|
return new Pattern(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
function slowcat(pats) {
|
function slowcat(...pats) {
|
||||||
// Concatenation: combines a list of patterns, switching between them
|
// Concatenation: combines a list of patterns, switching between them
|
||||||
// successively, one per cycle.
|
// successively, one per cycle.
|
||||||
// (currently behaves slightly differently from Tidal)
|
// (currently behaves slightly differently from Tidal)
|
||||||
//var pats = pats.map(reify)
|
pats = pats.map(reify)
|
||||||
var query = function(span) {
|
var query = function(span) {
|
||||||
var pat = pats[Math.floor(span.begin) % pats.length]
|
var pat = pats[Math.floor(span.begin) % pats.length]
|
||||||
return pat.query(span)
|
return pat.query(span)
|
||||||
@ -524,19 +524,14 @@ function slowcat(pats) {
|
|||||||
return new Pattern(query)._splitQueries()
|
return new Pattern(query)._splitQueries()
|
||||||
}
|
}
|
||||||
|
|
||||||
function slow(...pats) {
|
function fastcat(...pats) {
|
||||||
pats = pats.map(pat => reify(pat));
|
|
||||||
return slowcat(pats);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fastcat(pats) {
|
|
||||||
// Concatenation: as with slowcat, but squashes a cycle from each
|
// Concatenation: as with slowcat, but squashes a cycle from each
|
||||||
// pattern into one cycle
|
// pattern into one cycle
|
||||||
return slowcat(pats)._fast(pats.length)
|
return slowcat(...pats)._fast(pats.length)
|
||||||
}
|
}
|
||||||
|
|
||||||
function cat(pats) {
|
function cat(...pats) {
|
||||||
return fastcat(pats)
|
return fastcat(...pats)
|
||||||
}
|
}
|
||||||
|
|
||||||
function _sequenceCount(x) {
|
function _sequenceCount(x) {
|
||||||
@ -547,7 +542,7 @@ function _sequenceCount(x) {
|
|||||||
if (x.length == 1) {
|
if (x.length == 1) {
|
||||||
return _sequenceCount(x[0])
|
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]
|
return [reify(x), 1]
|
||||||
}
|
}
|
||||||
@ -599,5 +594,5 @@ function silence() {
|
|||||||
|
|
||||||
|
|
||||||
export {Fraction, TimeSpan, Hap, Pattern,
|
export {Fraction, TimeSpan, Hap, Pattern,
|
||||||
pure, stack, slowcat, slow, fastcat, cat, sequence, polymeter}
|
pure, reify, stack, slowcat, fastcat, cat, sequence, polymeter, silence}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user