Menu Close

Siteswap Notation I: Vanilla Siteswap

This first part of a series (that I have grand plans of writing) on the siteswap notation, is intended to serve as an introduction to the “vanilla” siteswap notation. Future parts (if they get written) will deal with understanding how to actually juggle a given siteswap and extensions of the notation to multiplex, synchronous and multi-hand (or multi-juggler) juggling.

Vanilla Siteswap

Vanilla siteswap is just a finite sequence of non-negative integers, for example, “4 2 3” or “11 9 10 5 5” etc. I will call these non-negative integers, “siteswap numbers”. Not all sequences of non-negative integers represent juggling patterns. Those that do, will be referred to as “valid siteswaps”.

What do the siteswap numbers represent? Think of regular beats sounded by a metronome. A vanilla siteswap sequence assigns successive siteswap numbers to successive beats. At every beat, at most one object is “thrown”[1]. The siteswap number corresponding to that beat tells us after how many beats that same object should be thrown again. Thus, the siteswap numbers indicate time, though they are also,  somewhat misleadingly, referred to as “throw height”[2]. As the metronome continues beating, the finite sequence runs out of numbers. Then we circle back to the first number in the sequence and repeat. As an exampe, Table 1 analyzes the events of the first 10 beats for the “4 2 3” sequence.

Table 1: Sequence of events for the siteswap “4 2 3” for 10 beats
Current Time (in beats) 0 1 2 3 4 5 6 7 8 9
Siteswap Number 4 2 3 4 2 3 4 2 3 4
Object thrown A B C B A C A B C B
Time for next throw of object (current time + siteswap number) 0+4 = 4 1+2 = 3 2+3 = 5 3+4 = 7 4+2 = 6 5+3 = 8 6+4 = 10 7+2 = 9 8+3 = 11 9+4 = 13

Time = 0 beats: We throw object A. The siteswap number is 4, so object A is scheduled for another throw at Time = (0+4) = 4 beats.

Time = 1 beats: We throw another object B. The siteswap number is 2 so we schedule B to be thrown again at Time = (1+2) = 3 beats.

Time = 2 beats: We throw yet another object C. The siteswap number is 3 so C is scheduled to be thrown again at Time = (2+3) = 5 beats.

Time = 3 beats: The object B has been scheduled for a throw here (see Time = 1 beats), so we don’t need a new object. But we have run out of numbers in the sequence “4 2 3”. We go back to the beginning of the sequence and use “4” as the siteswap number for Time = 3 beats. Thus, the next throw of B gets scheduled at Time = (3+4) = 7 beats.

Things seem to magically work out from here on. The three objects introduced in the pattern by Time = 2 beats keep getting scheduled to be thrown on future beats without any conflicts. We say that “4 2 3” is a valid siteswap.

Period of a Siteswap Sequence

For a vanilla siteswap sequence, the period is simply the number of numbers in the sequence. For example, the sequence “4 2 3” has 3 numbers, so its period is 3. The sequence “11 9 10 5 5” has 5 numbers, so its period is 5.

Some people prefer to deal with the “minimal period”. Consider the sequence “5 3 1 5 3 1”. The period of this sequence as per the definition given above is 6 because it has 6 numbers in it. The “minimal period” of this sequence is, however, 3. This is because the “5 3 1 5 3 1” is made up of the sub-sequence “5 3 1” repeating twice. And “5 3 1” consists of a total of 3 numbers. Hence, the minimal period is 3.

Unless specified, I will not use the minimal period. This is because when dealing with Prechac patterns[3] for example, the sequence “5 3 1 5 3 1” has to be treated as a period 6 sequence and will work differently from the sequence “5 3 1” which is a period 3 sequence even though both describe exactly the same juggling pattern.

Some Algorithms

Building a table like Table 1 is an effective way to study a given siteswap sequence. For example, Table 1 told us that “4 2 3” is a valid siteswap and that it represents a 3-object juggling pattern. However, it is cumbersome to construct such tables. It can be shown that if H is the highest siteswap number in a given sequence of period P, then we may have to make the table for up to (P+H) beats before we can make any conclusions about the sequence. For example, for the sequence “11 9 10 5 5” of period P = 5 and highest siteswap number H = 11. This means making the table for (P+H) = (5+11) = 16 beats. The algorithms presented below are usually more efficient than constructing such tables.

Number of Objects: The Average Theorem

Given a valid siteswap, the number of objects required to juggle the corresponding pattern is equal to the sum of all the siteswap numbers in the sequence divided by the period of the siteswap sequence. Equivalently, it is the average of the siteswap numbers for a valid sequence.

Table 2: The Average Theorem
Siteswap Sequence Sum of All the Numbers Period # of Objects
3 3 1 3/1 = 3
4 2 3 4+2+3 = 9 3 9/3 = 3
1 5 0 1+5+0 = 6 3 6/3 = 2
11 9 10 5 5 11+9+10+5+5 = 40 5 40/5 = 8
5 3 1 5 3 1 5+3+1+5+3+1 = 18 6 18/6 = 3
5 3 1 5+3+1 = 9 3 9/3 = 3

Table 2 shows example calculations illustrating the average theorem.

The average theorem also provides perhaps the quickest test to eliminate some invalid sequences: if the average of a given sequence of numbers is not a whole number, then it is an invalid siteswap.

Table 3: Average theorem eliminates some invalid siteswaps
Siteswap Sequence Period Average of Numbers Average = Whole Number? Valid siteswap?
1 2 4 8 4 (1+2+4+8)/4 = 3.75 No No
1 2 3 4 5 6 7 7 (1+2+3+4+5+6+7)/7 = 4 Yes Maybe
4 1 3 3 (4+1+3)/3 = 2.66 No No
4 2 3 3 (4+2+3)/3 = 3 Yes Maybe
4 3 2 3 (4+3+2)/3 = 3 Yes Maybe

As indicated in Table 3, the average being a whole number does not guarantee the validity of a sequence. The best we can say in such a case is that at least one rearrangement (permutation) of the given sequence will be a valid siteswap. As we shall see shortly, “4 3 2” is an invalid siteswap while its permutation “4 2 3” is a valid siteswap though both have average = 3.

Siteswap validity: Permutation Test

The permutation test is one way to check the validity of a siteswap sequence. It also gives the number of objects required to juggle a valid siteswap. Table 4 illustrates the calculations required by the permutation test algorithm for a given siteswap “T0 T1 T2 … Tn … TP-1” of period P. If the “Remainder of (Result/P)” row[4], or the Remainder row for short, contains each of the numbers from 0 to P-1 in any order, i.e., in any “permutation”, then the original sequence was a valid siteswap. Further, for a valid siteswap, the sum of the numbers in the last row (“Quotient of Result/P” row[5] or the Quotient row for short) gives the number of objects required to juggle that siteswap.

Table 4: Permutation test algorithm for sequence of period P
Given Sequence T0 T1 T2 Tn TP-1
Add 0 1 2 n P-1
Result T0+0 T1+1 T2+2 Tn+n TP-1+P-1
Remainder of (Result/P) (T0+0) mod P (T1+1) mod P (T2+2) mod P (Tn+n) mod P (TP-1+P-1) mod P
Quotient of (Result/P) int((T0+0)/P) int((T1+1)/P) int((T2+2)/P) int((Tn+n)/P) int((TP-1+P-1)/P)

Examples

Let us apply the permutation test to the sequences of Table 3 that yielded whole number averages.

Table 5: Permutation test for sequence “1 2 3 4 5 6 7”, period P = 7
Given Sequence 1 2 3 4 5 6 7
Add 0 1 2 3 4 5 6
Result 1+0 = 1 2+1 = 3 3+2 = 5 4+3 = 7 5+4 = 9 6+5 = 11 7+6 = 13
Remainder of (Result/P) 1 mod 7 = 1 3 mod 7 = 3 5 mod 7 = 5 7 mod 7 = 0 9 mod 7 = 2 11 mod 7 = 4 13 mod 7 = 6
Quotient of (Result/P) int(1/7) = 0 int(3/7) = 0 int(5/7) = 0 int(7/7) = 1 int(9/7) = 1 int(11/7) = 1 int(13/7) = 1

In the Remainder row of Table 5, we get all the numbers from 0 to 6, i.e., from 0 to P-1 (P = 7). Therefore, the sequence “1 2 3 4 5 6 7” is a valid siteswap. Sum of numbers in the quotient row yields 0+0+0+1+1+1+1 = 4. So “1 2 3 4 5 6 7” describes a 4-object juggling pattern.

Table 6: Permutation test for sequence “4 2 3”, period P = 3
Given Sequence 4 2 3
Add 0 1 2
Result 4+0 = 4 2+1 = 3 3+2 = 5
Remainder of (Result/P) 4 mod 3 = 1 3 mod 3 = 0 5 mod 3 = 2
Quotient of (Result/P) int(4/3) = 1 int(3/3) = 1 int(5/3) = 1

The Remainder row of Table 6 has all the numbers from 0 to 2 (where 2 = P-1 = 3-1). So “4 2 3” is a valid juggling sequence. The sum of quotients = 1+1+1 = 3 is the number of objects required to juggle the “4 2 3” sequence.

Table 7: Permutation test for sequence “4 3 2”, period P = 3
Given Sequence 4 3 2
Add 0 1 2
Result 4+0 = 4 3+1 = 4 2+2 = 4
Remainder of (Result/P) 4 mod 3 = 1 4 mod 3 = 1 4 mod 3 = 1
Quotient of (Result/P) int(4/3) = 1 int(4/3) = 1 int(4/3) = 1

The Remainder row in Table 7 has “1” appearing thrice but neither “0”, nor “2” (= P-1) appear in this row. Thus, the sequence “4 3 2” is not a valid siteswap. We ignore the quotient row.

Note that all single (whole) number “sequences” (period P = 1) are valid siteswap sequences as shown in Table 8.

Table 8: Any single number sequence “N”, period P = 1, is a valid siteswap
Given Sequence N
Add 0
Result N+0 = N
Remainder of (Result/P) N mod 1 = 0
Quotient of (Result/P) int(N/1) = N

As all numbers are divisible by 1, the remainder after dividing N by 1 will be 0. “All the numbers from 0 to P-1”, when P = 1, is just the number 0 and this is present in the Remainder row of Table 8. Therefore, any single (whole) number sequence is a valid siteswap sequence. Further, the sum of the Quotients = N. So the period 1 siteswap “N”, describes an N-object juggling pattern.

Generating Valid Siteswaps

Valid siteswaps of period P can be generated by following the reverse of the process used in the permutation test:

  1. Start with any permutation of numbers from 0 to P-1.
  2. Subtract “i” from the “i”th number of the permutation, where “i” ranges from 0 to P-1.
  3. Add various multiples of P to each number. Addition of the multiple “0” is also allowed as long as no negative numbers remain after this step.

The number of objects required to juggle the pattern corresponding to the siteswap generated as above, is equal to the number of multiples of P that got added in step 3.

Examples

Let us take period P = 7. We start with an initial arrangement of numbers 0 to 6 (= P-1) and proceed as shown in Table 9.

Table 9: Generating a period 7 siteswap
Initial arrangement of 0 to P-1 1 3 5 0 2 4 6
Subtract 0 1 2 3 4 5 6
Result 1-0 = 1 3-1 = 2 5-2 = 3 0-3 = -3 2-4 = -2 4-5 = -1 6-6 = 0
Adder (multiple of P) 0*7 = 0 0*7 = 0 0*7 = 0 1*7 = 7 1*7 = 7 1*7 = 7 1*7 = 7
Siteswap (Result+Adder) 1+0 = 1 2+0 = 2 3+0 = 3 -3+7 = 4 -2+7 = 5 -1+7 = 6 0+7 = 7

Since we have added a total of 4 multiples of P (= 7) in the “Adder” row, the generated sequence “1 2 3 4 5 6 7” is a 4-object juggling pattern.

Let us now take period P = 3. We start with an initial arrangement of numbers 0 to 2 (= P-1) and proceed as shown in Table 10.

Table 10: Generating a period 3 siteswap
Initial arrangement of 0 to P-1 1 0 2
Subtract 0 1 2
Result 1-0 = 1 0-1 = -1 2-2 = 0
Adder (multiple of P) 1*3 = 3 1*3 = 3 1*3 = 3
Siteswap (Result+Adder) 1+3 = 4 -1+3 = 2 0+3 = 3

Since we have added a total of 3 multiples of P (= 3), the generated sequence “4 2 3” is a 3-object juggling pattern.

Siteswap Number “0”: Empty Hand

Let us generate another sequence of period 3 as shown in Table 11.

Table 11: Another siteswap sequence with period P = 3
Initial arrangement of 0 to P-1 1 0 2
Subtract 0 1 2
Result 1-0 = 1 0-1 = -1 2-2 = 0
Adder (multiple of P) 0*3 = 0 2*3 = 6 0*3 = 0
Siteswap (Result+Adder) 1+0 = 1 -1+6 = 5 0+0 = 0

Now we have added a total of 2 multiples of P (= 3). So “1 5 0” is a 2-object juggling pattern. But what does the siteswap number “0” mean? Let us go back to our tabular method (see Table 1) of analyzing siteswaps and trace the series of events for the sequence “1 5 0” in Table 12.

Table 12: Siteswap Number “0”: infinite loop?
Current Time (in beats) 0 1 2 3 4 5 6 7 8 9
Siteswap Number 1 5 0 1 5 0 1 5 0 1
Object thrown A A B? C? C D? A A E? C
Time for next throw of object (current time + siteswap number) 0+1 = 1 1+5 = 6 2+0 = 2 3+1 = 4 4+5 = 9 5+0 = 5 6+1 = 7 7+5 = 12 8+0 = 8 9+1 = 10

Time = 0 beats: Object A is thrown with siteswap number “1”, thus scheduling object A for another throw at Time = (0+1) = 1 beats.

Time = 1 beats: Object A is scheduled to be thrown here. We throw it with siteswap number “5”, thus scheduling it to be thrown again at Time = (1+5) = 6 beats.

Time = 2 beats: We throw a second object, B, with siteswap number “0”. So B must be thrown again at Time = (2+0) = 2 beats. Object B is stuck forever at Time = 2 beats!

Time = 3 beats: No previously thrown object is scheduled for a throw here, we need a new object C. But “1 5 0” should be a 2-object pattern based on our siteswap generation algorithm.

We have a problem. Even if we assume that the algorithm incorrectly calculates the number of objects and introduce an object C into the table at Time = 3 beats, there is more trouble ahead. We will need to keep introducing new objects whenever the siteswap number is “0” (e.g., at Time = 5 beats, 8 beats, etc.). Did the algorithm generate an invalid siteswap? Note that apart from the beats where the siteswap number is “0”, the rest of the pattern seems to be working out with the two objects A and C.

The resolution is to think of the siteswap number “0” as an “empty hand”. At the beat where the siteswap number is “0”, there is nothing available to throw, the hand “rests”. With this interpretation, nothing is thrown at Time = 2 beats and object B becomes the second object of the pattern, required to be thrown at Time = 3 beats. As we can see in Table 13, the “1 5 0” pattern now makes sense as a 2-object juggling pattern.

Table 13: Siteswap Number “0”: empty hand!
Current Time (in beats) 0 1 2 3 4 5 6 7 8 9
Siteswap Number 1 5 0 1 5 0 1 5 0 1
Object thrown A A B B A A B
Time for next throw of object (current time + siteswap number) 0+1 = 1 1+5 = 6 NA 3+1 = 4 4+5 = 9 NA 6+1 = 7 7+5 = 12 NA 9+1 = 10

Siteswap Manipulations

I conclude this part by presenting some manipulations that can be performed on valid vanilla siteswaps that will yield other valid vanilla siteswaps. If we add the period P to any siteswap number of a valid siteswap, the resultant sequence will also be a valid siteswap and will represent a juggling pattern for one more object than the original siteswap. For example, in the sequence “1 5 0” for 2 objects, if we add the period (= 3) to the siteswap number “0”, we get the sequence “1 5 3” which is a valid siteswap for 3 objects. If we add another 3 to the siteswap number “1”, we get another valid siteswap “4 5 3” which is now a 4 object juggling pattern. We can also subtract the period P from any siteswap number ≥ P to get a valid siteswap representing a juggling pattern with one less object. For example, in the 4-object siteswap “4 5 3”, we can subtract the period 3 from the siteswap number “5” to get “4 2 3” which is a valid siteswap for 3 objects. We can also add “1” to every siteswap number of a valid siteswap to get a new valid siteswap representing a pattern with one more object. For example, we add 1 to each siteswap number of “4 2 3” to get “5 3 4” which is a valid siteswap for a 4-object juggling pattern. Similarly, if each siteswap number of a given sequence is ≥ 1, then we can subtract 1 from each number to give a new sequence for a pattern with one less object. For example, subtracting 1 from each number of “4 2 3” gives the 2-object siteswap “3 1 2”.

This is just a glimpse[6] of the ways in which one can invent new siteswaps. Of course, all these siteswaps can also be generated by following the siteswap generation algorithm by varying our starting permutation and changing where and how many times we add the multiples of P. Try it!

Footnotes

  1. “Thrown” could mean thrown up, bounced on the ground, placed on a table, balanced on the nose, etc. Basically, the object is released from the hand… or the foot, or the mouth, etc. In some cases, it is not even released. For simplicity, we will assume that it is thrown up in the air unless otherwise stated.
  2. Since the “throw” may not be a throw at all, talking about its height would be redundant. Even if thrown up, the relationship between throw height and siteswap number is not linear.
  3. Prechac patterns are a special category of passing patterns. The rules of constructing these patterns from siteswap sequences were discovered by Cristophe Prechac.
  4. “Remainder of (Result/P)” is represented by the “modulo” operation and is written as “Result mod P”.
  5. “Quotient of (Result/P)” is the integer part of the decimal representation of the ratio Result/P, “int(Result/P)”.
  6. For a more exhaustive treatment, see Burkard Polster’s “Mathematics of Juggling”.

6 Comments

  1. Shivam

    Nice Lesson for all the jugglers, tricks for creating and validating sequence will surely help everyone to try new patterns :).

    • jigyasu

      Thanks for pointing that out, you are absolutely right. I have corrected the table now for the benefit of future readers.

Leave a Reply

Your email address will not be published. Required fields are marked *