Ask Your Question

Is it possible to alternate between non-cycle-length patterns? If so, how?

asked 2017-05-06 17:27:43 -0500

tiger-thrush gravatar image

What I mean is something along these lines:

d1 $ randcat [s "bd hh sn", s "hh*2", s "bd"]

... where the first pattern plays for three quarters of a cycle, the second for half of a cycle, and the third for one quarter (whenever they are chosen by randcat). I have tried using polymeters, as such:

d1 $ randcat [s "{bd hh sn}%4", s "{hh*2}%4", s "{bd}%4"]

... but to no avail: each pattern is still made to fit into a single cycle, looping until the cycle ends. Does Tidal support the functionality I'm looking for?

Thanks in advance!

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2017-05-09 14:48:57 -0500

bgold gravatar image

There's nothing existing, because patterns don't really "know" how long they are, and in general patterns are so flexible that it's not something there's a sensible way to keep track of.

There's kind of an ugly workaround: start out with a data type that does have a length, like a list. Then you can build the list as you like and convert to a pattern (using the preplace function <~>):

let a = ["bd", "hh", "sn"]
    b = ["hh", "hh"]
    c = ["bd"]
in d1 $ s ("x x x x" <~> (listToPat $ a++b++c))

This only works if you want everything in quarter-cycle steps, and working in randomness is another layer of complexity that I haven't figured out yet. But maybe it helps?

edit flag offensive delete link more


Thank you for the explanation and workaround! Looks like I'll have to do some hacking around to see if I can bend it to work the way I'd like, but it's certainly a step in the right direction. I'll update if I discover anything else.

tiger-thrush gravatar imagetiger-thrush ( 2017-05-10 15:04:05 -0500 )edit

Question Tools


Asked: 2017-05-06 17:27:43 -0500

Seen: 308 times

Last updated: May 09 '17