[PD] using routeOSC with dollar creation arguments

Matteo Sisti Sette matteosistisette at gmail.com
Fri Apr 23 11:10:40 CEST 2010


Hi,

I'm trying to create an abstraction that contains routeOSC and I want to 
"pass" a creation argument of the abstraction as creation argument of 
routeOSC, that is simply:

[routeOSC $3]

Now the problem is that the object doesn't create because of this error:

"error: * routeOSC: float arguments are not OK."

because when you are "editing" the abstraction "as a patch", $3 
evaluates to 0 (i guess).

Obviously I'm gonna use my abstraction with symbols as the $3 argument. 
Indeed if I do, the object will create. But since it doesn't when 
creating the abstraction, I cannot do the connections.

That relates to a more general problem that is how $-arguments are 
managed when you "define" an abstraction, since there is no distinction 
in Pd between defining an abstraction and creating a patch that is not 
gonna be used as an abstraction. In an ideal world, such a distinction 
should exist imho.

However usually this "issue" only prevents the abstraction from working 
properly when you "edit"/"define" it, and you wouldn't expect it to 
work; but it usually doesn't prevent you from creating it so that you 
can later use it.

Basically, if an object can accept a symbol as a creation argument (and 
only a symbol), it is an error to fail to create the object if the 
argument is not a symbol. Instead, the object should create as if the 
argument was a symbol, with the number of inlets and outlets that it 
would have if the argument was a symbol, _and_ print an error message 
and refuse to work, but not to create.


Now in this case there is a workaround:

[loadbang]
  |
[symbol $3]
  |
[set $1(
  |
[routeOSC /dummysymbol]


Note that [symbol $3] is an example of object that behaves "correctly" 
the way [routeOSC $3] should. When you are "editing" the abstraction, $3 
is 0, so [symbol $3] is just like [symbol 0]. Such [symbol 0] is not OK 
and you don't expect it to work: if you bang it, it outputs "symbol": 
[symbol] is not supposed to be created with a numeric argument. However, 
it doesn't fail to create.

-- 
Matteo Sisti Sette
matteosistisette at gmail.com
http://www.matteosistisette.com




More information about the Pd-list mailing list