Map binary values?

I remember seeing a function that would allow mapping of binary values, but I can't seem to find it anymore...

Given a binary value...

binaryN 8 12345678

I'd like to have the 0's map to one value, and the 1's map to another. Ideally for sample values and or amp/legato for subtler effects.

stitch can do this with two values

s "moog"
# ampbus "a" (stitch (binaryN 16 48170) "0.5" "0.1")
# cut 1
note (stitch (binaryN 16 48170) "d" "g")
# s "moog"
# cut 1

[edit] a little tutorial I wrote:

2 Likes

Amazing, thanks -- that's way more concise than what I was previously doing!

1 Like

No worries! Further to this, something I've used is to take (for example) a pattern of notes:

let bass =  "[4 0 0 0 3 0 0 0 4 0 4 5]"

and convert that to a binary pattern, where 0 in the note pattern are 0 in the binary pattern, anything else becomes 1 in the binary pattern

binpat = (/= 0) <$> (bass:: Pattern Int)

Not sure if that's of interest too?

4 Likes