Hello again
I've stumbled across this by accident and have found it quite useful.
If you create an abstraction that uses creation arguments. if you use $0 as an argument it will pass the containing patches unique ID
to that argument which can be used to address a known $0-receiving-object in the containing patch from within the abstraction. This keeps things local. I've not seen this documented but I sure it will be somewhere.
See attached
Cheers Balwyn
- 
				
				
				
				Using $0 as a creation arg 
 
- 
				
				
				
				Thanks. On Mac OS X 10.6 (Pd-0.47-1-64bit) sadly i get the weird error below opening your patch. main-patch.pd: read failed; Device not configured
- 
				
				
				
				@Jojo-Lapin Thanks for checking. I've just tried it on Windows 10 Pd-o.47.0 and got a similar error 
 "main-patch.pd: read failed; Bad file descriptor". So it looks like a pd-extended only use
 Cheers
 Balwyn
- 
				
				
				
				Hold on everybody! 
 It's the $0 in the folder name causing the error
- 
				
				
				
				Yep, works fine now. 
- 
				
				
				
				$0 is just a number, so this should work reliably across all systems. You can similarly hand down creation arguments from one abstraction to another using $1 $2... as the creation arguments. So if I create the abstraction [george 10 20 30], and [george] contains the abstraction [ringo $1 $3], then [ringo] will have the creation arguments 10 and 30. 
- 
				
				
				
				hi, 
 i use this method very often. if you wonder how to create abstractions with $0 arguments dynamically, you can do it with a little hack using zexy/makesymbol like this:[$( 
 [list 0]
 [zexy/makesymbol %s%s]
 [obj 100 100 myabs $1(this makes polyphonic/granular abstractions very easy to handle. cheers! 
- 
				
				
				
				@solipp You can also do that vanilla-style like this: [0( 
 |
 [makefilename $%s]
 |
 [obj 100 100 myabs $1(
- 
				
				
				
				@Maelstorm good to know, thanks for the hint! 
 
					 
									 
									