It took several years of research and development to get there (more on that later)… So we are really glad to unveil a new plug-in that brings an entire audio and MIDI programming environment right into your favorite Digital Audio Workstation (DAW):
Blue Cat’s Plug’n Script is a scripting plug-in that can be programmed to quickly build custom audio and MIDI effects or virtual instruments, without quitting your DAW. With this plug-in, you can write your own real time or offline processors or instruments, with very little knowledge about programming.
Scripting? How’s that?
The plug-in uses the high performance AngelScript scripting engine, with a Just In Time compiler (“JIT”) that helps compiling scripts into machine code for optimal performance.
AngelScript was originally designed for video games, with ease of use and performance in mind, which definitely suits our audio and MIDI processing needs. The syntax of the AngelScript language is close to Java, C#, C++, JavaScript or ActionScript.
This means that it is very easy to use the scripting language without spending much time to learning it. Compared to other scripting languages such as JavaScript, it is also safer because it is strongly typed: less errors may occur during runtime, and the performance is improved, which is much better for our real time processing purposes (the first version of this plug-in used to be based on JavaScript, 5 years ago, and we moved to AngelScript for these reasons).
Last but not least, most of the code written with AngelScript can be quickly ported (if not just copied/pasted) to C++, if you need to reuse the algorithms in a native plug-in later: this is very useful for prototyping. It is also convenient to integrate code snippets found on the web into your scripts.
Scripts can interact with the audio and MIDI streams that are sent to the plug-in by the host, either in real time, or “offline”, when the plug-in is used as an offline processor (available in most host applications). It also means that you may write very CPU-intensive scripts and still use them even if they are too hungry for real time usage.
Multi-Purpose Processor
If you do not care about programming it yourself, Blue Cat’s Plug’n Script can also be used as a regular multi-purpose processor: it includes 46 scripts and 120 factory presets for sound synthesis, MIDI FX, audio FX (comp, gate, tremolo echo, filters…), waveform generation and more. You will also find multiple utilities to enhance your workflow that do not exist as plug-ins, simply because it may be too costly to develop as such.
And that’s another interesting aspect of this plug-in for non-programmers: it is much easier and cheaper to find someone to write a script for this very particular effect that you cannot find anywhere than getting a contractor to build a full plug-in from scratch, especially if you consider all supported formats: AAX, VST, Audio Unit, RTAS, DirectX, 32 and 64-bit, Windows and Mac…You have a great idea that would definitely improve your workflow? You can now make it happen quickly, for a reasonable cost.
Plug-In Prototyping
And since we are talking about it, it is also possible for audio software companies to use this plug-in to quickly prototype algorithms and reduce the time required to develop audio products: this plug-in has been in our lab for several years and has been used to prototype lots of our existing plug-ins.
Writing and testing scripts is lightning fast, and being able to do it right into your favorite DAW makes it incredibly faster than traditional development workflows! And as explained earlier, integrating scripts into native plug-ins code later is also pretty straightforward.
Audio, MIDI and DSP Learning
You have always dreamt of writing your own DSP code and learn audio and MIDI programming?
The learning curve may be a bit steep if you start directly with plug-in programming in C++. With Blue Cat’s Plug’n Script, you can learn very quickly and focus on algorithms rather than spending hours learning C++, development environments and audio plug-ins SDKs.
On the other side, using this plug-in rather than MatLab or other high level mathematical tools for modelling your audio algorithms makes it much easier to understand the performance bottlenecks and makes your work much closer to final products. And you can even test directly on real audio data, into a real-world DAW. Research and Development can now be much closer!
Use Your Own Development Environment
Since most people (especially developers) already have their own programming/scripting environment or a favorite text editor, we have decided not to create our own but let you choose which one should be opened to edit scripts or view the error logs. It is good to feel at home, isn’t it?
User Interface and Interaction
While the plug-in provides a default user interface that lets you control and monitor script parameters without any particular effort, you can also write your own user interface for your scripts using our powerful descriptive KUIML language, already used by third parties to “skin” other Blue Cat Audio plug-ins.
As usual with our plug-ins, Blue Cat’s Plug’n Script offers of course a deep integration into most host applications: scripts parameters can be automated, controlled via MIDI or with any control surface.
Also, like many other plug-ins of ours, it is possible to generate automation lanes and MIDI control messages from the script: this lets you control other plug-ins parameters (or external hardware) with your script.
Cross-Platform
Scripts and presets are entirely cross-platform: they can be shared between Windows and Mac machines, 32 or 64-bit platforms or between different host applications. Write your scripts once, and load them everywhere!
Credits
The scripting engine and Just In Time Compiler that we are using in this plug-in are based on open source projects. These were not originally designed for this particular purpose, so we had to propose a few enhancements, and the authors have been incredibly helpful. We could not have built this software without them.
So we’d like to thank Andreas Jonsson, the author of the AngelScript engine, for creating the engine, and also for spending time on our enhancement requests and questions. We would also like to thank the BlindMind studios team for writing their JIT compiler and supporting our efforts to make it run smoothly on the Mac platform.
This is an epic post! 🙂 Thank you for this great tool!