If you want to create custom audio effects and virtual instruments, you should learn how to make VST plugins.
Developing VST plugins takes time and a lot of effort, but doing so means that the possibilities of your work are limited only by your imagination. You could even turn it into a career!
In this article, we’ll describe the process of making a VST plugin from start to finish. Of course, you will need to learn coding and DSP, but this article will point you in the right direction.
We will cover:
- What are VST plugins
- The basics of VST development
- What is the VST SDK
- Skills you need to make VSTs
- How to set up your IDE
- The steps to creating a VST plugin
- Marketing and distribution.
Let’s get started!
What Are VST Plugins?
Virtual Studio Technologies (VSTs) are tools that can be “plugged in” to existing Digital Audio Workspace (DAW) software.
They give sound engineers access to extra toolsets when creating or modifying music, helping them achieve results that are difficult or impossible with the basic tools provided in the DAW by default.
Nearly every recorded musician in the modern age uses VSTs in one way or another.
Some of the most common types of VSTs include instruments, processors/effects, and analyzers. Each of these serves a different purpose during production.
I covered this topic more in my What are VST plugins article.
Understanding the Basics of VST Plugins: How It Works
To fully understand how a VST works, you need a solid comprehension of how digital audio functions.
In very basic terms, VSTs can perform just about any audio task, either creating or editing audio waves based on user inputs (for instance, allowing them to increase reverb).
What is the VST SDK?
A Software Development Kit (SDK) is a set of tools a company provides to developers to create new content for their software.
In the case of VST plugins, the VST SDK is provided by the original creator of the format, Steinberg.
They allow free downloads of the SDK from their website here. They also offer a forum for people to discuss VST development and share problems, solutions, and experiences.
Skills You Need for VST Plugin Development
C++
When making a VST, code will provide the greatest level of customization and flexibility without the limitations that other development environments may hold. If you’re willing to learn the process, it can be really rewarding.
To create a VST this way, you’ll need at least a basic understanding of C++ as a language.
If you don’t have this skill set, you might want to start with some basic coding courses first rather than jumping into VST creation immediately.
DSP (Digital Signal Processing)
Digital Signal Processing (DSP) refers to how computers interact with sound information.
Computers work on math. This is how they understand any information within themselves, including audio. This means, unfortunately, you’ll also need to understand sound in terms of math.
Computers map this information across a grid, creating a “timeline” that then plays the sounds in sequence.
When we modify music using VSTs, we are actually interacting with this mathematical information in one way or another.
Other Development Environments
Thanks to modern development environments, you can now create a VST without ever interacting with code directly.
Often, they offer drag-and-drop solutions such as the ones seen in programs like SynthEdit or FlowStone.
Others let you interact with menus to get the desired effect, such as SonicBirth or Kern.
There are even some web browser-based programs, such as Soundation and AudioSauna, that allow you to create VSTs without downloading anything about coding.
Keep in mind that using these programs instead of raw code – while completely valid as a method of creation – will be a lot more limited.
Other Skills & Knowledge
Before getting started, you should also aim to have at least a basic understanding of electricity, circuit design, acoustics, and music theory.
Most importantly, you should have experience using other people’s VSTs. This will help set a baseline for your own development.
Setting Up the Development Environment
This process depends heavily on your chosen development environment.
If you’re creating your VST using raw code, you’ll have to make sure a few extra things are added to your environment before you can start developing.
How To Install VST SDK
The VST SDK is the most important factor to include in your development environment.
To install it, all you need to do is drag the files from the SDK download files into your project files. This will make the necessary tools available to you within your programming software.
Integration with a Programming IDE
Your Integrated Development Environment is where you create your first prototype and where you compile it before further testing.
A popular IDE choice for VST development is Visual C++, which integrates easily with the SDK package.
Developing Your First VST Plugin
Choose a Plugin Format
There are several available formats for VSTs to choose from, such as VST2, VST3, AAX, and Audio Units. You can also make your VST compatible with multiple formats if you want.
Consider the benefits and downsides of each and your goals.
Set Up a Development Environment
You can either create your plugin independent of a host using code or make use of a program like Logic or Ableton to host your development environment.
Define Audio Parameters
This depends on the plugin you’re making.
For instance, your plugin may work by placing itself as an audio source, in which case you’ll probably want to include audio samples. These should be added to the VST folder.
Implement the Audio Processing Algorithms
If your plugin manipulates existing sound, you must create one or more processing algorithms.
This is where mathematical knowledge is vital. Your program will need to read the audio information, then edit it at the mathematical level and return it to the user as modified data.
Handle User Interface Design
The user interface is a very important part of designing any software.
You’ll want to consider the impact of your VST’s layout, how easy it is to understand, and whether things are simple to find and use for the user.
It also helps if your program looks nice. This helps add professionalism and makes it more pleasant to use.
Code MIDI Input Handling
Handily, the VST SDK has built-in settings that help you set up MIDI handling.
All you need to do is retrieve this information using the SDK’s commands. Then, you can alter it or use it elsewhere in your program.
Build and Compile
You should aim for a usable prototype as early in your development process as possible.
Starting to test your software as soon as you can will help you catch major issues early on and change the direction of your development if needed.
Test in a Host Application
Testing is essential during the development of any software.
You should try to find any bugs that could impact your user’s experience. Make sure to try unexpected actions, like spam-clicking buttons or entering invalid data into text boxes.
Debug and Refine
As you identify bugs, fix them. You should have a constant cycle of testing and bug fixing until you feel most or all bugs are ironed out of your program.
Get other people to try out your software completely blind and ask them to note any issues they have.
Package for Distribution
You should ensure that your software works and gather the correct build files to upload to your distribution site.
Additionally, write documentation that tells the user how to install and use your program. You could also make some video or blog-style tutorials if you want to provide extra support to your users.
Testing the Plugin in a DAW
Make sure you test your plugin in any DAW you hope to advertise it for.
Testing within your development environment can sometimes miss bugs present only in the actual DAW itself. You should always test your program fully in every way you can think of before releasing it online.
Marketing and Distribution of VST Plugins
There is a huge community of VST developers and users online, offering plenty of support and experience to those just getting started in VST plugin development.
There is also a wealth of information on how to start your VST plugin business and begin building a dedicated fanbase.
The most important things when trying to gain popularity for your work are creating a social media presence and producing good software.
If no one knows you’re making VSTs, no one will download them! However, if they do download your work and find it lacking, they’ll be unlikely to recommend it to others or come back to purchase something else.
Free vs. Paid VST Plugins
Once you’ve created your first plugin, you should think about whether you want to turn this work into a profitable business or whether you want to provide your work for free.
Many people choose the second option because they view VST plugin development as a hobby and enjoy providing their programs to others without charge.
If you hope to make money from your software, you should ensure it’s of the highest possible quality.
Once you’re asking for money, you must consider aspects such as marketing, customer support, and professionalism. For a business to succeed, a lot of time and effort must go into these things.
You’ll also need to think about support for your software later on, including updates and patches as bugs come up from user testing.
The Bottom Line
Creating VSTs can be an incredibly rewarding and fun process that allows you to fully customize your music production suite.
It also takes a lot of work, skill, and knowledge, so it isn’t for everyone.
If you’re interested in learning more about the detailed process, there are a wealth of great tutorials available online that walk you through the steps in granular detail. I quite like the write-up by Martin Finke, even if it’s a little outdated now.
Now, get going! The best way to learn a process like this is by doing it. Once you have the basics, start creating and let your experience build as you go. Happy coding!