[PD-dev] [PD] REQUEST: Passed parameters into subpatch
Christof Ressi
info at christofressi.com
Sun Aug 16 13:17:34 CEST 2020
> For example, [myabs] can then have a [r $0/init], so you can (re)init
> all instances from the parent patch.
Sorry, that should be [r $1/init], of course!
The first argument of the abstraction is the global identifier. With
[myabs $0], the instances are scoped to the enclosing abstraction, with
[myabs foo], they are in global scope.
Christof
On 16.08.2020 13:10, Christof Ressi wrote:
> The purpose of subpatches is to hide stuff. If you feel the need for
> creation arguments, it is a good indication that you really should be
> using an abstraction instead. That's what they are made for.
>
>
>> Like, when you need to make just 2 copies of something in a patch.
>> Left / right pairs for stereo processing, etc. Much easier just to
>> have 2 subpatches than save a separate abstraction file, especially
>> if you're working on a big project with lots of files.
> This is rather messy. If you have to (almost) identical patches, you
> should be using an abstraction instead. This is cleaner and guarantees
> that the instances stay in sync. If you edit one instance, do you
> always want to delete and recreate all other instances, like you have
> to with subpatches?
>
>> Also makes it easier to share things with people if you only have to
>> share one .pd file rather than a folder with abstractions, etc.
> Just share a .zip file?
>
>> If you could do something like [pd volume #0] and have that argument
>> unique to that subpatch
>
> Just pass some identifier that is unique to the enclosed abstraction,
> e.g. [myabs $0]. For example, [myabs] can then have a [r $0/init], so
> you can (re)init all instances from the parent patch. This is actually
> a common pattern.
>
>> But the main thing i have always wanted it for is for state saving.
>
> BTW, have a look at the new [savestate] object.
>
> Christof
>
> On 16.08.2020 12:49, Matt Davey wrote:
>> Creation arguments for subpatches is something i have wanted for
>> years. Would come in very handy in a few cases.
>>
>> Like, when you need to make just 2 copies of something in a patch.
>> Left / right pairs for stereo processing, etc. Much easier just to
>> have 2 subpatches than save a separate abstraction file, especially
>> if you're working on a big project with lots of files. Also makes it
>> easier to share things with people if you only have to share one .pd
>> file rather than a folder with abstractions, etc.
>>
>> But the main thing i have always wanted it for is for state saving.
>> If there was something akin to $0 for subpatches, then they could be
>> uniquely identified, and uniquely tied to an enclosed abstraction.
>> So, say you have a simple volume control abstraction ( inlet~ -> *~
>> -> outlet ), and you enclose that it [pd volume] subpatch which is
>> just a graph-on-parent slider. If you could do something like [pd
>> volume #0] and have that argument unique to that subpatch, and then
>> put [volume-abstraction #0] inside that subpatch, then you would have
>> unique caller / listener pairs for that subpatch only, but also have
>> the ability to save the state of the slider in the subpatch by
>> setting it to 'init'.
>> So, in effect, you could create any number of [pd volume #0]
>> subpatches, and all have them with their own independent slider
>> values that can be saved in the parent patch.
>> For simple examples like that, maybe not too much to be gained...can
>> just use an inlet to the abstraction and join it that way. But would
>> be very useful for larger patches with multiple GUI elements. Would
>> save a lot of messy cable joining, and [route 0 1 2 3 4 5 6 7] etc
>> solutions.
>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management ->
> https://lists.puredata.info/listinfo/pd-list
More information about the Pd-dev
mailing list