[PD] jMax Phoenix
Jonathan Wilkes
jancsika at yahoo.com
Wed Sep 22 16:48:53 CEST 2010
--- On Wed, 9/22/10, Hans-Christoph Steiner <hans at at.or.at> wrote:
> From: Hans-Christoph Steiner <hans at at.or.at>
> Subject: Re: [PD] jMax Phoenix
> To: "Mathieu Bouchard" <matju at artengine.ca>
> Cc: pd-list at iem.at
> Date: Wednesday, September 22, 2010, 8:01 AM
>
> On Sep 21, 2010, at 6:36 PM, Mathieu Bouchard wrote:
>
> > On Tue, 21 Sep 2010, Maurizio De Cecco wrote:
> >
> >> Given the fact that jMax slept a few years, it
> cannot compete with puredata in terms of available
> libraries, patches, and in general maturity of the
> solution.
> >
> > No, it wasn't in this order : first it already
> couldn't compete with PureData, AND THEN jMax 4 appeared,
> which finished killing it, as the API was all different and
> no-one bothered porting externals to it (well, I tried, and
> I had to give up because some features had been removed from
> jMax). By the time the project was called dead, everybody
> had already switched to Pd or was in the process of doing
> so.
> >
> >> 6) The language: jMax support the use of
> expressions in object definition, like in | int ( 10 + $foo)
> | so that objects in abstractions can be parametrised with
> respect to the arguments.
> >
> > I gave up jMax because this feature was introduced.
> This is because it removed the possibility to pass an
> arithmetic operator as an argument. It was a showstopper for
> me.
>
> I agree for different reasons. This syntax does seem
> overly complicated and takes away from one of the things I
> like best about the Max paradigm: really simple syntax.
>
> .hc
Here's a left-paddled pong engine using the [expr] object:
expr if(bx<=20, if (py<=by && py+60>=by, 0, 1), -1);
if (bx>=415, 2, -1);
if (by<=0, 4, if (by>=500, 5, -1))
0 = left paddle hit
1 = left paddle miss
2 = richochet off right wall
3 = die at right paddle (to be implemented)
4 = richochet off top
5 = richochet off bottom
I've got three variables being used in the conditionals, all of
which come from [value] objects. Also,
I'm sending a bogus value -1 for the "else" clause that expr's
if operator tries to force on me-- this keeps from having to nest
an "if" two levels deep, which becomes hard to read. So
at the end all I need is [sel 0 1 2 3 4 5] and everything is
clear.
The point is the [expr] object supplies a way to do the kind of
syntax under discussion, and in certain cases it seems necessary
to avoid the Max paradigm cliche of spaghetti/spider webs. At
least that's my position-- if someone can patch my expr statement above without expr where a) objects don't overlap much and b) the
patch is compact enough that it can be read at a glance, then I'm
happy to be wrong.
-Jonathan
More information about the Pd-list
mailing list