Yes, that's the problem. I should have said it all works fine if this is an abstraction loaded with actual arguments. But I still wonder if there's anything I can do.
There is: just don't do it :-) It doesn't make sense to use $1 in the context of a top-level canvas (until we get https://github.com/pure-data/pure-data/pull/1064).
I guess you have an abstraction that should also work as a
standalone patch. In that case, just don't use creation arguments.
Instead you can get the creation arguments from the canvas with
[args( -> [pdcontrol] and pass them on to the relevant objects
via messages. It's awkward, but there's no other way.
---
The actual problem is that we don't have a way to *forward*
creation arguments. Ideally, we should be able to do something
like [cyclone/play~ $@], where "$@" would mean "all creation
arguments". In case of a root canvas, the list would simply be
empty and you wouldn't have any trouble in your object to
distinguish both cases.
Christof