# Polyrhythms with Beat Chop

Hi.

I am trying to design a patch that can be used to create and visualize basic polyrhythms.

Currently I am using a beat chop, utilising the ramp and beat outputs to drive a circle around the edge of a shape with x sides, and then trigger an oscillator on every beat.

How would I go about converting this beat output which counts to four, into a count for three, five or seven beats in the same time period?

for example, In the patch I have attatched, how would I achieve the same thing for a triangle as I am with the square using the same beat chop?

Ideally i would like a different noise to trigger for downbeat compared to the rest of the beats in each bar, but I’m already unsure the best way of

just implementing the rhythms.

If anybody has any tips or solutions for something like this I would greatly appreciate it.

Thankyou.

poly.2.toe (7.1 KB)

Could you use an LFO CHOP and then feed it to an Expression CHOP with `math.floor(me.inputVal)` for the beats?

the LFO CHOP is nice for this - also when creating multiple channels with it and then utilizing `me.inputIndex` to control the Frequency or Phase parameters.

Otherwise useful also the Speed CHOP. The Speed CHOP increases by the input value over 1 second. So when you input a value via a Constant CHOP equal to `BPM / 60` with BPM being the value of your beats per minute, and feed that to the first input of a Speed CHOP which loops over a range of 0-1, you get a 1 beat ramp from it.
Add another channel to the Constant CHOP with a value of `BPM / 60 / COB` where COB is the count of beats and you get a second ramp… You can continue this as much as you like.
Don’t forget to reset the Speed CHOP when adding input channels so they are all in sync.

cheers
Markus

Hello again,

thinking about it, the LFO is really nice for it when used with the Octave Control input.

On the Channel Page of the LFO create as many channels as you need. The base frequency for the LFO should be the BPM divided by the framerate for example `128/me.time.rate`.
Now add a constant CHOP for which you create as many channels as you have in your LFO and specify the octave offset value as `-math.log2(n)` where `n` is the count of beats.

Similar to the Speed CHOP, don’t forget to reset the LFO when adding new channels…

Instead of the expression, you could also use a Function CHOP and calculate the logN of the input values, add a Math CHOP to Negate the values and it becomes even cleaner

cheers
Markus