(by @don_kuehleon)
1) Intro
When I first started looking into polyrhythmic siteswaps, my goal was to develop ways to find patterns besides the base pattern. When I figured out a way it quickly changed to finding a way to notate these patterns in a way it’s useful if you actually try to juggle them. This document focuses on the notation part.
With the 4-ball 3:2 fountain as an example, the current notation systems are either through:
For visualisation all siteswaps are linked to JugglingLab.
All these notations are ok for 3:2, but quickly become incomprehensible for other polyrhythms, especially for practical use (like for example, what the hell is (8x,cx)(0,0)(0,0)(ax,0)(0,ax)(0,0)(cx,0)(0,0)(0,8x)(cx,0)(0,0)(0,0)*??). Perhaps polyrhythmic siteswaps in real life are so rare because their current notation is so hard to read[a]. This could change with a better alternative.
The goals of this new system:
I couldn't figure out anything until I accepted that one hand needs to be able to throw off-beat. This is the new and unusual part. The hand throwing on-beat needs to be the faster one (otherwise it gets weird) and will function as the beat-reference-system. The off-beat hand is the slower one.
For sync or async, only focusing on one hand shows the identical picture: “Throwing” the ball to the nearest beat (of the same hand) is a 2 and looks like a hold. Throwing it to the second nearest beat is a 4, and so on. This will also be true for our faster hand in a polyrhythmic juggling pattern. For the slower hand, this will not be the case and the values of a hold or a “4” will be dependent on the given polyrhythm.
2) First Example
Let’s look at an example and try to transform the sync-notation to a new notation fulfilling all the goals mentioned above.
Example 1: 4 ball 3:2 fountain, notated as (8,c)(0,0)(8,0)(0,c)(8,0)(0,0). Check the table below for better comprehension. The faster hand throws 8’s (and 0’s). The 8 appears because there is one empty “phantom” beat after each throw of this hand. If you juggle this pattern it feels like throwing 4’s. If we set the beat reference system to this hand and get rid of the phantom beats the 8 will transform to a 4. As a general rule this transformation works if we transform every number in the sync-notation, by dividing it by the lower number of the given polyrhythm. This also applies for the beat values. For 3:2, this means dividing everything by 2. This automatically gets rid of all the phantom beats of the faster hand. As a consequence, the throws of the slower hand transform from c to 6. This is actually really close to the height-feeling of the throw (with a small variance due to dwell time, more on that later). If you try to juggle this pattern all you need to know is:
The most confusing part here is that there are only two balls in the slower hand, not three, even when you repeatedly throw 6’s. But that’s because the slower hand only throws every 3rd beat.
Table 1: Transformation of beat and siteswap numbers for a 3:2 polyrhythm (FH = Fast Hand, SH = Slow Hand). The transformation is done by dividing the sync-values with the lower number of the polyrhythm (2) to obtain the new values.
3) New Notation
Now, what is the best way to notate this? There are so many different ways to do that. As a start, I worked out a version for me. This version can then be examined and revised by other jugglers.
If you look again at the table above, the new values are three 4’s as faster-hand-throws and two 6’s as slower-hand-throws for each cycle.
These are the numbers now used for the new notation. As a base I will use the sync notation (x,x) to emphasize that the left and right hand throws need to happen at the same time. The new thing will be the bracket symbol “{}”, now representing polyrhythms. If sync and multiplex deserve their own bracket, I think polyrhythms deserve one too :)
The new notation for the 3:2 4 ball fountain is:
({4,4,4},{6,6})
It indicates that the left hand throws three 4’s in the same time the right hand throws two 6’s. (By using advanced siteswap notation this could be even further simplified to ({4^3},{6^2}). But for the next examples I’ll use the non-simplified versions)
This is the best I could come up with. It may be a bit confusing at first, especially since the order of the numbers are a bit complicated to read at first. But it works really well once you come adjusted to it. Here is an overview:
4) More Examples
Let’s go through some more examples.
Example 2: 97531 in 3:2 - notated in sync as (ix,kx)(0,0)(c,0)(0,6x)(4x,0)(0,0). (Shout out to @jamesmcozens for this pattern.) Transforming everything by dividing by 2 and putting it in the new notation system results in:
({9x,6,2x},{ax,3x})
or
({9x,6,2x},{10x,3x})
This is way more readable and shows it’s doable for experienced jugglers. The left hand throws a crossing 9, a non-crossing 6 and a crossing 2, while the right hand throws a crossing 10 (or a) and a crossing 3.
Here I decided to use x to notate crossing throws for even and uneven numbers. That also means that an uneven number without an x does not cross. That’s confusing at first, but not less confusing as the alternative decision of using x for uneven numbers to mean non-crossing. This would especially get messy when a fraction starts to pop up like in the next example. Also the switch to the alphabet for numbers > 9 will get weird for fractions and is not really necessary anymore since all numbers are separated by a comma.
Example 3: 4 ball 4:3 fountain - (c,g)(0,0)(0,0)(c,0)(0,g)(0,0)(c,0)(0,0)(0,g)(c,0)(0,0)(0,0). Transforming everything by dividing by 3 and putting it in the new notation system results in:
({4,4,4,4},{5.3,5.3,5.3})
or
({4^4},{5.3^3})
This means the left hand throws four 4’s while the right hand throws three non-crossing 5.3’s (rounded from 5 ⅓). Check out the table below for better comprehension.
Table 2: Transformation of beat and siteswap numbers for a 4:3 polyrhythm (FH = Fast Hand, SH = Slow Hand). The transformation is done by dividing the sync-values with the lower number of the polyrhythm (3) to obtain the new values.
Example 4: 4:3 pattern - (gx,6x)(0,0)(0,0)(c,0)(0,gx)(0,0)(cx,0)(0,0)(0,g)(i,0)(0,0)(0,0). Transforming everything by dividing by 3 and putting it in the new notation system results in:
({5.3x,4,4x,6},{2x,5.3x,5.3})
The sync-notation is basically unreadable. The new notation is complex, but doable. While the left hand throws a crossing 5.3, a non-crossing 4, a crossing 4 and a non-crossing 6, the right hand throws a crossing 2, a crossing 5.3 and a non-crossing 5.3.
To summarize: For me the central parts are the values and the count of the numbers. Meaning a 3:2 4 ball fountain should be notated with 5 different numbers (for one cycle) with the values being 4’s and 6’s. How to exactly create a notation out of that is up for debate. My system is just a suggestion.
Here are some questions that could be up for debate in this new notation system:[f]
5) Validity
We are used to the sum of all numbers, divided by the number of beats/throws being equal to the objects juggled. Is this true here? We have to be careful with this new notation system. The faster hand is set as the beat-reference-system. It does not matter how many throws the slower hand does. As an example: The 3:2 4 ball fountain has only 5 throws per cycle, but as the faster hand as the beat-reference-system there are 6 beats per cycle. The sum of all values of ({4,4,4},{6,6}) is 24. 24 Divided by 6 is 4. This checks out.
6) Dwell times - And the need to adjust the relative throw heights
This chapter is extremely useful if the goal is to juggle the patterns in real life. Also it is important for improving animations.
The numbers of a siteswap do not describe the heights, but the beats until the ball is thrown again. Yet, they are a really good proxy for it and jugglers got used to the meaning of the numbers as heights. For sync and async patterns you can relate the different heights without any problems to the numbers, since both hands have the same dwell times. For polyrhythms it's a bit less accurate. Since you have two different bps for each hand you can get different dwell times. The slower hand can throw a 6 or 5.3 a bit lower than expected relative to a 4 of the faster hand, because it can hold onto the ball a bit longer. And this is usually what your body automatically does. So as a general rule: Throws that land on the slower hand can be thrown a bit lower. How much depends on how your body adjusts. For perfect equal dwell times you can throw the exact numbers of the new notation system as heights. On the other hand, if you keep the time equal your hands are empty, you have to adjust the heights of the throws landing into the slower hand. Check out the graphic below for visualisation:
Graphic 1: Difference between non-adjusted and adjusted versions. Green brackets represent the same dwell times on the left and same empty hand times on the right. Red lines represent the sound of the sync catches, yellow lines the sound of the async catches. Also included is the typical phrase “cold cup of tea” commonly used as a memory help for a 3:2 polyrhythm. Check out the corresponding animation via JugglingLab.
The right version is how my body automatically adjusts trying to juggle the pattern. The longer empty-hand-times on the left feel awkward to me. When focusing on the sound, which is very important trying to juggle these patterns, the two versions are different. The sound happens mostly on the catch of the balls. Doing the adjusted version, the sync catch sound, which emphasizes a new cycle of the polyrhythm, happens right after the sync throws. This works great as an auditory orientation. On the non-adjusted version the sync catch sound happens after the last throw in the cycle and before the sync throws. Since regular dwell-times are around 1.3, the catches are closer to the throws before, then the throws after, and therefore feel more connected to the former. This auditory difference, plus the awkward empty-hand-times of the non-adjusted version, makes the adjusted version more useful for me. But for someone else it could be different.
For an A:B polyrhythm and in the sync-notation, the adjustment can be done via subtracting the throws landing in the slower hand by:
2*(A-B)
For the new notation via subtracting by:
2*(A-B)/B
This sounds complicated but hopefully becomes more clear with the examples below.
The effect of the adjustment is very strong if the fraction of A and B is high, like 5:2, and weak for fractions values close to 1, like 6:5. For me, the felt heights are almost identical to the adjusted values. But since siteswap is a beat-based system, with focus on the beat-length, not the throw-heights, there is no elegant way I can think of to get rid of this problem, without changing something fundamental or over-complicating the notation. My suggestion is that the new adjusted notation, even if it breaks the beat-based rule, can work as a great addition next to the “official” non-adjusted version.
A good example to visualize how the adjustment works is by focusing on a ‘hold’ of the slower hand in a 3:2 pattern. The slower hand throws every 3rd beat. This means a hold would be notated as a non-crossing 3. But it will look like a normal hold, which is normally notated as a 2. Using the formula above, the 3 will change into a 2, exactly how the ‘throw’ would feel like. To benefit the juggler, an adjusted notation besides the other notation would help a lot to be able to try juggling the pattern. For me, realizing this height adjustment was a game changer.
As another example, let's take the relatively easy to juggle 3:2 3-ball pattern:
(8,4x)(0,0)(8x,0)(0,6x)(ax,0)(0,0)
The new notation would be:
({4,4x,5x},{2x,3x})
Using 2*(A-B)/B on the throws landing in the slower hand, the adjusted notation would be:
({4,3x,4x},{2x,3x})°
The subtraction-values also represent the value of the holds of the slower hand. In this example, and for 3:2 polyrhythms in general, the slower hand has short 1-beat holds before each throw.
For being able to distinguish between the adjusted and non-adjusted notations, the adjusted notation should have a symbol at the end. As a placeholder I choose ‘°’. When trying to juggle this pattern, people will probably be able to learn it quicker with the adjusted notation.
Using 2*(A-B), that adjusted version in sync looks like:
(8,4x)(0,0)(6x,2)(0,6x)(8x,0)(0,2)
Notice how the throws landing on the right hand land there one sync beat earlier (compared to the first sync notation) and the balls then get hold for one sync beat. That's what subtracting with 2*(A-B) in the sync notation means. You can subtract the heights landing in the slower hand with 2, because you add a hold before. The (A-B) part makes sure you can apply this pattern to all polyrhythms. For 5:3 you can add two holds in the slower hand and subtract the relevant throws by 2*(5-3) = 4. This adjustment ensures that both hands have the same amount of empty beats (0’s) after each throw and therefore the same empty-hand-times. For the new notation a division by B gets added to the formula 2*(A-B) like for everything else in the transformation:
2*(A-B)/B.
With that, you can also calculate the dwell-time of the slower hand. A regular dwell-time is 1.3 beats. This would be true for the faster hand. For the dwell time of the slower hand you need to add the value derived by the formula above::
1.3 + 2*(A-B)/B
As an example this means the dwell-time of the slower hand in a 3:2 polyrhythm is 2.3.
Validity:
The adjusted notation does not have the validity mentioned in chapter 5 anymore, because the values of the short holds disappear from the notation. It really should just be used as an additional information for the juggler. To be able to check the validity of the adjusted version you have to re-add the subtracted values. As an example:
({4,3x,4x},{2x,3x})°
In the new beat-reference system a 3:2 cycle is 6 beats long. The sum of all values in the pattern above is 16. Since there are 2 slow hand throws, the 2 subtracted values (2*(A-B)/B * 2 = 2) have to be re-added (16 + 2). 18 divided by the number of beats (18 / 6) equals 3. This checks out.
Exception:
One exception to the adjustment rule is when a siteswap-number would be transformed to a 0, or below 0. Using the new notation, for 3:2 there can be a 1x landing into the slower hand. Using the adjustment formula would transform this into a 0. This is clearly wrong. So the minimum value numbers can be transformed into has to be above 0. If this happens, and a number can’t be transformed like the formula would suggest, the original number needs to stay the same, or be transformed into a number above 0 (not sure what’s the best option right now). In these patterns the characteristic rhythm of the catches will be off. That’s not a unique problem. Throwing a 1 in a regular async pattern will also break an even async rhythm, assuming common dwell-times. Here people subconsciously will break their even throw rhythm to achieve an even catch rhythm (most of the time).
Conclusion:
For practical use, focusing on the number as throw heights, the adjusted and the non-adjusted notations are important, since both versions are perfectly valid ways to juggle polyrhythms. The catch sounds of both will produce the characteristic rhythm. It’s up to the juggler if equal dwell-times or equal empty-hand-times are preferred. The rhythm will be off, if none of the two are the same. But my guess is that most jugglers will prefer the adjusted version.
7) List of patterns
I started to gather all the interesting patterns I came across in the list below. This includes some symmetrical ones, where the faster and slower hand switches after each cycle. Because of this switch you have to be very careful on which throws to adjust.
8) TODO: Generate polyrhythmic siteswaps
What’s missing in this document is how to derive polyrhythmic patterns[o]. There are plenty of possibilities to do that. As a short overview:
[a]I definitely think this is true!
The current notation limits what we can conceive of because anything beyond sync and async isn't readable.
[b]I find this interesting. As I understand original siteswap, the value of the number does not by definition say anything about the height of the throw. All the value says, is after how many beats the object thrown lands again (simply count the beats in a ladder diagram). It then turns out that indeed this does have some correspondents to the height of the throw in real life, but from a purely mathematical stand point, the height is irrelevant, the amount of beats is all that matters. When you use number~height instead of number~beats as a basis for your system, you might accidentally loose some of the mathematical backbone of the system you are developing. Using number~height is in many cases equivalent to number~beats, so therefore it can be done in a way where it doesn't matter. But I would personally still suggest using number~beats as the basis just to make sure that the system is build up from a more mathematical basis. Very curious to hear what you think of this!
[c]I think this is the right way to approach it.
Height, tempo, and things like dwell, are practical concerns. The theory here only needs to be concerned with the sequence that objects are thrown.
It isn't a perfect analogy but it is similar to tempo and feel annotations in music. The same set of notes will be played differently depending on the context and annotations outside of the notes.
However, we don't have a way to annotate extra information in siteswap so focusing on height may actually be preferred given your stated goals.
[d]I think I prefer to not repeat the notation for the cycle. It makes it harder to read and emphasizes the cycle > the actual throws a hand performs.
({R1,R1,R1},{L1,L1})({R2,R2,R2},{L2,L2}) would become:
({R1,R1,R1,R2,R2,R2}{L1,L1,L2,L2}). Each hands pattern can be seen in full.
These are actual both valid in your proposal. The representation focuses on "2 cycles of 3:2" and "1 cycle of 6:4" so it is more a of a convention vs correctness suggestion
[e]And I would vote for the out brackets to be "{}" over "()". I can't think of a case where "()" is ambiguous with sync, so it is more a visual preference: "{}" shows "this is a polyrhythm"
[f]I wrote a whole bunch of comments while reading through the document, with me disagreeing with my earlier comments as new information was revealed. So to make it all a bit less chaotic, I will summarise everything here instead. Your proposed system is mathematically more solid that I initially thought (my bad). Sticking to the number~beats system makes less sense, as you would get crazy stuff like ({4,4,4},{6,6}) being written as ({4,4,4},{5,5}) instead, which is weird because the balls from the right hand are in fact 1,5x as long in the air as the balls from the left, not 1,25x (disregarding dwell time). Something I am curious to hear your thoughts on, is another proposal where instead of number~height as in your current system, we work with number~subbeats instead. I suggest the following definition of a subbeat: a subbeat always has duration 1. Meaning that with and A:B polyrhythm, the left hand, throwing at frequency A, throws every B subbeats, and the right hand, at frequency B, throws every A subbeats. Example: 3:2 polyrythm means that right hand throws every 2nd subbeat, and the left hand every 3rd. This would mean a 4 ball fountain on 3:2 gets the siteswap ({4,4,4},{6,6}) (coincidentally same as your current system), yet if we look at a 4 ball fountain on 4:3, it will get siteswap ({6,6,6},{8,8}). I feel like in many ways your current proposal is better than mine. For instance, the sum/throws=objects still holds and it is more intuitive coming from existing siteswap notation. One of the things with my suggestion is that there is no need for the decimals. See my next comment on that.
[g]for consistency, I would suggest sticking to letters for throws above 9. It also more clearly distinguishes between a 1,0.3 and a 10.3/a.3
[h]Rounding like this can become very messy in my eyes. What if I am juggling on a more extreme polyrhythm like 100:99, then one decimal place will no longer be sufficient. Will more decimal places then be added until sufficient accuracy is reached? What effect do decimals have on the readability of the notation?
[i]Hi! I think fractions should be used instead of rounded decimals. I’m currently trying to extend some of the classical siteswap theorems from Polster’s book to this notation, and for that the values need to be exact. Decimals might be easier to interpret at first, but fractions avoid rounding errors and the question of how many decimal places are needed.
[j]In my opinion, (which is subjective and debatable), ({444},{66}) so no commas in the curly brackets, would be better. This is more consistent with existing siteswap notation (441 is also not 4,4,1 and [43]423 is not [4,3]423). The commas are more of a necessity due to the decimal system, however if feel like the decimals are something that ideally would be avoided too, but that is covered in my previous comments.
[k]What are your thoughts on multiple polyrhythms within the same pattern. Would a 4 ball fountain alternating between 3:2 and 4:3 be denoted as
({4,4,4},{6,6})({4,4,4,4},{5.3,5.3,5.3})?
[l]Just realised that Switching between 3:2 and 4:3 is not as simple, and you would need some transition trows probably. Eventhough the notation in the previous comment would not lead to a valid siteswap, the question of if and how the notation system allows switching rhythm within the same pattern still stands.
[m]I agree that some transition throws are needed. Keeping the fast hand at the same tempo and two balls in each hand, we can alternate 3:2 and 4:3 like this:
({4,4,4},{6,17/3})({4,4,4,4},{16/3,16/3,17/3})
Each 17/3 throw prepares a rhythm change, spanning one slow-hand interval of each rhythm: 3 + 8/3. The first prepares the switch to 4:3, and the second the return to 3:2. The complete sequence is valid when repeated, although neither block is valid when repeated separately.
[n]More generally, I can construct transitions between any two polyrhythms a:b to c:d for this four-ball fountain, keeping the fast hand at the same tempo. For more general patterns, with crossing throws or different ball distributions, I still need to study how their states can be connected.
[o]Take a look at: https://jaredshay.substack.com/p/polyrhythmic-siteswaps
I go over one technique to generate patterns and it can be seen here: jaredshay.github.io/polymorphic-siteswaps-demo
The idea is to use sync notation to create a grid with enough information to convey the two independent rhythms. This is almost exactly the notation you use in this article to demonstrate polyrhythms in sync notation.
For example: 3 over 2 needs 6 sync throws to notate each hand. Within those 6 throws you have throw sites that are "allowed slots" for each hand to operate in. From there, the existing tools and techniques can be used to generate patterns. The nuances are almost all covered in this article in your exploration but that is the basic idea.