Connecting separate patches through pattrstorage
I have several patches, meaning separate top patchers and their respective hierarchies, to control a synth. There’s one to control the arpeggiator, one to upload and download registers, a small one to control the master volume, etcetera. Half a dozen of them, all in all.
I’m looking for the one that controls them all, so I can save all their settings as a single file.
Pattrstorage seems the obvious way to go.
But whatever I try, I cannot get pattrstorage to communicate with objects in another patch, although it can find them through a ‘locate’ message and the documentation suggests that it should be able to see pattrs in any open patch.
Attached a zip containing a folder “Pattr Conundrum” holding two patches, Nadine and Otto, to illustrate the issue, and a little utility that opens them both.
The question: Is this at all possible and, if so, how, or can pattrstorage only look downward and not sideways?
As far as I know a [pattrstorage] can only store/recall objects inside of a same patcher hierarchy, i.e. all patchers need to originate from the same parent patcher if you want to be able to subscribe to them properly. In your example your main patch opens your side patches as separate patchers (like if you opened them from the the File > Menu open) instead of being added to itself as subpatchers, so there is no patcher hierarchy per se, just separate patchers.
So it seems that for what you want to achieve, best would be to load all of your separate abstractions into a same parent patcher. If you do that dynamically, you will probably end up with presets implying different patchers hence different parameters list, so you should disable @writefilter from your [pattrstorage]
This said, if you really, really need to keep your patchers as "standalones", you could still make a system that would allow you to grab any patchers parameter from the same given patch. The method would vary depending on the level of flexibility you want. You could for example:
in each patcher build a dictionary containing all patchers parameters and values using the
dumpmessage to your local [pattrstorage]s, and get the resulting dicts in other patchers, using [send]/[receive], bound [pattr] or simply carefully named [dict]you can also get/set values of any parameter of any patcher from anywhere else using one of the two following solutions:

I will put hem all under one umbrella "Open All" and work it from there. Thanks, TFL.
Eureka! This will see all patchers with a pattrmarker of global patcher name: