[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