VSTs, (Virtual Studio Technologies) are audio engineering tools that process sound.
VST’s integrate into most existing DAWs. Including Logic, Pro Tools, Ableton, F-L Studio, and many others. A music producer may need to use several VST’s in a project.
VST’s expand the sonic palette and tools available to producers. Usually, a VST produces an effect that is not easy to achieve using stock plug-ins.
The design of VST’s is a fascinating process that can be worthwhile investigating. It requires good knowledge of how digital audio works. And a basic understanding of programming. Although much of this can be learned through the process.
A VST can be created to perform any audio-based task. It provides a method for programmers to interact with audio data to create any new effect they can imagine.
Common types of VST include:
Instruments, such as synthesizers or samplers, which act as audio sources,
Processors, or effects, which change and modify audio signals,
Analyzers, which reads data and converts it into a graphical interface easy for humans to understand.
If you want to code vst plugins, It is recommended that you know the fundamentals of electricity, circuit design, audio circuit design, digital audio, digital signal processing, acoustics, music theory, and programming.
Understanding C++ programming would be hugely beneficial for anyone looking to make VSTs and audio software. Having an interest in graphic design and GUI programming is also a bonus.
For audio and digital signal processing knowledge, you should at least understand and be able to explain frequency, amplitude, filters, sample rate, and bit depth. If you lack this audio DSP knowledge, it might be worth doing some background reading before learning how to make a vst.
How to make a VST Plugin:
There are several steps on the path to creating a VST plugin.
Generally, there are 4 key stages in plug-in creation:
Design > Prototype > Develop & Review > Produce.
Learn C++ programming and use a VST SDK to develop a VST plugin. Test and refine your plugin with a digital audio workstation before releasing it.
Choosing a Plugin Format:
At this stage, you should decide on the plugin format for the final product. It could be VST2, VST3, AAX, Audio Units, or all of the above. Factor the number of intended plugin formats into the development time plan.
Once the design is finalized, a prototype should be programmed. This allows the developers to test the product and gather any feedback to inspire further direction. Depending on the scale of the project, the prototyping stage of creating vst plugins could last anywhere from a few hours to weeks or months.
To make a vst plugin, one needs to first create and compile the code, this will be done in an IDE (integrated development environment). Once the plugin has been prototyped in the IDE, it can be built into a test version for internal review and feedback.
Plugin manufacturers may turn to experts and industry professionals for private testing before releasing to the wider market.
The specifics of “how-to” depend on the style of the plugin being made. For instruments or sample-based vst plugins, additional recording and editing stages may be required.
For analog emulation plugins, the electrical flow of the hardware circuit must be measured (using SPICE or similar), to create a convolution algorithm that digitally emulates the effect of the electrical process on a signal.
Read our post on Best VST Vocoder.
Required tools to develop VST Plug-ins?
Many different methods can be used to create and develop VST plugins. Some solutions are easier and more beginner-friendly than others but may be more limited.
For the most flexible and powerful development tools, we recommend using
C++, Steinberg SDK, and Microsoft Visual Studio IDE.
There are other free tools like SynthEdit or HALions Macro edit, that provide template-like vsts with visual programming tools to make vsts, however, these will be more limited in what they can produce compared to programming from scratch.
MAX MSP, whilst not VST, is a streamlined and accessible way to create audio effects for Ableton Live, which some people will find much easier than the IDE method as it uses visual programming and is well documented.
Xcode 4 or later is also an option for Mac users as an IDE.
#1. JUCE Cross Platform C++ Library
JUCE is a great free solution for creating cross-platform (Windows/Mac/Linux/Mobile) software.
It is a popular choice in the vst and audio software developer community thanks to its extensive documentation, Graphical User Interface Tools, and Projucer – which is designed for creating audio software.
Juce includes components that kickstart the development process. Juce also includes relevant source code for reference and modification
The Juce library is extensive and well suited for sound analysis and music production-based applications. This is a framework built with vst, au, and aax formats in mind.
Download Juce from the website and get stuck in!
SynthEdit is a classic “Save As” style programming tool for making vst plug ins. The environment is perfect for beginners thanks to its programming-free, drag-and-drop workflow.
Created by Jeff McClintock in 1987, he proposed it to be “Lego for audio”, encouraging users to experiment with the modules and packaged algorithms and create original effects and instruments. Many styles of GUI controls are included.
It takes away a lot of the tedious work that’s required in standard programming environments, where every low-level building block must be created from scratch. This leaves users free to experiment at an immediate level, so they can design, test, and review their concepts without having to put in a tonne of footwork.
The included modules provide a staggering amount of creative options from the get-go, so this is a great place to start for newcomers and people with no coding experience. Sorry Mac users… this one is windows only!
Download SynthEdit for free now!
#3. FL SynthMaker
Flowstone, AKA FL SynthMaker is an application based on the Ruby language that is used to create new plugins which can be used in FL Studio. It can create effects processors, synthesizers, and even experimental midi-hardware controllers that control robotics or create wacky midi controllers from WII remotes. Most GUI controls are similar to parts in FL.
Synthmaker is another visual programming application, meaning it has a toolbox full of premade components and templates that are dragged together, then further customized. This is another good place to start for beginners, but unfortunately, plugins will not work with any DAW other than FL.
The documentation is fantastically exhaustive, so new developers will not struggle to find the information they need.
How Are VST Plugins Developed?
Audio plug ins either work by acting as an audio source – via playing digital audio files or synthesis. Or they work by manipulating sound. A key stage of developing audio plug ins is understanding what process you want to happen to the sound.
If you are making a plug in involving samples, they should be stored in the vst folder.
For plug ins that work by processing a sound, for instance, EQ, Compressor, Reverb, the logic behind it will be different.
Processing plug ins need to go through a round of complex analysis to read the audio signal, then it needs to apply the process to it. Non-Linear effects may take more work.
Understand what process needs to happen to the audio signal to achieve the desired effect. For instance, with distortion, the waves are clipped at the extreme edges of their polarity. This works by amplifying the numbers until the data is too large for the AD converter, so information is lost. This creates a distorted tone.
The audio plugin needs to be programmed in a way that it works with a vst host like Logic, Ableton, F-L Studio, and Pro Tools. It is wise to understand low-level code when writing digital signal processes.
A plug-in can also be programmed with a standalone application. This is a great way to make the plugin work independently of any vst hosts.
Developing cross-platform software can require more coding to integrate with each operating system. A plug in may need to be recompiled multiple times.
Programming can take a while to learn. If you are new, start by following basic examples and templates.
Some key terms to understand: bool, integer, float, string, function, method, update.
Learn how to find and remove bugs, learn how to use the developer console.
Understanding the maths needed to write plugins for audio DSP can be daunting, but do not be afraid. Many core DSP concepts revolve around the same mathematical principles and theories.
To refresh your maths chops, have a look at these practical algebra lessons: www.purplemath.com
Whether you like it or not, all music is maths. It may not seem like it, but every element of music and sound can be analyzed and interpreted into mathematical information.
Computers read and write music as maths. It measures the relative volume (db) of each individual frequency (hz) throughout a timeline (time). It becomes a grid of information.
Learning how to navigate this grid of information is important in understanding how to make vst, au, and aax plugins.
#4. Digital Signal Processing
This term refers to the use of computers to process an electronic signal. Computers are digital machines thanks to their foundations in numbers, or “digits”.
Signals refer to gestures that convey pieces of information, in this case electronic. Sounds are converted to electrical information by an analog to digital (AD) conversion process.
Computers store, read, and write sound as numerical information. These pieces of information are called Bits, which represent the energy of different frequencies at any moment in a sequence of time. In essence a form of linear algebra.
This is the basis of the sampling theorem, a concept you should understand before attempting to write audio plug ins, or any software where digital signal processes apply.
There are countless books on the subject of plugin development, but here are my top recommendations:
- Designing Audio Effect Plugins in C++” - Will Pirkle
This covers all the information needed to start making plugins in C++. It discusses the nuances of different plug in formats including vst, au, aax, and asio applications. Explains how to make all kinds of plug in from audio filters to samplers and reverb.
- Fundamentals of Digital Audio Processing - The Scientist and Engineer's Guide to Audio Signal Processing” Steven W Smith.
This is a comprehensive book that covers sampling theorem, discrete-time systems, audio DSP, maths, sound analysis, sound modeling.
- Signals, Sound, and Sensation” William M. Harmann
The book has an introductory text on psychoacoustics and mathematics, which is enlightening for this field.
#6. Audio Plugins Frameworks
There are several audio plugin frameworks each with its own strengths and weaknesses. There isn’t a right or wrong choice, it depends on the scope and intention of the project.
- Juce: Easy to use, well documented and supports VST, VST3, AU, RTAS, and AAX formats.
- IPlug: A streamlined C++ framework, supports VST2, VST3, AUv2, AUv3, AAX (Native), and the Web Audio Module (WAM) plug-in APIs.
- VST.NET: A framework used for writing .net vst host applications, some net language is needed. It’s built above the interop layer for structured architecture.
- Delphi Library: is great for creating VST plugins, and also supports ASIO applications.
What is the Best programming language for the VST Plugins?
C++ is the most recommended language. It comes recommended by many vst plugin developers who develop professional vst plugins.
It may be harder to learn than simpler languages and have a few gripes such as having to manually program memory allocation, but C++ is an incredibly powerful and flexible code that works well for VST programming.
A further strength is that it can create plugins for a wide variety of plugin formats
This is an overview of how to make vst plugins. As each plugin is unique in design, the specifics will vary from build to build, but the overall process and skills are similar.
This can become a quite complicated project, so having a clear and structured architecture for organizational or organizational elements is essential. Find your own niche and specialty within the vst scene.
Do you want to make plugins for Ableton Live, Logic, Pro Tools, or FL Studio?
Each DAW and operating system has its nuances.
Are you interested in creating instruments, like synths and samplers? Or are you thinking about fx processors like compressors, equalizers, reverbs, and distortion?
The process for making a virtual piano instrument will be completely different than making an analog emulating compressor plugin.
Experiment with the variety of tools available, eventually you will find your specialization! Learning to program and develop software is a long and winding journey, but incredibly rewarding.
I studied audio engineering at university where I learned how to make vsts and music software. Feel free to contact us with any questions. Good luck!