Hi cacosomoza,
The parent-daughter analogy you described is actually a pretty common way of messaging between multiple abstractions whilst keeping the whole patch local.
If you want to go further, just use $1 instead of $0 inside your child abstractions. For example:
- Parent patch
|
|----- [AbstractionName1 $0]
| |
| |------[AbstractionName2 $1]
| | |
| | |------[AbstractionName3 $1]
| | | |
| | | |------- and so on.....
I try to then use the following convention when naming sends/receives/tables
-
In the parent patch: all names are preceded with '$0-', i.e. $0-tableName
-
The 1st argument of every single abstraction should be $0 (if it's instantiated in the top level parent patch) or $1 (if it's one or more levels down from the parent patch.
-
In the abstractions: all names are preceded with '$1-', i.e. $1-tableName
Then if I want to access a table, declared in the parent patch, named '$0-tableName' from within an abstraction I can use '$1-tableName'. Also remember it's quite easy to make some annoying bugs (of the WTF!?! variety) where you forget to change to $0 or vice-verse when copying a name