demo default args demo rest of args demo missing args demo comma args "*" represents the rest of arguments other symbols represent mandatory arguments output of single argument output of rest of arguments, if last arg of [args] is a "*". sends one message per outlet right-to-left. if there is a wildcard (*) as the last argument, any extra arguments go there as a list message. Then for any missing arguments that have default values, the default values are sent, right to left. Then for each present argument that is not extra, that argument will be sent on its own outlet. Finally, each init-message (comma-separated) is parsed from the arguments and sent (magically) to the first inlet of the abstraction itself. represent optional arguments as nested-lists inside the nested-list, \$1 must be the name of the argument, \$2 must be "a" (the single letter), and \$3 must be the default value. the "a" is actually for future use (type-checking). the star can only occur once and at the end, and all optionals must follow all mandatories. Same as loadbang. When using [args] inside a patch that also uses a [loadbang] for stuff that depends on those arguments, you need to make sure that the [loadbang] in question is created AFTER [args]. This is the same problem as what happens with the order of multiple [loadbang] objects, because [args] is implicitly a [loadbang] too. If you don't want to deal with it, you can connect an explicit [loadbang] to [args], but be warned that everything will be sent twice (once by the implicit loadbang, once by your explicit [loadbang]). demo nested lists