JuggleSim siteswap simulator


Supported syntax:

JuggleSim supports standard asynch siteswap notation with numbers for throws heights 0-9, and lowercase letters for throw heights 10-35 (a-z). 'x' cannot be used for 33 where it could be interpreted to make a throw cross if it would normally go straight and go striaght if it would normally cross. For any throw height, the number can be written in plain numerals and enclosed in curly brackets.

Synchronous patterns have standard notation ((<LH Throw>, <RH Throw>), the space is optional) as well as support for an asterix to designate 'repeat on other side'. Mixed asynch and synch patterns are also supported. Any pattern can include multiplexes of the form [...]

Repeated sequences can be written shorthand like so: |<sequence>^<number of repeats>| for example |5^4|0 would evaluate to 55550 this notation can also be used for synch and mixed patterns.

Patterns can contain a comment that starts with a '#', spaces before the '#' will be ignored. This allows you to name siteswaps so you can tell what they are easily, for example, (4, 2x)* #3-ball box

Stack notation is also supported for asynch patterns without multiplexes.

'Natural pattern entry' is supported, this allows entring of patterns such as '5 ball shower' which evaluates to 91 or '7 ball freeze frame' which evaluates to db97531.

Saving patterns

Patterns can be saved as a .jsm file through file->save or can be added to Favourites by clicking the '+' to the right of the siteswap entry box and right-clicking on the needed folder and selecting 'new siteswap'

Siteswap menu

Put in best rotation

This will rotate the current pattern so that it is as close as possible to ground state.

If there is more than one rotation that has the same excitation then the one with the largest starting number will be chosen.


This will find all possible anagrams of the current pattern.

NOTE: for vanila patterns with lengths of more than 11 and other patterns with periods over 7 this goes very slowly.

Shift RH/LH forward

This feature shifts the designated hand forward in time, for example 51 with the RH shifted forward becomes (4x, 2x). However with the LH shifted forward you will get (6x, 0x) which is an invalid pattern as it has a '0x'.

This feature only works for vanilla siteswaps.


This will flip the siteswap it works with any pattern but with asynch patterns the only difference you will see is R75 instead of 75. With synch paterns, you will see (2,8) instead of (8,2) etc.

Animation settings (bottom of the window)

Play.pause button: pauses/resumes simulation.

Speed entry and slider, use the slider and entry box to change the speed of the simulation.

Use'background colour' and 'Ball colours' buttons to change colours of the background and balls.

Ball size changes the size of the balls being juggled.

Save GIF will save a GIF of the animation, this is currently quite slow.

'More settings' opens a windows that allows gravity, throws per second and dwell ration to be changed.

'Toggle fullscreen' toggles whether the windows is fullscreen or not.


To change the application preferences go to File->Preferences this will open up a window which will allow you to change the labels for the information that is shown when you type in a siteswap. You can change the labels as well as disabling any information you do not want JuggleSim to show.

Also in the preferences window you will find an option to change whether to use lowercase letters instead of numbers 10-35, even if you have set it to not use lowercase letters, you can still enter them, the application just won't output them.

There is an option to select whether to show transitions from synch or asynch ground state, for synch ground state with odd numbers of balls, it is defined as either side. For example '(1,1)(1,0)' or '(1,1)(0,1)' for three balls, the program will find which one has a shorter transition.

© 2012 JuggleSim