Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

JuggleSim 2.0

71 views
Skip to first unread message

Adrian G

unread,
May 18, 2012, 3:49:51 AM5/18/12
to
Hi all,

So after quite a while of not working on it very much, I've finally
finished JuggleSim 2.0!

There are a *LOT* of changes, especially in the interface and simulation,
some of the major ones are below, for a complete list see
http://www.jugglesim.com/download.php

* Now has a figure that is simulated rather than just the balls
* Improved interface; now uses a multiple document interface that
elliminates the need for heaps of windows open when you have multiple
simulation windows open.
* Anagrams finder automatically opens beneath siteswap entry box when
there is a collision in the siteswap.
* Automatically updates simulations in real-time

I've also been experimenting with a 'natural language pattern entry' idea,
this allows entry of pattern such as '7 ball freeze frame' which would
evaluate to db97531. Currently it works but I have very limited
patterns[1] and they only appear in a drop down list when running with
NET instead of Mono.

The website is at http://www.jugglesim.com/ and can be downloaded from
http://www.jugglesim.com/download.php for Windows, Mac and Linux.

So please try it out and let me know what you think of it! if you have any
problems/questions/suggestions please let me know either here or via the
email on the website.

Look forward to hearing from you all,

Adrian

[1] Templates & names for patterns are located in 'templates.xml' for
anyone interested in looking through them, if you know of a named pattern
not listed please let me know.

--
----== posted via www.jugglingdb.com ==----

CamStradeski

unread,
May 18, 2012, 5:13:34 AM5/18/12
to
Adrian G wrote:
> I've also been experimenting with a 'natural language pattern entry' idea,
> this allows entry of pattern such as '7 ball freeze frame' which would
> evaluate to db97531. Currently it works but I have very limited
> patterns[1] and they only appear in a drop down list when running with
> NET instead of Mono.


This is awesome, exactly what needs to be done, being able to type in 3
ball mills mess and not have to screw around in juggling lab hand
movements, or 3 ball 3 up pirouette without screwing with body movement. .
Excellent work!

Adrian G

unread,
May 18, 2012, 5:45:24 AM5/18/12
to
Thanks :)

Unfortunately it's not quite at that stage yet as the actual simulator
does't support different body/arm movements. But for plain siteswaps it's
quite useful rather than working your way backwards through the alphabet
for high number freeze frames or typing/working out huge things like (c,
2x)(8, 2x)(4, 2x)(2x, c)(2x, 8)(2x, 4) for 5b box.

Adrian

capricornwhite

unread,
May 18, 2012, 6:51:24 AM5/18/12
to
I love this sim, any chance of it going on as a phone app?
I would allow the entry of transition throws in there as a string to go
from synch to asynch etc. i know it's there in the bottom telling you
what the entries and exits are but i'd like a visual representation as
well, maybe having a transition generator to pick and chose from 1 pattern
to another.

oh and as cam said, the real
Oh any chance of having happy 2s as an option?

The natural pattern entry could be problematic just because there's
different names for the same trick, "7 ball freeze frame" i call a "7 ball
tower" and there's different versions of that trick as well, not just
DB97531, "975" as an example. Then there's the "machine" tricks, i've
seen them called anything from machine, factory, continuous machine,
upsidedown shower, (not that i think the last one is accurate)

I'm not saying real language is not possible, but if you are going to do
that, i'd consider having a drop down list, or use of synonyms as a
pattern. and there's going to be loads of them.

Adrian G

unread,
May 18, 2012, 7:35:21 AM5/18/12
to
capricornwhite wrote:
>
> I love this sim, any chance of it going on as a phone app?

Thanks :D

I've considered making it a phone app but currently there are a few
problems:

* the multiple document interface (MDI) which is all the smaller windows
that are opened inside the main one wouldn't work very well so I'd have to
work out a nicer way to do it. Not that hard but just time comsuming
* I've written it in C# so it would be easy to port to Windows Phone but
for Android I'd need to buy MonoDroid and for iPhone I'd need to buy
MonoTouch which I don't really want to do.
* All of it would need to be optimised really heavily, simulation updating
sometimes lags on a slow computer because of the overhead and it would be
even worse on a phone

So I'd love to and I'm considering porting it to C++ anyway for
performance reasons so maybe sometime, especially as it wouldn't be too
hard to port C++ to objective C (what iPhones use).

> I would allow the entry of transition throws in there as a string to go
> from synch to asynch etc. i know it's there in the bottom telling you
> what the entries and exits are but i'd like a visual representation as
> well, maybe having a transition generator to pick and chose from 1 pattern
> to another.

Not entire sure what you mean here, do you mean some kind of button that
inserts the entry/exit below?
Adding a transition generator wouldn't be too hard. What do you mean by a
visual representation? as in a list of the transitions, having them
simulated or something else?

> oh and as cam said, the real
> Oh any chance of having happy 2s as an option?

As in held 2s? yes, I will but I haven't got around to it yet as it
requires me to work out a way for it to know if it needs to catch a throw
for a multiplex at the same time as 'catching' the 2 which would change
whether it just moves slowly through the scoop or if it has to wait at the
catching position until it's caught the other ball.

> The natural pattern entry could be problematic just because there's
> different names for the same trick, "7 ball freeze frame" i call a "7 ball
> tower" and there's different versions of that trick as well, not just
> DB97531, "975" as an example. Then there's the "machine" tricks, i've
> seen them called anything from machine, factory, continuous machine,
> upsidedown shower, (not that i think the last one is accurate)
>
> I'm not saying real language is not possible, but if you are going to do
> that, i'd consider having a drop down list, or use of synonyms as a
> pattern. and there's going to be loads of them.

Currently when using .NET it will give you a drop down box of patterns but
Mono doesn't like it at the moment. The current configuration also allows
duplicates, e.g. '5 ball shower with a leak' and it's compressed version
'5 ball leak' are allowed[1]. The main problem is that something like
popcorn has many different patterns that it can refer to (both passing and
solo) so it

Thanks for the feedback,

Adrian

[1] in the xml file it simply has 2 (or more) <name> tags, probably not
the 'correct' way of doing it but it works seeing as I just iterate
through the tags when JuggleSim loads.

CamStradeski

unread,
May 18, 2012, 10:59:48 AM5/18/12
to
Yeah I had a play with it, was just musing about where it could go, are
you just using a database of words that are associated with tricks so a
key:pair value where 4b shower maps to 71 or are is it working more
intelligently where it sees the word shower and uses the number or other
keywods to parse the text into a siteswap?

capricornwhite

unread,
May 18, 2012, 11:20:57 AM5/18/12
to
Yeah, the button idea would be pretty good so that it can go from one
thing to another, You could work out a whole routine between synch and
asynch patterns. By visual representation, i just meant the animation.
in fact, that might be an idea to add later on when you do the natural
pattern entry by being able to isolate a particular section into different
patterns.

for instance :-
"44444fountain, 633mills mess, 4444mills mess, 4444reverse fountain,
4444fountain" I hope that makes sense

fudging the actual siteswap might be something to look at as well, when
you're juggling the patterns in reality you can change the height of a 5
within the pattern, to make it almost the same height as a 3, by speeding
up the throws, i know a trick which is a perfect example of this but can't
think of it's name but visually it looks like a 3 ball cascade because the
heights don't change but you do a quick hand switch and catch the right
hand throw with the right hand and then do a reverse throw while keeping
the cascade shape i think the actual siteswap might be 45303 but i'm not
100% sure

> > oh and as cam said, the real
> > Oh any chance of having happy 2s as an option?
>
> As in held 2s? yes, I will but I haven't got around to it yet as it
> requires me to work out a way for it to know if it needs to catch a throw
> for a multiplex at the same time as 'catching' the 2 which would change
> whether it just moves slowly through the scoop or if it has to wait at the
> catching position until it's caught the other ball.

Happy 2s are thrown, excited 2s, normal 2s are held and by visual, sorry
for the confusion there
>
> > The natural pattern entry could be problematic just because there's
> > different names for the same trick, "7 ball freeze frame" i call a "7 ball
> > tower" and there's different versions of that trick as well, not just
> > DB97531, "975" as an example. Then there's the "machine" tricks, i've
> > seen them called anything from machine, factory, continuous machine,
> > upsidedown shower, (not that i think the last one is accurate)
> >
> > I'm not saying real language is not possible, but if you are going to do
> > that, i'd consider having a drop down list, or use of synonyms as a
> > pattern. and there's going to be loads of them.
>
> Currently when using .NET it will give you a drop down box of patterns but
> Mono doesn't like it at the moment. The current configuration also allows
> duplicates, e.g. '5 ball shower with a leak' and it's compressed version
> '5 ball leak' are allowed[1]. The main problem is that something like
> popcorn has many different patterns that it can refer to (both passing and
> solo) so it
>
>
> [1] in the xml file it simply has 2 (or more) <name> tags, probably not
> the 'correct' way of doing it but it works seeing as I just iterate
> through the tags when JuggleSim loads.
I'd take the not 'correct' way of doing something if it comes up with the
correct outcome :), if it needs to be changed later, there's always time
for that
> Thanks for the feedback,
>
> Adrian
And you're very welcome, hope it helps

Varkor

unread,
May 18, 2012, 12:21:03 PM5/18/12
to
It's very nice to see that people are still working on juggling simulators!
The first thing I noticed when animating a pattern, however, was that the hand that's not throwing is always empty. It seems impossible for both hands to be occupied unless the pattern is synchronous. It makes the animation look very rushed.
The real-time aspect is very nice, and often overlooked, although it would be even better if it started animating the typed pattern in real-time too :D
Forgive me if this is common knowledge, but what does the "state" and "excitation" show? I didn't realise they had different values...
When it said a collision would occur, it didn't actually display any suggestions in the box underneath. It froze when trying to find anagrams too.
I think there should be a "Go" button instead of just having to press enter. It confused me at first (although it may seem obvious to you, many people are lost without it).
Nice work though! It works well and has lots of nice features.

mgrwilso

unread,
May 18, 2012, 4:57:16 PM5/18/12
to
On my first look I am really impressed. Thanks Adrian!

Adrian G

unread,
May 18, 2012, 9:23:28 PM5/18/12
to

Adrian G

unread,
May 18, 2012, 10:01:12 PM5/18/12
to
Odd, didn't post correctly for some reason,

CamStradeski wrote:
>
> Yeah I had a play with it, was just musing about where it could go, are
> you just using a database of words that are associated with tricks so a
> key:pair value where 4b shower maps to 71 or are is it working more
> intelligently where it sees the word shower and uses the number or other
> keywods to parse the text into a siteswap?
>

I made a syntax that is expanded based on the number of balls ('n'),
anything in curly brackets is evaluated with 'n' replaced by the number of
balls and 'i' replaced by where the loop is at. Loops are of form
'|<pattern>|^{repeats}|' or '|<pattern>|^{start,stop,step}|', step is
optional and defaults to 1. So '|{2*n-2*i+1}|^{1,n+1}|' would work for
freeze frames.

In 'templates.xml' there are sets of one or more names which go to a
certain pattern, JuggleSim reads in templates on startup and when a
pattern matches form '<number> ball(s) <pattern>' it evaluates <pattern>
with <number> balls.

I just though while reading your post that maybe form '4b box' would be
good as well as '4 ball box', does that sound nicer to you?

Adrian

Adrian G

unread,
May 18, 2012, 10:07:52 PM5/18/12
to
capricornwhite wrote:
>
> > > I would allow the entry of transition throws in there as a string to go
> > > from synch to asynch etc. i know it's there in the bottom telling you
> > > what the entries and exits are but i'd like a visual representation as
> > > well, maybe having a transition generator to pick and chose from 1
pattern
> > > to another.
> >
> > Not entire sure what you mean here, do you mean some kind of button that
> > inserts the entry/exit below?
> > Adding a transition generator wouldn't be too hard. What do you mean by a
> > visual representation? as in a list of the transitions, having them
> > simulated or something else?
>
> Yeah, the button idea would be pretty good so that it can go from one
> thing to another, You could work out a whole routine between synch and
> asynch patterns.

I think a transition generator with the option of inserting it into the
siteswap field would be better here rather than a button as the interface
would quickly get very cluttered with buttons like that.

> By visual representation, i just meant the animation.
> in fact, that might be an idea to add later on when you do the natural
> pattern entry by being able to isolate a particular section into different
> patterns.
>
> for instance :-
> "44444fountain, 633mills mess, 4444mills mess, 4444reverse fountain,
> 4444fountain" I hope that makes sense

I could use the syntax that Miika mentioned in the 'Siteswaps - tell me
something I don't know' thread last year using an underscore. So you could
enter: '|(4,4)^5|_4444_|4 ball box^5|' which would repeat 4 synch fountain
5 times, transition to asynch and do 4 fours, transition to box for 5
rounds and finally transition back into synch fountain. Though it seems
ugly and I get the feeling that if you want to do stuff like that it would
be better to do it o multiple lines, something like:

|(4,4)^5| #synch fountain 5 times
>(5x,7)(2x,4) #explicit transition
444444 #4b fountain for 6 throws
#no transition specified so default used
|4 ball box^5| #run box for 5 rounds
#automatically transitions back to original siteswap

Does that seem ok? I could have a separate entry screen (maybe n a new
tab) for that.

> fudging the actual siteswap might be something to look at as well, when
> you're juggling the patterns in reality you can change the height of a 5
> within the pattern, to make it almost the same height as a 3, by speeding
> up the throws, i know a trick which is a perfect example of this but can't
> think of it's name but visually it looks like a 3 ball cascade because the
> heights don't change but you do a quick hand switch and catch the right
> hand throw with the right hand and then do a reverse throw while keeping
> the cascade shape i think the actual siteswap might be 45303 but i'm not
> 100% sure

You can fudge it a bit with the 'throws per second' and 'dwell time'
settings in 'more settings'. You can't fudge individual throws separately
as that would be really hard to do, both for me to program and for users
to actually enter for each throw.

> > > oh and as cam said, the real
> > > Oh any chance of having happy 2s as an option?
> >
> > As in held 2s? yes, I will but I haven't got around to it yet as it
> > requires me to work out a way for it to know if it needs to catch a throw
> > for a multiplex at the same time as 'catching' the 2 which would change
> > whether it just moves slowly through the scoop or if it has to wait at the
> > catching position until it's caught the other ball.
>
> Happy 2s are thrown, excited 2s, normal 2s are held and by visual, sorry
> for the confusion there

It already does thrown 2s, always. I think the default should be held
though, as soon as I get held 2s working.

Adrian

Adrian G

unread,
May 18, 2012, 10:30:20 PM5/18/12
to
Those that aren't busy making r.j portals at least :P

> The first thing I noticed when animating a pattern, however, was that the
> hand that's not throwing is always empty. It seems impossible for both hands
> to be occupied unless the pattern is synchronous. It makes the animation
look > very rushed.

Yeah, that's due to the dwell ratio, which be default is currently 0.25,
0.5 would look more natural but if the dwell ratio is 0.5 then 1s stuff up
as they have no 'air time' and the simulation sort of dies, I haven't
figured out why yet though. If you want to experiment, dwell time is in
'more settings'.

> The real-time aspect is very nice, and often overlooked, although it would
be > even better if it started animating the typed pattern in real-time too :D

It should, if you have an open simulation window, as you type it should
change the animation in the child window with focus. Might be a problem
with cross platform stuff, what OS are you on?

> Forgive me if this is common knowledge, but what does the "state" and
> "excitation" show? I didn't realise they had different values...

State is the actual state of the pattern, e.g. 10101, where as excitation
is a value that describes how excited the pattern is, see 'EXCITATION
LEVELS' at
http://www.jugglingdb.com/compendium/geek/notation/siteswap/bensguide.html?page=3
I use a modified version of his algorithm to work it out.

> When it said a collision would occur, it didn't actually display any
> suggestions in the box underneath. It froze when trying to find anagrams too.

Hmm, again, what OS? on Windows I have no trouble with any of that (nor on
my Snow Leopard VM or Ubuntu 11.10), entering 432 into the siteswap should
immediately come up with the pattern 423 and when double clicked it should
be inserted into the text box.

Did it display 'loading' when you typed in a pattern with a collision? or
just the white box? what pattern was it? if it was a synch pattern it may
not have had any valid anagrams.

What pattern was it finding anagrams of when it froze? if it was too long
that may have been the issue.

> I think there should be a "Go" button instead of just having to press enter.
> It confused me at first (although it may seem obvious to you, many people
are > lost without it).

Pressing enter should open a new window (same as pressing 'New window'
below or Ctrl-N). If you already have a window open as you type it should
automatically update the animation.

> Nice work though! It works well and has lots of nice features.

Thanks :)

Adrian

Adrian G

unread,
May 23, 2012, 2:09:22 AM5/23/12
to
Has anyone else had a chance to try it out?

I'm looking for as much feedback as I can get so I know what to change, so
please try it out if you haven't already.

It's portable so there's no need to worry about extra stuff installed on your
system.

Thanks,

Adrian

Also, do people find the need of having Mono installed to be very annoying
when trying it out?

--
----== posted via www.jugglehub.com ==----

CamStradeski

unread,
May 23, 2012, 6:14:03 AM5/23/12
to
Adrian G wrote:
> I just though while reading your post that maybe form '4b box' would be
> good as well as '4 ball box', does that sound nicer to you?
>
> Adrian
>

Awesome, great to understand how you set that up, I think having both forms
would probably be useful, the more robust the system is the more people will
pick it up and use it (from my experience anyway), so the more it recognises
the better.

I personally almost always use 4b instead of 4 ball, but I'd guess there were
probably equal numbers of people who use both.

Warren

unread,
May 23, 2012, 1:13:41 PM5/23/12
to
Hi Adrian,

I gave it a whirl on my Ubuntu 12.04 system and it worked well after I installed some of the required mono libraries that were not on installed by default. I liked the way it automatically updated the sim as you typed the siteswap in. I did notice some weird focus problems, but, I think you mentioned that you had seen that already. I did find the thrown 2s a bit disconcerting at first. Thanks for creating this...it will be my primary off line sim when I am at the linux box.

cheers - Warren

Adrian G

unread,
May 25, 2012, 3:16:57 AM5/25/12
to
Warren wrote:
> Hi Adrian,
>
> I gave it a whirl on my Ubuntu 12.04 system and it worked well after I
> installed some of the required mono libraries that were not on installed by
> default. I liked the way it automatically updated the sim as you typed the
> siteswap in. I did notice some weird focus problems, but, I think you mentioned
> that you had seen that already. I did find the thrown 2s a bit disconcerting
> at first. Thanks for creating this...it will be my primary off line
> sim when I am at the linux box.
>
> cheers - Warren

Hi Warren,

Which libraries did it require that weren't installed by default? I might need
to include that in the installation instructions.
Did it take solid knowledge of Linux to be able to install them?

Just to be sure, which focus problems are you speaking of?

Glad you like it!

Adrian

Warren

unread,
May 25, 2012, 3:09:41 PM5/25/12
to
libmono-system-windows-forms and the packages that it needed.

Nah...just basic linux knowledge required...just had to use the Ubuntu Software Center and search for that package and tell it to install it.

The focus problem I am talking about is when I hit enter after typing in a siteswap the focus jumps to the animation window and I can no longer type in any siteswaps until I click back into that text field. Probably working as designed it just was a pain, because I guess I like to hit enter when I finish typing in my siteswap. :-)

cheers - Warren

Adrian G

unread,
May 26, 2012, 12:22:33 AM5/26/12
to
Adrian G wrote:
> Odd, didn't post correctly for some reason,
>
> CamStradeski wrote:
> >
> > Yeah I had a play with it, was just musing about where it could go, are
> > you just using a database of words that are associated with tricks so a
> > key:pair value where 4b shower maps to 71 or are is it working more
> > intelligently where it sees the word shower and uses the number or other
> > keywods to parse the text into a siteswap?
> >
>
> I made a syntax that is expanded based on the number of balls ('n'),
> anything in curly brackets is evaluated with 'n' replaced by the number of
> balls and 'i' replaced by where the loop is at. Loops are of form
> '||^{repeats}|' or '||^{start,stop,step}|', step is
> optional and defaults to 1. So '|{2*n-2*i+1}|^{1,n+1}|' would work for
> freeze frames.
>
> In 'templates.xml' there are sets of one or more names which go to a
> certain pattern, JuggleSim reads in templates on startup and when a
> pattern matches form ' ball(s) ' it evaluates
> with balls.
>
> I just though while reading your post that maybe form '4b box' would be
> good as well as '4 ball box', does that sound nicer to you?
>
> Adrian
>

For those reading through JuggleHub, all the things of form &lt; stuff &gt;
were removed so here's the above but not using less than and greater than
symbols so it displays properly.

I made a syntax that is expanded based on the number of balls ('n'),
anything in curly brackets is evaluated with 'n' replaced by the number of
balls and 'i' replaced by where the loop is at. Loops are of form
'|pattern|^{repeats}|' or '|pattern|^{start,stop,step}|', step is
optional and defaults to 1. So '|{2*n-2*i+1}|^{1,n+1}|' would work for
freeze frames.

In 'templates.xml' there are sets of one or more names which go to a
certain pattern, JuggleSim reads in templates on startup and when a
pattern matches form 'number ball(s) pattern' it evaluates 'pattern'
with 'number' balls.

I just though while reading your post that maybe form '4b box' would be
good as well as '4 ball box', does that sound nicer to you?

Adrian

--
----== posted via www.jugglehub.com ==----

Adrian G

unread,
May 26, 2012, 12:30:52 AM5/26/12
to
Warren wrote:
>
> libmono-system-windows-forms and the packages that it needed.
>
> Nah...just basic linux knowledge required...just had to use the Ubuntu Soft=
> ware Center and search for that package and tell it to install it.
>
> The focus problem I am talking about is when I hit enter after typing in a =
> siteswap the focus jumps to the animation window and I can no longer type i=
> n any siteswaps until I click back into that text field. Probably working a=
> s designed it just was a pain, because I guess I like to hit enter when I f=
> inish typing in my siteswap. :-)
>
> cheers - Warren
>

OK, I've added those instructions to the website for Linux installation,
thanks :)

No, that wasn't meant to be quite like that, it was a difference between .NET
and Mono. With .NET, calling focus on the child window just brought it to the
front, but with Mono it transferred the focus over completely. It was easy to
fix so I've fixed that up and have uploaded the latest version.

The latest version also supports natural patterns of form '4b shower' as well
as the current '4 ball shower' as per CamStradeski's suggestion. And I also
fixed a couple of minor bugs.

Keep the suggestions coming please!! it's good to know what I should be
changing/fixing. :)

Thanks,
0 new messages