I think I fatally misunderstand something with the syntax. Why doesn't remap() simply transform the n() to "4 5 9 4 5"?
let remap = register('remap', (mapping, x) => {return mapping[x]})
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2".remap("0459000000"))
// .n("1 2 3 1 2").remap("0459000000")
.scale("C:minor")
I also thought of solving the issue without registering but no luck:
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2"
.when("1", x => x.add("0459000000"[x]).sub(x))
)
.scale("C:minor")
Probably I make it more complicated than I should.
Maybe this one?
// this doesn't seem to work
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2".pick("0 4 5 9"))
.scale("C:minor")
// this does work but I want to type less
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2".pick(["0","4","5","9"]))
.scale("C:minor")
OK, I think maybe I found the solution.
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2".pick(map("0 4 5 9")))
.scale("C:minor")
The solution delivered by froos on Discord seems to be working just fine.
let yoko = register('yoko',(patt)=>patt.queryArc(0,1).map(h=>h.value))
setcpm(66/4)
s("fmpiano")
.euclid(11,16)
.n("1 2 3 1 2".pick("0 2 5 9".yoko()))
.scale("C:minor")