←Back to Redwood Audio DSP home
JUCE 3.x for VST Plugin Development (using JUCE 4.x?)
Need Help with this Tutorial? (Contact Us)
Was this useful? (Consider a Contribution)
Download Final Source Code including built VST
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.
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 needs including VST plugins with customizable GUIs. When combine with free IDE such as Visual Studio Express or Xcode, it offers a workflow which:
1. is Free (for GPL distribution - commercial fee for closed source releases)
2. Cross-Platform
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, but we were surprised to see a lack of instructions which answer the questions above directly. In other words, I only care about making a VST plugin - "how do I use this library to get there?"
The following tutorial gets you to a built VST plugin with graphical user control over parameters and a timer callback to update your UI from internal states. 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 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")
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!