--- On Wed, 9/22/10, Hans-Christoph Steiner hans@at.or.at wrote:
From: Hans-Christoph Steiner hans@at.or.at Subject: Re: [PD] jMax Phoenix To: "Mathieu Bouchard" matju@artengine.ca Cc: pd-list@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.
- 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