What can I do with Plug'n Script (and what I can't?)
This is a very good question. Knowing the limitations and possibilities of this tool we can get the best of it.
In short, I would (dare to) say that 90-95% of the plugins we have in our DAWs can be done with Plug'n Script. It's not perfect for all situations, but it's capable of doing a lot of things we need.
DSP Limitations
As Plug'n Script tries to simplify things for us, it reveals only the most important DSP functions and parameters and as it tries to be all-purpose it sets a maximum number of input/output parameters that are supposed to be enough for most cases.
So, as already mentioned: the maximum number of automatable input parameters is 48. You can have much more than 48 controls in your GUI (actually, as much as you want, and transfer their values to DSP using input_strings), but only 48 parameters can be made visible to DAW and automatable.
There are maximum 32 output parameters, also visible to DAW. You can however send more data to GUI using output_strings.
As said, the DSP API hides from you the complexity of the original plugin SDK and grants access to several most important common features, like audio and MIDI data to process, transport information (current position in your DAW, current tempo, is it playing or stopped, etc) and input/output parameters. In most cases, you don't need more, but there may be cases when you need to dig a little deeper into specific plugin API, and you can't.
Some examples
For now, I find a few minor things lacking in DSP API:
- Way to get the current track name. The track name is not supported by all DAWs, but it still would be nice to have.
- Way to set default plugin type for VST3 format (like FX::Dynamics)
- Way to disable automatic tiny-crossfades on bypass (which are usually nice, but sometimes they get in the way)
Also if you're willing to make a MIDI processing plugin, PnS has limited MIDI input and output channels, depending on the plugin format and the DAW.
GUI Limitations
GUI is limited only with the possibilities of KUIML language, which is used for all Blue Cat Audio plugins and which is quite powerful already. Still, if something is not implemented in KUIML, there's (almost) nothing you can do about it.
For example
One of the still missing features is network access. Though you can do some tricks to get online, the proper way is not yet implemented.
I was worried for a long time about KUIML possibilities: can we make GUI as complex as Fabfilter ProQ for example? Can we draw anything we want? Can we go full screen? Can we make a plugin window resizeable? Can we make our own controls and widgets? And now I can answer "yes" to most of these questions, though some things are rather difficult to implement, and KUIML can be very tricky sometimes, it's still powerful and cool.
KUIML is great for a rather quick development and maintenance of complex dynamic GUIs that work on both Windows and Mac without any worries. What Blue Cat Audio is developing for their own plugins GUI-wise is available to us, and it's great!