mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-11 21:58:31 +00:00
Working squeezeBind
This commit is contained in:
parent
357b0ee467
commit
c2cc6b6dc8
@ -588,7 +588,7 @@ class Pattern {
|
||||
function query(state) {
|
||||
const haps = pat_of_pats.query(state);
|
||||
function flatHap(outerHap) {
|
||||
const pat = outerHap.value.compressArc(outerHap.wholeOrPart().cycleArc());
|
||||
const pat = outerHap.value._compressSpan(outerHap.wholeOrPart().cycleArc());
|
||||
const innerHaps = pat.query(state.setSpan(outerHap.part));
|
||||
function munge(outer, inner) {
|
||||
let whole = undefined;
|
||||
@ -599,19 +599,21 @@ class Pattern {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
const part = inner.part.intersection(outer_part);
|
||||
const part = inner.part.intersection(outer.part);
|
||||
if (!part) {
|
||||
// The parts don't intersect
|
||||
return undefined;
|
||||
}
|
||||
const context = inner.combineContext(outer.context);
|
||||
const context = inner.combineContext(outer);
|
||||
return new Hap(whole, part, inner.value, context);
|
||||
}
|
||||
innerHaps.map(innerHap => munge(outerHap,innerHap))
|
||||
return innerHaps.map(innerHap => munge(outerHap, innerHap))
|
||||
}
|
||||
const flattened = haps.map((x) => x.withEvent(flatHap));
|
||||
return flattened.filter(x => x);
|
||||
const result = flatten(haps.map(flatHap));
|
||||
// remove undefineds
|
||||
return result.filter(x => x);
|
||||
}
|
||||
return new Pattern(query);
|
||||
}
|
||||
|
||||
// squeezeJoin :: Pattern (Pattern a) -> Pattern a
|
||||
|
||||
@ -33,6 +33,7 @@ import {
|
||||
square2,
|
||||
tri,
|
||||
tri2,
|
||||
id,
|
||||
} from '../strudel.mjs';
|
||||
//import { Time } from 'tone';
|
||||
import pkg from 'tone';
|
||||
@ -489,4 +490,12 @@ describe('Pattern', function() {
|
||||
)
|
||||
})
|
||||
})
|
||||
describe("squeezeJoin", () => {
|
||||
it("Can squeeze", () => {
|
||||
assert.deepStrictEqual(
|
||||
sequence("a", ["a","a"]).fmap(a => fastcat("b", "c")).squeezeJoin().firstCycle(),
|
||||
sequence(["b", "c"],[["b", "c"],["b", "c"]]).firstCycle()
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user