Impossible Siteswap Animator

The Impossible Siteswap Animator is a juggling simulator that was made by Alex Lubker, using the game creation tool Stencyl.
It was originally made in 2013, and an improved version was completed in 2015. By 2021, this program and the web platforms hosting it were no longer functional, due to the now-defunct Adobe Flash technology they had used. As of 2023, the Impossible Siteswap Animator is available again, for Patreon members only.
This siteswap animator can do patterns written in Miika Toukola's version of mixed synch/asynch notation, and it can animate certain kinds of siteswaps that aren't physically possible to juggle:
thumb|right|360px|Negative siteswaps simulated using programmable glow balls by Phillip Edwards
== Impossible siteswaps ==
===Patterns with negative numbers===
A number in a siteswap corresponds to the number of beats later the next throw with the same ball will be made. A negative number means that the next time the ball will be thrown is earlier than the current throw, so the ball has to travel backwards in time.
This animator shows the balls in different colors (the same way Phillip Edwards does in his Negative Siteswaps video) so you can tell which way they are going: Balls that are going forwards in time appear blue, and balls that are going backwards in time (called antiballs) appear red.
Patterns with positive and negative throws appear to involve more objects than there really are (the average of the numbers in the siteswap), because of the antiballs traveling back through the same period of time where they had already existed as forward-traveling balls.
When a ball changes from going backwards to going forwards in time, it looks like a ball and an antiball appear out of nowhere and are thrown as a multiplex. Both of these are actually the same ball; one is the ball going forwards in time, and the other is the ball going backwards in time. The antiball comes from the future, turns into a ball, and goes back into the future, so it doesn't exist before that time as a ball or as an antiball. When a ball changes from going forwards to going backwards in time, it looks like a ball and an antiball come together in a squeeze catch and disappear. The ball comes from the past, turns into an antiball, and goes back into the past, so it doesn't exist after that time as a ball or as an antiball.
Example patterns:
*5-4-4
*22-1
*-4-3-2-101234
*97531-1-3-5-7-9
*995511-3-3-7-7
===Patterns with crossing zeros===
These can be approximated by quickly passing a ball from one hand to the other (similar to a 1 or a 2x), but an actual 0x should change hands without taking any time at all, so the object can be thrown again 0 beats later. This animator does crossing zeros by instantly teleporting a ball to the other side of the pattern.
Example patterns:
*(2x,0x)
*(4x,0x)(0x,4x)
*(6,0x)(0x,6)
*(2,0x)(0x,-2)
===Invalid siteswaps===
Some sequences of numbers cannot be juggled as siteswaps because the number of balls that the pattern requires to be in a hand when making a throw is not equal to the number of balls that the pattern causes to be in that hand at that time. This animator juggles those patterns by creating a ball whenever a hand is holding too few balls for the next throw, and destroying a ball whenever a hand is holding too many balls for the next throw.
Example patterns:
*987654321
*9977553311
*43210-1-2-3-4
===Patterns with infinite throws===
If a pattern includes throws where the ball goes up and never comes back down, it requires an unlimited supply of balls, so this animator makes new balls fall into the pattern whenever they're needed.
== Instructions ==
=== Notation ===
Type in a sequence of numbers to animate a siteswap pattern. Each number represents a throw and indicates how many beats later the same ball will be thrown again.
Other symbols you can use:
* A minus sign before a number makes the ball go backwards in time. The balls will turn red when going backwards in time, and blue when going forwards in time.
* A lowercase x after a number changes which hand the ball is thrown to. A throw without an x crosses to the other hand if it's an odd number, and returns to the same hand if it's an even number.
* Other lowercase letters represent numbers higher than 9. (a = 10, b = 11, c = 12...) For a "33" throw, use an uppercase X.
* Use ctrl-8 to add an infinity symbol, representing a throw where the ball goes up and never comes back down. Patterns with these throws require an unlimited supply of balls, so new balls will fall into the pattern whenever they're needed.
* Throws inside parentheses are made at the same time and followed by one beat of no throws.
* Throws inside square brackets are made at the same time, with the same hand (a multiplex throw).
* An exclamation mark makes all subsequent throws happen one beat earlier than they would otherwise.
* An asterisk changes which hand will make the next throw. If two consecutively written throws don't have an asterisk between them, they are made by different hands.
=== Keyboard shortcuts ===
* Use ctrl-delete or ctrl-backspace to clear the current pattern so you can type in a new one.
* Use ctrl-L to label each ball with the siteswap number of the last throw that was made with that ball.
* Press the up or down arrow keys to change the number of balls in the pattern by increasing or decreasing each number in the siteswap.
* Press the up or down arrow keys while hovering the mouse over a number to change the number of balls in the pattern by increasing or decreasing that number.
Category:Software