Juggling Lab

Juggling Lab (originally called JuggleAnim) is a juggling animator and siteswap generator created by Jack Boyce and others. You can download the program at jugglinglab.org. You can also make Juggling Lab animations online by entering the URL "http://jugglinglab.org/anim?" followed by either a siteswap, or a more detailed pattern description in the same format you would use in the manual settings box (described at the end of this article).
:Video: Experimental patterns created in Juggling Lab by Dominik Braun
== Siteswap notation ==
Patterns are entered into the animator using siteswap notation. Juggling Lab supports several extensions to basic siteswap:
*Lower-case letters can be used to represent throws higher than 9. (a = 10, b = 11, c = 12, etc.)
*Patterns can be written in synch or asynch notation, or a combination of both. An "x" can be used after an even number to make it a crossing throw, or after an odd number to make it a non-crossing throw. An asterisk can be used at the end of a pattern to switch the roles of the hands in a synch pattern or a synch section of a pattern each time the pattern repeats. An exclamation mark can be used after a pair of synch throws to make the next throw(s) after that pair happen just one beat later, instead of two.
*Multiplex notation.
*Passing notation for two or more jugglers.
*Sections of the notation where the same throws are repeated several times can be shortened by writing in parentheses the repeating sequence of throws, a "^", and a number indicating how many times those throws will be repeated. Example: 555555555574474474474494444 can be shortened to (5^10)(744^4)94444.
*A capital L or R will cause the next throw to be made with the left or right hand respectively, even if the previous throw was made with the same hand. You can use <R|L> at the beginning of a passing pattern to make one person throw with the right hand while the other person throws with the left hand. By default the first asynch throw in a pattern is made with the juggler's right hand (the hand you see on your left), the first asynch throw after a synch section is made by the hand opposite the hand that made the last asynch throw (except the opposite seems to be true in patterns that have either an even number of asynch throws and an asterisk, or an odd number of asynch throws and no asterisk), the throws written on the left and right side of a synch pair are made by the left and right hands respectively (unless the hands' roles have been reversed by an asterisk), and all the jugglers in a passing pattern throw with their right hands at the same time.
*Putting a string of capital letters after a throw can turn it into a toss, a bounce, or a hold:
**T turns 2s and non-crossing 1s, which would normally just be held, into tosses.
**H turns non-crossing throws that would normally be tosses into holds.
**BL turns a throw into a lift bounce throw that is caught while the ball is moving upward.
**BHL turns a throw into a lift bounce throw that is caught while the ball is moving downward (hyperlift).
**BF turns a throw into a force bounce throw that is caught while the ball is moving downward.
**BHF turns a throw into a force bounce throw that is caught while the ball is moving upward (hyperforce).
**Using more than one B in a row will make the ball bounce multiple times, but the number of times it can bounce is limited by the airtime of the throw.
== Pattern settings ==
In the pattern entry panel, you can customize several aspects of how a pattern is done, including:
*Speed (in beats per second)
*Dwell time (default is 1.3 beats)
*Hand positions: Built-in options are inside throws, outside throws, halfshower, and Mills mess. You can also enter a custom hand movement pattern in this format:
**For each beat there are at least two sets of coordinates, followed by a period.
**The first coordinate set for a beat determines the position the hand will be in while throwing.
**The position of that hand when it makes its next catch is normally determined by the last coordinate set on that beat. If a beat has more than two coordinate sets, the ones in the middle designate the positions of the hand in between the throw and the catch.
**If a coordinate set is preceded by a "c", that set determines the catching position. If there are more coordinate sets after that one, they designate the positions of the hand between that catch and the next throw made by that hand.
**Each set of coordinates is written in parentheses and separated with commas. In each set you can specify up to three coordinates:
***The first coordinate determines how far out the right hand is to the right, or how far out the left hand is to the left. If this coordinate is 0, the hand is in the center of the pattern. 32.5 is the default position for catching. A negative number makes the hand reach over to the other side of the pattern.
***The (optional) second coordinate determines how high the hand is.
***The (optional) third coordinate determines how far forward the hand is. If this coordinate is 0, the hand is in front of the body. You can use a negative number to make the hand go behind the back.
**Hand positions can be specified for multiple jugglers with the same "<|>" format used for passing siteswap notation.
*Body positions: Built-in options are line, feed, back to back, side to side, and walking in circles. You can also enter a custom body movement pattern in this format:
**Sets of coordinates can be specified for each beat, followed by a period. Each set of coordinates defines the position of a juggler at a certain time. For each beat you can specify one set of coordinates, or more than one, or none at all.
**Each set of coordinates is written in parentheses and separated with commas. In each set you can specify up to four coordinates:
***The first coordinate determines which direction the juggler is facing. If this coordinate is 0, the juggler faces toward you. Increasing the number rotates the juggler a certain number of degrees counter-clockwise around the vertical axis.
***The other coordinates determine the location of the juggler. Increasing the second coordinate moves the juggler to your left, increasing the third coordinate moves the juggler forward (toward you), and increasing the fourth coordinate moves the juggler upward (default height is 100).
**Body positions can be specified for multiple jugglers with the same "<|>" format used for passing siteswap notation.
*Prop type: Options are ball, ring, and image. If you right-click a prop's representation in the ladder diagram of a pattern to access the "define prop" feature, you can change the size and color of the prop, or (in the standalone application) you can choose an image to change the appearance of the prop.
You can also use the manual settings box to configure any of the settings mentioned above (pattern, bps, dwell, hands, body, prop) and more:
*colors: The color for each prop can be written inside curly brackets, in English or in RGB format. You can also specify a color without using brackets to make all the props the same color, or type "mixed" (without brackets) to make the props different colors.
*propdiam: The diameter of the props. Default is 10.
*gravity: How fast the props accelerate downward. Default is 980. Using a negative number makes the props fall upward.
*bouncefrac: How high a ball bounces compared to where it fell from. Default is 0.9.
Settings for different variables in the manual settings box are separated with semicolons.
Example: pattern=645;hands=(32.5)(15).(15)(32.5).(10)(32.5).;colors={255,0,0}{0,0,255}{0,0,255}{255,0,0}{0,0,255}
Category:Software
Category:Websites