[PD-dev] "declare" strangeness in abstractions (0.41 test10)

Hans-Christoph Steiner hans at eds.org
Fri Jan 18 16:10:07 CET 2008


On Jan 5, 2008, at 10:13 PM, Frank Barknecht wrote:

> Hallo,
> Miller Puckette hat gesagt: // Miller Puckette wrote:
>
>> Well, I can't remember now if I was looking at that bug report or  
>> if I was
>> having my own problems with declare (I've had many).  I had bad  
>> confusion
>> making abstractions use "soundfiler", for instance, and having  
>> relative
>> paths get expanded relative to the abstraction instead of the  
>> calling patch.
>
> This sounds similar to the problem my [polypoly] abstraction
> generates. [polypoly] is called with the name of an abstraction and
> dynamically creates several instances of that abstraction to simplify
> building polyphonic patches. Assuming polypoly.pd is in /poly/path
> which is part of the search path, then if a patch X.pd somewhere else
> is using [polypoly instrument] with instrument.pd next to X.pd,
> [polypoly] will not find instrument.pd, because polypoly.pd is in
> /poly/path and doesn't know about any instrument.pd. The fix is to
> either add the path to instrument.pd or copy polypoly.pd over to the
> directory of X.pd and instrument.pd.
>
> The path to instrument.pd however cannot be added with [declare], as
> [declare] is and should be local to a canvas, which in this case is
> the parent's canvas, not the canvas of polypoly.pd.
>
>> However, when an abstraction opens a sub-abstraction as in "x/y",  
>> I think
>> it's best to have x/y be relative to the abstraction's location  
>> and not the
>> calling patch's.
>
> Yes, I agree.
>
>> These two needs seem in direct conflict.  I hope to figure
>> out a better way to handle this but have given up trying to  
>> resolve it
>> for 0.41.
>>
>> I hope nobody is yet throwing "declare" objects in abstractions,  
>> as that
>> currently does something so wrong (altering the global path for  
>> the calling
>> patch!?) that I thought it better to get rid of the whole thing  
>> for now.
>
> [declare] in abstractions was broken or inconsistent anyways (that's
> what my bug report was about) so I don't think anybody is depending on
> [declare] to work in a specific way for abstractions currently.
>
> OTOH as every patch file could be used as an abstraction as well,
> making the use of a patch file as an abstraction a special case could
> be a recipe for trouble. ;)
>
> So in the long run (e.g. for 0.42) some kind of specification how
> [declare -path X] should work in abstractions would be necessary.
>
> I always thought of [declare] as an object that modifies settings for
> the local canvas only. I think, Hans' [import] does that and I believe
> it's sensible. But I may be missing possible side effects.

As it stands, [import] is a sketch of how I think the interface  
should work, and it currently uses the same code as [declare] to do  
its work.  I am planning on working on this stuff more in the near  
future, hopefully we can come up with a simple, clean solution for  
all this.  It would save us a lot of trouble, IMHO.

.hc


> Anyway I would expect [declare -path DIR] to add "DIR" to the local
> canvas' searchpath with "DIR" relative to the current patch's path.
> Basically it would make an object in [DIR/file] be available as [file]
> as well. For absolute paths like [declare -path /DIR] it would add the
> absolute path. A declare in a parent patch then should not modify the
> path of an abstraction used.
>
> However, as the polypoly-example and maybe some soundfiler use cases
> show, sometimes it can be useful or even necessary to access a
> parent's path settings. I don't know how to allow that in a useful
> way. Maybe with some additional option to declare like [declare
> -addparentpath]? Tricky ...
>
> Ciao
> -- 
>  Frank Barknecht                                     _  
> ______footils.org__
>
> _______________________________________________
> PD-dev mailing list
> PD-dev at iem.at
> http://lists.puredata.info/listinfo/pd-dev




------------------------------------------------------------------------ 
----

                             kill your television






More information about the Pd-dev mailing list