On Wed, 9 Jul 2008, Frank Barknecht wrote:
I think, Pd could benefit a lot by providing a default scripting language to write operations like [range] which are tediuos to do as an abstraction.
At this point I don't mind having it written in C++, really. The code is only 25 lines long and I can see it getting shorter as I introduce more shortcuts.
Altough I'm not a fan of Tcl (and would prefer Lua), Tcl would be a natural choice as it's available anyway.
That's what I thought, but then I realised that I was less of a fan of Tcl than I previously thought. In the end I decided to stick with C++ and Pd (abstractions). I decided that this would be a good occasion to make it easier to make abstractions.
I don't know Lua, but even though reading about it doesn't make me think that the syntax is cool like Tcl's is, I can't really stand "everything is a string" in Tcl. I don't mind the lack of a standard object model in Lua, as Tcl also lacks one, so I wrote myself one in a record low number of lines.
Ideally the scripts would be saved within the patch, e.g. inside message boxes.
That's not quite ideal, because it makes it hard to load once and use many times. It's already a problem with Pd abstractions... the whole patch structure is being reloaded repeatedly, and even reparsed. If you use an abstraction 100 times, it will have 100 copies of the connections and will have parsed the abstraction 100 times.
Oh wait, that's toxy! Hm, ... but toxy has a horrible syntax, which I could never get around.
That's because Pd has a horrible sin tax. It can be bypassed by making a GUI object specific to that, that will allow to write and paste source code directly into a box, without being hindered by Pd's syntax.
But the general approach of it is a fantastic idea.
I agree, as long as there is also the alternative of not writing source code in patches.
The advantages of a scripted Pd classes are: For certain tasks, especially those involving lots of repetition, patching is too much work.
Many patterns of lots of repetition can be covered using some classes that would work like [nqpoly] and [polypoly] but better.
And as pd-extended shows, if you pack each and every external and abstraction into the pd-distribution, you either have to deal with ugly long names or live with namespace pollution.
This is a separate issue that is mostly unrelated to scripting.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec