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