JUCE 4.x for VST Plugin Development (old JUCE 3.x Tutorial)
Need Help with this Tutorial? (Contact Us)
Was this useful? (Consider a Contribution)
So you have a great idea for a VST plugin or want to try out that audio algorithm you have been developing in a real-world/real-time environment. The question that comes up is often: "How do I even begin to get that done?" For students, hobbyists or fledgling companies you can often add some other criterion... You need the process to be low cost, fast and to the point - Your Audio Invention. You at least want to minimize all the headaches of cross-platform development, ASIO or VST mechanics, and maybe even deliver in multiple formats (VST, VST3, AU, AAX etc.)
The Jules' Utility Class Extensions (JUCE) framework is a good answer for many. The JUCE framework offers cross-platform C++ libraries which cover a variety of software development tasks including VST plugins with customizable GUIs. When combine with free IDE such as Visual Studio Community or Xcode, it offers a workflow which:
1. is Free (for GPL distribution - commercial fee for closed source releases)
3. Offers What-You-See-Is-What-You-Get (WYSIWYG) Graphical UI design
4. Easy to use while focusing on audio development
There are multiple tutorials out there on how to use JUCE for graphical user interface (GUI) design, and a growing number of ROLI technical notes to get you started. However, there is a lot left open and those with less experience diving through forums and API docs may have trouble focusing on what they need. This tutorial is for those looking for the bigger picture, some tips about JUCE workflow for audio plugins or a quick template for "how do I use this library to get there?"
The following tutorial gets you to a built VST plugin with a mechanism for managing your parameters and a graphical user interface with timer callback for active displays. The plugin is then ready for continued development with the JUCE workflow, adding your own C++ audio processing, additional GUI elements etc.
A few key rules for JUCE which will be more obvious as we go:
1. Don't ever put code outside of the "editable regions" in managed files (designated by in-line comments)
2. Don't manage project settings in your development envioronment (always return to the "IntroJucer")
3. JUCE has MANY useful classes, before building your own XYZ, use the online class documentation to see if there is already a solution.
This tutorial assumes you have a basic working knowledge of C++ and general software terms such as GUI, etc. But as always, if you have any comments or questions about the content here - please don't hesitate to contact us!