[PD] here I go again..dynamic abstractions

Georg Werner georg at fricklr.de
Sat Feb 7 02:29:01 CET 2009


Hi Claude,

thanks for your explanation - i got your point, but this 2-phase parser 
is (must have been) already implemented in Pd. So, where do you see a 
problem in expanding/replacing $0 in "Phase 2" - like $1 etc. (with that 
special fixed value)?
georg

Claude Heiland-Allen schrieb:
> Georg Werner wrote:
>> hi,
> 
> Hi Georg,
> 
>> can somebody explain why there is a "3rd rule of $-expansion: 'there 
>> is no $0 in message-boxes'".
> 
> The following is from an implementor's viewpoint, not a user's 
> viewpoint, so be warned :)
> 
> I don't know why, but it makes parsing Pd patches 1000x less 
> straightforward than required (you need a two-phase parser that has a 
> special exception to detect message boxes and not expand dollars, 
> allowing the message box objects to parse them itself later, while 
> expanding dollars for everything else).
> 
> I ran into this problem implementing PotatoData (basically a proof of 
> concept, it's a Pd patch interpreter written in Lua with minimal amounts 
> of C for DSP, can run some trivial audio patches) a couple of months 
> ago, and just ducked it completely - message boxes in my implementation 
> don't support dollars at all (nor commas or semicolons for sequencing 
> and redirection, but that's a separate issue).
> 
> I wish message boxes had used a different special character, it would 
> have made life much much easier.
> 
>> i stumble every now and then about it and it is IMHO not 
>> self-explanatory. 
> 
> It's a mess.  There are two similar concepts at work:
> 
> 1. replacing dollars with arguments at patch execution time
> 2. replacing dollars with arguments at message passing time
> 
> But they both use the same $ symbol syntax in Pd, so you can't have both 
> taking place (ie, use $ at patch execution to create a message box that 
> has $ to replace at dataflow time).  And $0 is in phase 1, so what 
> should a message box do with $0 in phase 2?
> 
> The confusion arises partly because when Pd loads a patch, it's really 
> internally passing messages around.
> 
> $ in message boxes is unfortunate.  If there was a different symbol, 
> perhaps #, you could combine both phases in one object box to avoid 
> jumping through pointless hoops.
> 
> [$0-#1-$2-#3( would be nice, but as Pd is now, it's a nightmare.
> 
> 
> Claude




More information about the Pd-list mailing list