Why does this polymeter sound this way?

Ok i'm doing

d1$"bd ~ ~ ~ ~ , hh hh [ hh hh sn ]}"

I was expecting bd on the first beat, but instead it's a bunch of hh before.

I'm trying to do something like this
[bd ~ ~ ~, hh hh hh hh sn] === hh and sn in 5 beats polymetric.
together with something like hh in 7/12 over 2 bars long. Or something arbitrary of that sort. Is that possible?

1 Like

Maybe it isn't as clear as it can be:
bd ~ ~ ~ ~ === 4 beats
hh hh hh hh sn === 5 beats, so the snare wraps around

so the output should be (bd,hh) (~,hh) (~,hh) (~,hh) (bd,sn) (~,hh) (~,hh) (~,hh) (bd,hh) (~,sn)

Also i want to pair it with something arbitrary like a 7/12 over 2 bars long

from first principles (using only stack [,], cat <>, fast *4):

d1 $ s "[<bd ~ ~ ~>, <hh hh hh hh sn>]*4"

there may be other (shorter) syntax for this in mininotation. [EDIT] yes:

d1 $ s "{bd  ~ ~ ~, hh hh hh hh sn}"

[technical remark] Semantics of { } notation seems a bit tricky: it's implemented in the parser (Tidal/ParseBP.hs at main · tidalcycles/Tidal · GitHub) as it's not purely semantical: it cannot be defined of type [Pattern a] -> Pattern a (the type of stack and cat) . The implementation of { ... } needs syntactical properties of its arguments: resolve_size is a property of TPat a, not of Pattern a.

I guess i was wrong about

It turns out that once tidal is started, when i reevaluate the sequence, it starts from where it left off. So it isn't (bd,hh ) as the first output, even if i use the panic or hush command before reevaluating.

Is there anyway of evaluating a 13/3 ? How would this look?

starts from where it left off.

it starts from where the clock currently is (it keeps ticking). try with

d1 $ s "numbers/2" >| n (slow 2 $ run 4)

(evaluate this and hush, in random order)

What do you mean by "evaluating a 13/3" (Can you write it in classical music notation)? Perhaps this?

d1 $ s "{bd ~ ~ , sn hh hh hh sn hh hh hh sn hh hh hh sn}" 

Yes that would be correct, but what if it was played against a 4/4 pattern?

After looking through t he documentation it's probably something like this

d1$n"0 1 1 1"#s"arpy" ===== 4/4
d2$n"0 1 1 1 1"#s"casio" ======= 5:4 5 beat against a 4 beat d1

d1$n"0 1 1 1 1"#s"arpy" ===== 5/4

d1$n"0 1 1 1"#s"arpy" === 4/4
d2$n"{0 1 1 1 1}%4"#s"casio" ==== 5/4 but is polymetric with d1

Good question. Tidal is very good in creating polyrythms.

I'm quite new to Tidal. For polymeters you found out to use the modulo operator, interesting.

I have one tip that helped me and might help you: if you want to visualize patterns you can use the drawLine command

For example your patterns ( I simplified them a bit):

d1 $ s "bd ~ ~ ~"

d2 $ s "{hh hh hh hh sn}%4"

can be drawn like this (changed the sound names to numbers for readability):

drawLine "0 ~ ~ ~"

drawLine "{1 1 1 1 2}%4"

It will display this in the console:

|0   |0   |0   |0   |0    ...
|1111|2111|1211|1121|1112 ...

Perfect polymeter!

When I read your question I thought about the iter (and iter') command (which shifts the pattern every cycle), it does something which looks a bit similar (compare measures 2, 3, 4 and 5 with the same measures above):

drawLine (iter' 4 $ "1 1 1 2")


But it is not a real polymeter.

Happy coding!

1 Like