Cyclical Poly-Rhythm

artmusicsouth's icon

I am working on a Poly-Rhythm generator and need to be able to have running cycle of ever changing onsets. For example,  one of my series of poly-ryhthm's base is 5. I want to cycle through that series with an onset on the 4th note.  I then want the next onset to start 3 notes later, then the next 2 notes later.  I want to be able to set this up for large scale running patterns. Just not sure how to do the calculations.

Wetterberg's icon

Hi, I'm having a bit of trouble with the terminology, but do you mean that you'll be running a cycle that is:

0 0 0 X 0

And then another one that is:

0 0 X 0 0 ?

"then the next 2 notes later"... do you mean that you want to alternate between these patterns?

artmusicsouth's icon

That is it but I want to nest them inside different groupings of say 5, 4, and 3.

I need to be able to generate and nest multiple patterns such as these:

5 tuplet = X O O O O  -  O X O O O  -  O O X O O  - O O O X O   etc.

4 tuplet = X O O O - O X O O - O O X O   etc.

3 tuplet = X O O - O X O - O O X   etc.

I would choose from a "reservoir" of patterns and apply this principle across a wide spectrum of durational/rhythmic patterns.

Christopher Dobrian's icon

All your examples seem to conform to the formula: choose a division d, and articulate every a attack points of that division. Off the top of my head I'd probably use a metro synched to the transport to specify the divisions (or the tempo object, if you prefer), and then use a counter (or a % object with the output of tempo) to specify the articulation points. If that's not clear enough, let me know and I'll cook up an example.

32bit's icon

Chris Dobrian could do better but I just built this starter kit using some of the objects he mentioned

Max Patch
Copy patch and select New From Clipboard in Max.

Christopher Dobrian's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Here's what I meant.

Wetterberg's icon

Ah, so you are basically looking to generate a database of sorts of these permutations in order to recombine them?

As in, right now it's not about polyrhythmicality at all, it's just about generating the patterns, yeah?

because otherwise:

X O O O O - O X O O O - O O X O O - O O O X O == X 0 0 0 0 0 repeated
and
X O O O – O X O O – O O X O == X 0 0 0 0 repeated.

freddiemas's icon

In our class, we were presented with this article on change ringing that may be helpful (attached as pdf). A very talented classmate of mine was successful in creating a max algorithm but he would have to explain it.

freddiemas's icon

Sorry, that pdf did not upload. The article is "Composing Algorithms II by means of Change-Ringing" by Lejaren Hiller and Raveesh Kumra.

32bit's icon

Yes. Chris Dobrian's gets right to the point. Notice his example mixes notevalue time arguments and ticks time arguments. In Max every 4n has 480 ticks. This is necessary when programming divisions other than duple and triple. [translate] is helpful for generating time syntax arguments.

Peter McCulloch's icon

The seq~ object is also handy, since you can add event values in floating point values. (and then scale the overall tempo via changing the speed of the phasor~)

Wetterberg's icon

@freddiemas: could you please upload it somewhere? all I could find was for-pay photocopies and such.

thanks

artmusicsouth's icon

Been away from the computer today but this is great help.  Will try and work on this over the weekend. Christopher's suggestion is headed the right way and Peter's idea taps into that I am already using seq~ with phasor~.  Got something in the works but need to work it out and haven't been able to focus on it at length today.

I'll post my patch soon once I get somewhere with it.

I would also like to see the Hiller article.  JSTOR doesn't seem to have it even.

Roman Thilenius's icon