What does 'server plugin' and 'UGen' mean?

Throughout the ‘Writing Unit Generators’ help document, the terms ‘plugin’ and ‘UGen’ are used interchangeably, making things hard to understand.

My interpretation of those terms is that ‘plugin’ refers to something the server loads, and may contain many UGens.
UGens, then have two parts, a plugin side and a client side. The client side of the UGen is implemented with the UGen class.

Is this a good distinction? What do you think these two terms mean?


This is a copy of the issue — Help: Confusion between 'server plugin' and 'UGen' — Writing Unit Generators · Issue #6413 · supercollider/supercollider · GitHub

I always thought ‘plugin’ just meant ‘a ugen you wrote yourself’ or ‘an “unofficial” UGen’.

Off-topic: i found using this documentation and other documentation around writing UGens pretty difficult generally and would love for it to be updated, I’d be happy to help although I’m far from expert-level on the topic.

Oh that is the topic!! I’m currently rewriting synthdef ClassLib: fix and refactor SynthDef compiler by JordanHendersonMusic · Pull Request #6405 · supercollider/supercollider · GitHub and needs to add to this documentation and I agree, its quite hard.

One thing I missed both here and in the (fantastic) notam tutorial was an up-to-date description of how to write UGens involving memory allocation eg delays. Keen to help however I can although someone with better c++ chops would need to look over everything I write!

Yep, that’s pretty much it. As you’ve pointed out correctly, a Server plugin may contain multiple UGen definitions. Actually, it is even possible that a plugin contains no UGens at all and instead only registers plugin commands!