Release 1.6.5 (March 8, 2023)

New features

  • Added an option to the siteswap generator to find symmetric passing patterns. These are defined as patterns where all jugglers share an identical sequence of throws. The (identical) throw sequences for each juggler may be offset in time with respect to one another, as in the pattern <4p|2p><2p|4p>
  • Added two new prop colors, transparent and white.

Bug fixes

  • Fixed minor rendering bugs while editing ladder diagram with a paused animation.

Other changes

  • None.

Release 1.6.4 (December 7, 2022)

New features

  • Pattern layout is now continuous when moving events and positions in Visual Editor.
  • Added a minimum time separation between events for a given hand (and positions for a given juggler), when dragging up and down in the Visual Editor ladder diagram. This avoids crazy-looking juggler movements caused by events that are very closely spaced in time.
  • A portion of the hand's path is now visible when an event is selected in Visual Editor, as are nearby events for that hand which are also directly editable within the animation.

Bug fixes

  • Fixed the way errors are handled when interacting with ladder diagram in Visual Editor (e.g., when setting a prop diameter to 0).

Other changes

  • Added a Debian Linux release (.deb). This installs Juggling Lab as a standalone application at /opt/juggling-lab/.
  • Updated the command line tools to reflect packaging changes and other updates.
  • Moved project to the Maven build tool and reorganized the Github source tree to Maven standard directory layout.

Release 1.6.3 (October 16, 2022)

New features

  • Application now remembers the directory last used for loading/saving JML files, and defaults there in subsequent file operations.

Bug fixes

  • Fixed crashing bug in multiplex patterns like [54] when "Dwell beats" value is small (like 0.3).
  • Fixed bug in the layout of juggler rotation angle.

Other changes

  • Adjusted timing of 1 throws so that catches occur in an even rhythm. (The old algorithm enforced an even rhythm on the throws.) This renders patterns like 441 more like how human jugglers do them.
  • Added Google OR-Tools jar files to the main repository, so the code builds as-is without the additional OR-Tools binaries installed. At runtime the "Optimize for Throwing Error" feature is enabled or not, based on whether these optional binary files are present.

Release 1.6.2 (February 11, 2022)

New features

  • Changed hand movement significantly to give more natural-looking juggling. By default a hand now moves so its velocity at the time of catch is parallel to the landing object's velocity. (The prior algorithm only matched the locations.) This behavior can be overridden in JML by specifying <catch type="soft"> or <catch type="grab">. The "soft" type makes a catch where the hand velocity exactly matches the object velocity, and the "grab" type refers to the old behavior where the hand can have any velocity at the catching location.
  • Changed the calculation of catch times to make layout more robust. Catch times are calculated based on the time of the previous throw from the hand, and the dwell time setting. Many short-beat patterns now look better.
  • Removed many extra non-catch/throw events that were being added to the JML, which made many short-beat patterns animate poorly (for example hand siteswap patterns).
  • Added a check to ensure that each hand has an event at least every 0.5 seconds. This makes slow patterns render better (i.e. the "long arms" problem).
  • Added command line option to open JML files in the application (patterns or pattern lists).
  • Added command line option to verify JML file(s). It loads each file to check for proper syntax, then parses and lays out each contained pattern to check for errors.
  • Added <info> tag to JML. This is to support metadata and tagging functionality in a future release.

Bug fixes

  • Improved the logic for 2 throws: They are no longer interpreted as holds by default if there is a throw on the next beat from the same hand. This was making short-beat patterns like (4,3x)!(2,0)!(3x,0)! look strange. Note the default hold/throw behavior can always be overridden with modifiers, as in (4,3x)!(2H,0)!(3x,0)!.

Other changes

  • Released new command-line tools to fix issues related to filenames containing spaces (macOS/Unix), and to require Java 11 or later.
  • Deprecated the JML <softcatch> tag. The new syntax for a catch where the hand velocity matches the landing object is <catch type="soft">.
  • Added "Change to grab catch" menu option in ladder diagram popup menu.
  • Adjusted locations and timings of 1 and 2 throws.
  • Added Apache Commons math library to support new hand layout.
  • Updated the French translation (thanks to Fred Roudaut).

Release 1.6.1 (January 28, 2022)

New features

  • None.

Bug fixes

  • Fixed breaking bug in French and Portuguese language versions caused by incorrect parsing of numeric strings.
  • Fixed bug in showground preference not being applied correctly when pattern is edited in Visual Editor.

Other changes

  • Changed visibilities of some event and position controls in relation to camera (viewing) angle.
  • Changed siteswap generator input panel to allow use of letters for setting max throw (a = 10, b = 11, ...).
  • Switched to spline layout for juggler angle.
  • Added time label to horizontal time-tracker line in Visual Editor, visible when time is being dragged.

Release 1.6 (January 23, 2022)

New features

  • Improved the Visual Editor significantly. It now supports passing patterns with up to 8 jugglers, as well as editing of juggler positions and improved editing of hand events.
  • Added Zoom in/out to animation windows, accessible through the View menu or a mouse scroll wheel.
  • Added "Flip Pattern in X" and "Flip Pattern in Time" functions, accessible through the File menu. The first creates a right/left mirror image of the current pattern. The second creates a pattern which as nearly as possible resembles a time-reversed version of the current pattern.
  • Added a squeezebeats parameter to pattern input, which sets how catches into the same hand at the same time are made.

Bug fixes

  • Fixed maximized animation windows so they work correctly. (On Windows only; maximized windows on macOS still have issues due to Java limitations.)
  • Fixed issue where juggler's head would disappear when viewed edge-on.
  • Made siteswap pattern 0 work correctly.
  • Fixed various small UI issues.

Other changes

  • Improved animation of short-beat patterns like (4,5x)(4,1x)!(0,5x)!(4,0)!(0,1x)!, and patterns using `hss` hand siteswap mode, so they look more natural.
  • Set default GIF frames per second to 33.3 when saving, unless user has explicitly set a value in Animation Preferences. (Note the GIF header specifies inter-frame delay in hundredths of a second, so only `fps` values like 50, 33 1/3, 25, 20, ... are precisely achieveable.)
  • Added warning to users before overwriting an existing file.
  • Added warning to users about using characters in filenames that are disallowed on their platform.
  • Added feature that stores preferred filename when user loads or saves a file, and suggests it for subsequent file actions.
  • Added the # of patterns generated to the siteswap generator's output.
  • Added a "Manual Settings" field to the Animation Preferences dialog box.

Release 1.5.2 (December 28, 2021)

New features

  • Added undo/redo for all pattern edits, accessible in the View menu and via keyboard shortcuts.
  • Added many features to pattern list windows, accessible through a new popup menu. Features include adding items, removing items, and reordering them via drag and drop. Patterns can also be dragged between lists to copy them.

Bug fixes

  • Various small UI improvements.
  • Improved logic for detecting when a base pattern is edited.
  • Fixed minor bug in macOS help menus.

Other changes

  • Updated pattern files to add titles to most patterns.
  • A pattern animation from a pattern list now draws its title from the pattern itself, not the display text from the pattern list.
  • Added <basepattern> tag to JML, to retain the base pattern when saving to disk. This update defines version 2 of the JML format.
  • Changes to the JML pattern title are now copied to a title= parameter in the base pattern.
  • Reorganized the menu structure.

Release 1.5.1 (December 19, 2021)

New features

  • New Pattern View allows editing the siteswap representation of an animation (replaces JML View).
  • Added OS-level support to associate .jml files with Juggling Lab: Double-clicking on a .jml file now opens it in the application (Windows and macOS).
  • De-duplicated animations: If the user tries to animate a pattern that is already running, it now brings the existing animation to the front instead of creating a new one.
  • Window menu allows the user to select a window to bring to the front, or bring all Juggling Lab windows to the front.
  • Tile the animation windows as they're created.
  • Better open/save dialog boxes: Extension filtering and default filenames.

Bug fixes

  • Minor UI fixes.
  • Better error reporting when opening JML files.

Other changes

  • Moved to Java 11 API, from Java 8.
  • Moved to Java 17 runtime for Windows/macOS packaging.
  • Integrated with Java Desktop class for more macOS-like experience on macOS.
  • Adjusted locations of windows in the application.

Release 1.5 (November 27, 2021)

New features

  • Hand siteswap feature, designed and implemented by Mahit Warhadpande and P. R. Vaidyanathan. Documentation link added to home page.
  • Better default pattern speed (bps – beats per second) calculation for siteswap bounce patterns, so bounce throws always display correctly.

Bug fixes

  • None.

Other changes

  • Turned off bounce juggling "bounce" sound by default.

Release 1.4.1 (March 9, 2021)

New features

  • None

Bug fixes

  • Fixed internal error when optimizing certain patterns (e.g., 74000122).
  • Fixed printing of patterns containing 'x' (33) valued throws.
  • Turned off optimizer for bounce patterns.

Other changes

  • Added more descriptive error messages for patterns with collisions (e.g., 654).
  • Improved performance of siteswap generator.
  • Set default animation framerate to display refresh rate, when possible.

Release 1.4 (August 28, 2020)

New features

  • Added a Transitions tab, for finding transitions between any two compatible siteswaps (same number of objects and jugglers). Since transitions are not unique, Juggling Lab generates many options for the "From" to "To" transition, showing them in a list. For brevity only a single transition is shown for the transition from "To" back to "From".

Bug fixes

  • Fixed incorrect parsing of mixed async/sync siteswap patterns in rare corner cases.

Other changes

  • Enabled Copy and Drag-and-Drop support out of pattern lists. A pattern that is selected in a pattern list (i.e., what the transitions and generator tabs produce), can be copied to the system clipboard with Ctrl-C, or dragged into a text editor for example.
  • Improved performance of Juggling Lab's siteswap generator.

Release 1.3 (July 13, 2020)

New features

  • Added optimizer feature, available as the File-->Optimize for Throwing Error menu item on each animation window. The optimizer adjusts the throwing and catching positions in the pattern so as to maximize the margin of throwing error. Here the margin of throwing error is defined in an angular sense: It is defined as the largest angle such that, if all throws are within this amount of the ideal throw angle(s), then no collisions will occur in the pattern.

Bug fixes

  • None

Other changes

  • Added instructions to Linux release for how to install extra components needed for optimizer.

Release 1.2.1 (July 12, 2019)

New features

  • None

Bug fixes

  • Fixed loading of UTF-8 encoded language resource files (Roman Auvrey).

Other changes

  • Updated French language translation (Roman Auvrey).

Release 1.2 (March 29, 2019)

New features

  • Added repeat support for pattern, hands, body, and colors settings in siteswap notation. The syntax is to put the repeated parts in parentheses, followed by '^' and the number of repeats. For example <3|3|3|3|3> can be written as <3(|3)^4>.
  • Added support for setting the camera angle with the camangle animation preferences setting.
  • Added support for drawing the ground, which can be set via the Animation Preferences dialog as well as the showground animation preferences setting.
  • Added animation preference hidejugglers to optionally hide rendering of specific jugglers.

Bug fixes

  • Fixed bugs in audio clip playback (for bounce and catch sounds).
  • Fixed bug in naming siteswap patterns created with non-default hands selected.
  • Improved many error messages.

Other changes

  • Increased the range of camera angles to allow the camera to pan below the juggler's level.
  • Now allow all animation preferences settings to be given in the "manual settings" box of the siteswap input panel.

Release 1.1 (January 24, 2019)

New features

  • Added "Selection View" for patterns, which allows the user to edit patterns by selecting from randomly-generated variants.
  • Added "duplicate" menu item for pattern windows.
  • Added version checker to notify user when an updated version of Juggling Lab is available.

Bug fixes

  • Fixed camera angle snapping.

Other changes

  • Removed applet version of Juggling Lab. Applets are hard to run in modern browsers, and they are officially removed from the Java standard as of Java 11. Juggling Lab started life 20 years ago as a Java applet, so this marks the end of an era!

Release 1.0 (January 8, 2019)

New features

  • Expanded the features accessible from the command line utility jlab. Can now create animated GIFs, run the siteswap pattern generator, and launch a single animation from the command line.
  • Built a web service to generate animated GIFs of patterns.
  • Bundled the Java Runtime Environment with the Windows and Mac OS X versions to improve the user experience.
  • Added width and height to animation preferences dialog, which set the animation size in pixels (especially useful for animated GIF server).
  • Added link to online help in Help menu.
  • Now allow saving animated GIFs from all view modes.

Bug fixes

  • Fixed lots of little bugs.

Other changes

  • Moved project source code hosting to Github.
  • Migrated to Java 8, eliminated a lot of legacy features.

Release 0.6.2 (May 20, 2014)

New features

  • None

Bug fixes

  • Fixed bug in "exclude these expressions" part of siteswap generator.
  • Fixed performance issue in PatternList.

Other changes

  • Included Windows native executables (Juggling Lab.exe and j2.exe) in the Windows distribution.
  • Added more informative help message, and documentation, for command-line siteswap generator.
  • Distributing the source code as a simple directory instead of a jar file.
  • Added dialog explaining that saving animated GIF is only available in Simple view.

Release 0.6.1 (October 11, 2011)

New features

  • Added user interface support for right-to-left languages such as Hebrew and Arabic. User interface elements invert when the default system language is right-to-left. This behavior can be explicitly triggered by for example launching Juggling Lab with: java -Duser.language=he -jar JugglingLab.jar
  • Added support for UTF-8 encoded properties files, to make localization into non-Roman scripts easier.
  • Added locale setting to applet configuration, to override the system default languge.
  • Changed JML syntax to make it fully XML-compliant; new version is called JML 1.2.
  • Added Convert JML menu item to application, which converts JML files to version 1.2.

Bug fixes

  • Added better error-checking to prop color assignment parser.
  • Improved quality of error message on siteswap parsing errors.
  • Refactored UI messages and error messages to use templates, improving our ability to localize them.
  • Passing patterns now default to Simple view instead of Edit view, since the latter doesn't properly work with passing patterns.
  • Moved grip location of rings from geometrical center of the ring (the hole) to the edge, to appear more natural.
  • Fixed auto-scaling of the animation, so the props and jugglers are better sized and positioned within the view.
  • For patterns with more than 3 jugglers, increased the default spacing between jugglers to eliminate overlaps in the hands.
  • Fixed bugs in Save As HTML output.
  • Fixed internal error when animating siteswap patterns containing only 1s, along with a defined hand movement like half shower -- bug logged in 2004!).
  • Fixed uncaught exception from parsing lexical errors due to unrecognized characters.

Other changes

  • Removed idx3d library and 3d rendering mode, making Juggling Lab fully open source.
  • Removed Jakarta regular expression library; using Java regular expression library instead.
  • Removed AElfred XML parser; using Java XML parser instead.
  • Removed Acme labs IntHashtable class; using Java Hashtable instead.
  • Removed support for legacy parameters mat_style, mat_HR, and mat_DR.
  • Added bookmarklet to home page.

Release 0.6 (March 25, 2010)

New features

  • None.

Bug fixes

  • Fixed bug under Windows XP: Application could not be quit using the traditional method of clicking the close icon ("red X") in the corner of the main window. (Herve Nicol)

Other changes

  • Changed siteswap.php to generate animations with ladder diagrams.
  • Removed support for Java 1.1.
  • Removed old_siteswap notation.
  • Removed experimental functionality to directly upload JML files to a wiki. The preferred approach is to use the <juggle> tag used by JuggleWiki.
  • Reorganized a lot of the documentation.

Release 0.5.3 (September 19, 2004)

New features

  • Complete rewrite of the siteswap parser, incorporating the following new features: (1) mixed asynch/synch notation, (2) sub-pattern repeats, and (3) simplified passing notation. (For now, the old siteswap parser has been retained as "Siteswap_old", available from the Notation menu.)
  • Ability to select a prop type in the siteswap input panel. (Jason Haslam)

Bug fixes

  • None.

Other changes

  • Added zip-formatted distribution for Windows users.
  • Created source code documentation using Doxygen. (Johannes Waldmann)
  • Moved source code and source code documentation into a separate distribution file.

Release 0.5.2 (July 16, 2004)

New features

  • Preview of new ring prop type, accessible from the "Define prop..." popup menu item in the visual editor. Example in the demo area. (Jason Haslam)

Bug fixes

  • Fixed internal errors when doing regular expression filtering in siteswap generator, introduced in version 0.5.1 as result of code restructuring.
  • Fixed problem with animated GIF saving -- feature was inadvertently disabled.
  • Fixed internal errors caused by potential security restrictions when accessing remote images in the image prop.

Other changes

  • When running as an application, the siteswap generator now sends its output to a new window rather than the "Pattern List" tab. This restores the capability to save generator output as text or JML files. (Thanks to Sean Gandini for this catch.)

Release 0.5.1 (July 10, 2004)

New features

  • New "Image" prop type, which displays user-specified bitmapped image as a prop. Accessible from the "Define prop..." popup menu item in the visual editor. (Jason Haslam)
  • Added support for Ben Beever's '*' notation to repeat a synch pattern with switched hands. For example, (6x,4)* is now identical to (6x,4)(4,6x). (Rupert Millard)
  • Siteswap generator now allows period ranges to be entered, e.g. "1-5", "-5", "5-". An upper limit must be specified unless searching for prime patterns. Leave the "period" field empty to find all patterns, regardless of period. Also, you can now leave the "max. throw" field empty to turn off the max. throw restriction.
  • Siteswap generator now runs in the background, so that the user interface isn't blocked during long searches. (Jason Haslam)

Bug fixes

  • Fixed internal errors caused by bug in ladder diagram portion of visual editor. (Jason Haslam)
  • Fixed internal errors caused by specifying a negative "max throw" generator setting.
  • Fixed internal errors caused by out-of-range juggler and path numbers when reading JML files.

Other changes

  • Replaced Jack's lame bouncing-ball audio sample with a much better one from Vincent Bruel.
  • Added a "siteswap2" notation to the "Notation" menu, currently nonfunctional and for development purposes only.

Release 0.5 (April 2, 2004)

New features

  • Applet can upload a JML file to a server, enabling the Juggling Lab Wiki.
  • Applet can load and display pattern-type JML files, in addition to JML pattern lists.
  • Applet can launch an editing window that contains menus and nearly the full functionality of the standalone application.

Bug fixes

  • Fixed bug in siteswap generator code to find starting and ending sequences; bug was responsible for internal error messages.
  • Fixed bug in siteswap parser that caused some bounce throws to be read incorrectly.

Other changes

  • Added "side by side" body position to siteswap input panel.
  • Changed the applet calling parameters, and updated the applet documentation accordingly.

Release 0.4.1 (February 22, 2004)

New features

  • Created translations of GUI text for Spanish (Jason Haslam), Portuguese (Jason Haslam), and French (Xavier Verne); the software determines the language based on your system (typically OS) language settings.
  • Added antialiased drawing in the 2d renderer for Java installations that support it (Java 1.2 and higher).
  • Added regular expressions package to siteswap generator, allowing the user to specify more sophisticated exclusion/inclusion search criteria. This feature and the next three are discussed in the siteswap generator documentation.
  • Added siteswap generator option to generate only passing patterns that are connected.
  • Added siteswap generator option to generate only multiplexing patterns containing at least one true multiplex throw.
  • Siteswap generator by default now avoids generating duplicate passing patterns where the jugglers have simply been permuted, unless requested by the user.

Bug fixes

  • Fixed bug in siteswap generator that displayed rotations of composite passing siteswaps as distinct patterns.

Other changes

  • Used Java internationalization framework to isolate all language-specific user interface elements into external properties files (called GUIStrings.properties and ErrorStrings.properties for GUI text and error messages, respectively). (Jason Haslam)
  • Removed "exclude these passes" element from siteswap generator control panel; this functionality is now provided by the new improved exclusion/inclusion search capability.

Release 0.4 (January 10, 2004)

New features

  • Multiple simultaneous catches in the same hand are now staggered in time. For example [33].
  • The transitions in the visual editor ladder diagram are now colored the same as the balls they represent. (Jason Haslam)
  • Added optional sounds for catching and bouncing. By default, bounce sounds are on and catch sounds are off; these settings can be adjusted in the "Animation Preferences" dialog, or in an applet call via the catchsound and bouncesound animation variables. (Note: These sounds are not available within JugglingLabAWT.)
  • Rewrote siteswap generator code that finds start/end sequences for excited state patterns; the shortest possible sequences are now generated in all cases.
  • Added "manual settings" entry box on siteswap input panel, and updated documentation accordingly.
  • On Mac OS X application version, double-clicking JML files in the Finder now opens them in Juggling Lab (and starts the application, if it isn't running).

Bug fixes

  • Fixed the artifacts that sometimes appeared in the top border of the visual editor ladder diagram on throws to the same hand. (Jason Haslam)
  • Fixed bouncefrac setting bug with bounced siteswap patterns, which caused other bounce parameters (e.g., number of bounces) to be overridden.
  • Fixed physical placement of new events manually added to ladder diagram (using Edit View popup menu).
  • Fixed internal errors caused when user enters incorrectly-formatted text in siteswap generator control panel.

Other changes

  • Removed siteswap generator limitation that the max throw height could not be smaller than the number of balls, a reasonable situation when searching for multiplexed patterns.
  • The applet patternfile parameter used to specify a JML pattern file is now specified relative to the HTML page, not the JAR file.

Release 0.3.11 (December 27, 2003)

New features

  • Added support for "hyperlift" and "hyperforce" bouncing; see the siteswap notation documentation for an explanation of how to use these within siteswap patterns.
  • Added support for bounced throws with more than one bounce.
  • Added a PHP front end to Juggling Lab, and added a page of instructions.

Bug fixes

  • Fixed -n and -no flags in j2 command-line siteswap generator.
  • Fixed internal error in ladder diagram code when user deselects the pop-up menu (Jason Haslam).

Other changes

  • Made check for Java 1.2 in ballProp more efficient.

Release 0.3.10 (November 23, 2003)

New features

  • None.

Bug fixes

  • Fixed clipping of event location graphic (the green box) in the animator, when using the visual editor.

Other changes

  • Included MS-DOS/Unix scripts for running the siteswap generator from the command line; these are called j2 and are available in the bin directory.
  • Clarified the terms of the Juggling Lab license, most importantly the provision to make source code available.
  • Included build.xml for building Juggling Lab using the Apache Ant cross-platform Java build tool.
  • Included files to build the Mac OS X version of Juggling Lab into the Mac distribution.
  • Reorganized directory structure.

Release 0.3.9 (November 2, 2003)

New features

  • Balls now have transparent background, rather than square white background, when running on Java 1.2 or higher.
  • Added "highlight" parameter for balls, accessible from "mod" setting of JML <prop> tag, or in the visual editor under "Define Prop...".
  • Added menu option to save pattern lists as text (existing save option writes in JML format). This feature is probably most useful for saving lists of generated siteswaps.

Bug fixes

  • Fixed problem with JugglingLabAWTApplet in Internet Explorer when using Microsoft's VM. Problem caused by upgrade to JDK 1.4 compiler, which is not backward-compatible with Microsoft's VM unless compiler target setting is used properly.
  • Fixed bug when animating passing siteswap patterns -- '<' and '>' characters in pattern title were confusing the JML parser.
  • Made the generator "Run" button the default button when in the "Generator" panel. (The default button is the one activated by hitting the return key.)

Other changes

  • Added list of Juggling Lab contributors to main page.

Release 0.3.8 (September 23, 2003)

New features

  • None

Bug fixes

  • Fixed bug that affected multi-line patterns (i.e., those containing carriage returns or linefeeds); solution required slight adjustment to handling of output from the siteswap generator.

Other changes

  • None

Release 0.3.7 (September 19, 2003)

New features

  • Added stereo display mode, which shows a pair of images that give depth perception to the animation under "cross-eyed" viewing (i.e., cross your eyes slightly so that the images appear to merge). This feature is available in the Animation Preferences panel, or in the "animprefs" setting.
  • Added support for more than 9 jugglers in siteswap patterns; notation is to use 'a' for juggler 10, 'b' for juggler 11, and so on, for a maximum of 35 jugglers.
  • Made file open/save dialogs default to the Juggling Lab directory on first use, and the last directory on subsequent uses.
  • Allow carriage returns and linefeeds in applet "pattern" parameter, so that text for hands, body, etc. settings can extend across multiple lines.

Bug fixes

  • Fixed major bug in siteswap "hands" setting when 't' and 'c' specifiers are used.
  • Fixed problem with legacy "mat_style" setting when used with synchronous patterns.
  • Added error check to ensure that throw/catch coordinates are specified in "hands" setting.
  • Turned off ladder diagram for passing patterns (ladder diagram does not currently support passing).
  • Fixed a startup problem that caused the Java 2 version of the applet (JugglingLab.class) to not initialize the animation correctly on some JVMs.
  • Fixed a problem when lists of passing siteswap patterns were saved and reloaded; required a change to the pattern list JML format (see below).

Other changes

  • Changed the pattern list JML format substantially. Added "animprefs" and "pattern" attributes to the "line" tag. This allows you to change the animation settings on a pattern-by-pattern basis, and also ensures that the patterns display identically under both the application and the applet. The applet "animprefs" parameter is now ignored when loading a patternlist.
  • Under Mac OS X, using java.awt.FileDialog class instead of javax.swing.JFileChooser in order to look more like a native application.
  • Adjusted default spacing between bodies in passing patterns with many jugglers, in order to reduce physical overlap.

Release 0.3.6 (August 21, 2003)

New features

  • Expanded format of "hands" setting in siteswap notation, to allow for multiple jugglers and increased time resolution. Updated documentation accordingly.
  • Created new "body" setting in siteswap notation, to set locations of jugglers in time.
  • Added "Body movement" input box on siteswap notation control panel to make it easier to experiment with the "body" setting.
  • Eliminated creation of new objects while animating in 2d mode by using an object pool. Now causes fewer garbage collects under normal operation.

Bug fixes

  • Fixed bug in calculating the physical center of the pattern, which resulted in strange behavior during camera rotation.

Other changes

  • Changed format of "hands" setting to be more compact, readable, and consistent with the new "body" setting.
  • Made XYZ coordinate axes visible in camera-drag mode display only after mouse drag begins.
Known issues
  • Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back
  • 3d display mode is relatively slow; likely an opportunity to optimize polygon count.
  • Juggler head vanishes or displays strangely when exactly edge-on.

Release 0.3.5 (August 5, 2003)

New features

  • Created the JugglingLabAWT applet class, requiring only Java 1.1 to run. This provides a simple viewer applet that doesn't require a download of the Java plug-in from Sun. Various updates to other classes, especially jugglinglab.core.Animator, to remove all Swing (Java 2) dependencies from the core animation code.
  • Created new documentation for the siteswap input panel and the applet calling convention.
  • Added back capability to pause/unpause animation. Click within the animation view to toggle (click+drag is interpreted as a change in camera angle; click+no drag pauses/unpauses the animator).
  • Made juggler bodies opaque in 2d rendering mode, using a "painter's sort" algorithm. Props also now display in correct z-sorted order relative to one another.
  • Added mechanism to define starting hands for asynch siteswap patterns, documented in the siteswap notation page.
  • Changed default camera angle for passing patterns.
  • Added support for JuggleAnim input parameters to the siteswap notation component.

Bug fixes

  • Added support for force-bounces back into siteswap notation component ('F' modifier).
  • Fixed "start paused" feature.
  • Fixed bug that caused interference between multiple applets on a single page, caused by global variables in the singleton mhnNotation class.

Other changes

  • Made double-buffering on by default.
  • Changed coordinate format in siteswap hands setting from (x,y,z) to (x,z,y), to give shorter hands strings (y coordinate is front-to-back and is often 0).
Known issues
  • Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back
  • 3d display mode is relatively slow; likely an opportunity to optimize polygon count.

Release 0.3.4 (July 17, 2003)

New features

  • Support for passing siteswap patterns: arbitrary number of jugglers, synch or asynch rhythm, and multiplexing
  • Full support for passing in siteswap generator
  • Option to disallow "clustered" throws (e.g., [33]) in siteswap generator
  • Ability to change camera angle in 2d rendering mode (hold down mouse button over animation and drag mouse to change view)
  • XYZ coordinate axes added to both 2d and 3d rendering modes, when camera angle is being changed
  • "Snap to grid" feature when camera angle is being changed

Bug fixes

  • Many improvements to GIF-writing code; now writes GIFs correctly in 3d rendering mode
  • Occasional pattern centering errors in the display, in 2d rendering mode
  • Internal errors caused by leaving "version" attribute out of <jml> tag
  • Internal errors associated with <position> tag
  • Disabled Edit View when there is more than one juggler (ladder diagram isn't working yet in this case)

Other changes

  • Removed "passing leader slot number" input to siteswap generator; passing leader is assumed to be juggler #1
Known issues
  • Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back

Release 0.3.3 (June 21, 2003)

New features

  • Added 3d rendering capability using Peter Walser's idx3d III 3d library; option is accessible from Animation Preferences panel
  • Added ability to animate passing patterns; new <position> tag in JML defines juggler body positions and angles (Note: Juggling Lab does not yet have notation components for any of the common passing notations, so passing patterns require one to hand-code JML as of this release)

Bug fixes

  • None major

Other changes

  • Moved GIF-writing code into main distribution (the GIF patent expired in the USA on June 20, 2003)
  • Changed JML coordinate system to simplify 3d rendering: X coordinate is right/left, Y coordinate is in/out, Z coordinate is up/down

Release 0.3.2 (January 9, 2003)

New features

  • Added "find pattern rotations" option to siteswap generator
  • Added graphical indicator for "switch" symmetry type in visual editor

Bug fixes

  • Siteswaps with 0's/2's look funny because the hands swing too wide (siteswapNotation.java)
  • Siteswap generator prints cyclic rotations of some patterns in "all compositions" mode (siteswapGenerator.java)
  • Internal error caused by left/right click combination in visual editor (EditLadderDiagram.java)
  • Internal error caused by some invalid siteswaps (e.g., 46500) (siteswapNotation.java)
  • <holding> transitions missing from some siteswaps when converted to JML (e.g., [92]22) (siteswapNotation.java)
  • "Switch" symmetry type not working (EventImages.java)
  • Internal error caused by some JML parsing errors (JMLView.java)
  • Internal error caused by rescaling pattern timing (EditLadderDiagram.java)

Other changes

  • Changed default listing options in siteswap generator
  • Created page of change notes (this page)