VST plugins are an excellent addition to your DAW setup, easy to install and simple to use. They recreate the legendary sounds of the classic synthesizers at a fraction of the price. A VST emulator is perfect if you don’t have the budget to throw at vintage and rare synth hardware. Aside from VST plug-ins, you'll also find VST-instrument or VSTi plug-ins. These can emulate really cool, but expensive, hardware (like Hammond B3 and Nord Electro). The quality of these VSTi plug-ins can vary from acceptable to really poor; it all depends on the quality of your system resources (RAM and scratch space on your hard drive, for.
- Using Hardware To Create Vst Plugins Plugin
- How To Create A Vst
- Vst 2 X Plugin
- Free Trap Vst Plugins
- Using Hardware To Create Vst Plugins Free
Introduction
Microsoft announced that it would offer Visual Studio Express free of charge forever. Though the Express version of Visual C++ (hereafter referred to as VC++) has some limitations, it’s still a great tool and it’s nice to see Microsoft taking some steps to support the developers writing software for their platform. This document will describe how to get VC++ installed and building VST plugins. It assumes that you have prior experience developing VST plugins, and are familiar with the structure and layout of the VST SDK.
If you are trying to write VST’s in a language other than C++, than this guide is not for you. There are lots of other frameworks out there for developing VST plugins in other languages (such as C#, Java, Ruby and Python, just to name a few).
This tutorial will walk you through the process of installing and configuring the tools you’ll need to build your own VST plugins with Visual Studio, and creating a simple VST plugin with optional support for a VSTGUI frontend. This guide only covers building VST 2.x plugins, as the VST3 SDK is not very widely supported yet. Note that Steinberg’s website is a bit confusing and it is easy to accidentally download the wrong version of the SDK, so double-check to make sure that you have the 2.4 SDK.
Download required packages
- Steinberg’s VST SDK, which requires you to make a free Steinberg Developer account.
- Microsoft’s Visual C++. This guide uses the 2010 Express edition, as it was the latest version at time of writing.
- Libpng and zlib (optional)
Install Visual C++
If you already have a working installation of VC++, you can skip this step. Otherwise, download VC++ and install it. The standard installation should be OK, but you can choose to perform a custom installation if you don’t want documentation or other stuff installed with it. Before installing VC++, you must remove any other versions of VC++ on your computer.
Next, download and install the Platform SDK, which will provide you with the standard header files and libraries you’ll need to build software. You may choose to install VC++ anywhere on your hard drive, but the default location is C:Program FilesMicrosoft Visual Studio 10.0.
Creating your project
Create a new project of type “Class Library”, which we’ll call YourProjectName. In the rest of this tutorial, whenever you see YourProjectName, replace that text with the actual name of your project.
In Visual Studio 9, you’d make a new project with the wizard found at File -> New -> Project. Select Visual C++ -> Win32 Console Application, and choose a directory for your project. When the wizard opens, press “Next” and select DLL as the Application Type. Also check the “Empty Project” box.
If you prefer not to start with an empty project, then you can remove all of the files that VC++ creates for you, but keep the resource.h and YourProjectName.rc files, and remove any references to these files (such as YourProjectName.ico being listed in the resource file).
Add Source Code to the Project
If you already have source code for your plugin, simply add it to the project. Otherwise, you need to create the following files:
- YourProjectName.cpp
- YourProjectName.h
- resource.h (Only needed if building a plugin GUI)
- YourProjectName.rc (Only needed if building a plugin GUI)
You will also need to add the files from the VST SDK, which includes everything under the vstsdk2.4/public.sdk/source/vst2.x and vstsdk2.4/pluginterfaces/vst2.x directories. I usually prefer to manually make groups for these directories and drag the files to the groups from Explorer, as dragging the entire “vstsdk2.4” directory to VS can cause it to choke when it tries to add a bunch of unused files to the project.
To start out with, the plugin’s entry point header file (YourProjectName.h) should look something like this:
The accompanying class definition (YourProjectName.cpp) should look something like this:
Note that your project won’t compile just yet, but be patient!
The above code samples are simply blank entry points which don’t do anything exciting. The VST SDK offers lots of methods which you can override in order to do things like setting parameters, receiving MIDI messages, and so on. These things are beyond the scope of this tutorial; if you don’t know what code to put inside of processReplacing, try checking out the “again” example distributed within the VST SDK in the public.sdk/samples/vst2.x/again folder.
You must also create a module definition file for your project, named YourProjectName.def. Usually this file is placed in the same directory as the VC++ project file, but you may place it somewhere else so long as this definition matches the Module Definition File settings in the Linker section of the project preferences. This is just a plain-text file which should contain the following text:
Configure build settings
Go to the project settings either by right clicking on the project in the solution explorer and then selecting “Properties”. Make the following changes to the project for all build configurations:
- General
- Character Set: Not Set
- Common Language Runtime Support: No Common Language Runtime Support
- C/C++
- General:
- Additional Include Directories:
- (or wherever you put the VST SDK)
- Your source code directory
- Any other directories which you may have header files stored in Global SDK directories, such as
- Additional Include Directories:
- Preprocessor:
- Preprocessor Definitions:
- For Debug builds you may also wish to add
- If you wish to use PNG graphics for a VSTGUI frontend, add
- To avoid lots of compiler nags and warnings, define
- In some cases, you may also need to define
- Code Generation:
- Runtime Library: Multi-threaded. Multi-threaded debug may be used for debug builds. This will build the VC++ common runtime library statically into your plugin, increasing its size by approximately 200Kb. If you choose to use the CRL as a dynamic library, then you must also distribute a copy of the CRL with your application, which complicates deployment and distribution.
- Precompiled Headers:
- Precompiled Header: Not Using Precompiled Headers. Yeah, this makes rebuilding a bit slower, but will avoid a bunch of weird errors as you are getting your project set up. Once you get the project building you can revisit this step.
- General:
- Linker
- General:
- Additional Library Directories: Add any other library directories which your project depends on.
- Input:
- Additional Dependencies (for Release builds):
- libcmt.lib
- uuid.lib
- shell32.lib
- ole32.lib
- gdi32.lib
- User32.lib
- advapi32.lib
- zlib.lib (only if you are building with a GUI)
- libpng.lib (only if you are building with a GUI)
- Additional Dependencies (for Debug builds):
- shell32.lib
- msvcrtd.lib
- ole32.lib
- gdi32.lib
- User32.lib
- advapi32.lib
- zlib.lib (only if you are building with a GUI)
- libpng.lib (only if you are building with a GUI)
- Ignore Specific Default Library (for Release builds):
- msvcrt.lib
- libc.lib
- msvcrtd.lib
- libcd.lib
- libcmtd.lib
- Ignore Specific Default Library (for Debug builds):
- libcmt.lib
- libcmtd.lib
- msvcrt.lib
- Module Definition File: YourProjectName.def
- Additional Dependencies (for Release builds):
- General:
Adding support for VSTGUI (optional)
Include VSTGUI support in your plugin, simply add the VSTGUI files into your project in addition to your own editor class. At a very minimum, these are:
- aeffguieditor.cpp
- vstcontrols.cpp
- vstgui.cpp
Adding support for PNG graphics (optional)
If you would like to use PNG’s in your plugin instead of BMP graphics, you will need to also build your own version of libpng and zlib. Download the source code for both libraries from the links given in the “Requirements” section of the document and place them in the same directory. There is a Visual Studio project for libpng which will also build zlib for you; it is located in the projectsvisualc71 directory. In order to get the projects to build correctly, you’ll need to rename the source code directories to simply “libpng” and “zlib”, removing the version numbers from the directory name.
When you open the project up, VC++ will run you through the project conversion wizard. Convert the project, and change the “Runtime Library” settings in both libpng and zlib to be Multi-Threaded, as described above. Unless this step is performed, the dependency on the CLR will be present in your project. Next, choose the LIB ASM Release or LIB Release build style and build the project; if you build the libraries as DLL’s, you will be unable to statically link them into your plugin. The project should build ok, but throw a few errors when attempting to run the pngtest files. You can ignore these problems, as the libraries will still be correctly compiled and can now be linked to your project.
Visual Studio doesn’t need to have the libraries within your actual project. Instead, place the libraries in a directory of your choosing and be sure to add this path to the list of “Additional Library Directories” in the Linker preferences for your project. You may choose to place the libraries in the same directory as the Microsoft Platform SDK stuff, but I personally prefer to keep them in a separate directory checked into version control. Also be sure to add references to libpng.lib and zlib.lib for your project in the “Additional Dependencies” section of your Linker preferences for the project.
The path must be relative to the location of the project file. Then, in resource.h, add the following preprocessor definitions:
Now you can use IDB_BITMAP1 (or any other name of your choosing) in your code when creating new CBitmap objects.
I have heard some reports of vstgui.cpp not compiling properly due to the missing symbol png_set_expand_gray_1_2_4_to_8. Changing png_set_gray_1_2_4_to_8 to png_set_expand_gray_1_2_4_to_8 in vstgui.cpp seems to fix this issue.
Final considerations
VC++ ships with an optimizing compiler, but sometimes the compiler will choke on certain files and optimization must be disabled. In particular, I have experienced this with Laurent de Soras’ FFTReal libraries, since they are written as template classes. In general, however, optimization is a good idea, as is “Eliminating Unreferenced Data” (in the linker settings). The “Whole Program Optimization” setting appears tempting, but usually results in dozens of build errors and problems, so it’s best to avoid this. Also, be sure to use the optimization features of this compiler and linker, as they can greatly boost runtime performance.
If you are developing on a multi-core machine, then you might need to disable parallel builds by setting the number of parallel builds to 1 under Tools -> Options -> Projects and Solutions -> Build and Run. In past verisons of VS, I noticed that the compiler does not always link projects in the order one would expect, which caused odd errors during linking about missing symbols. However, VS2010 users probably shouldn’t need worry about this setting.
Unresolved symbols when linking
Sometimes you may see errors like the following:
If you are getting errors in your build about missing symbols, make sure that you double- and triple-check the debug and release configurations for the library configuration above, since some of the libraries which are used in one build style are specifically excluded from the other. Also, when you close and re-open the project’s build properties, VS always “forgets” the last selected build style, so remember to check and set this appropriately.
Also, you should check to make sure that the Platform SDK was correctly installed on your system and that your project’s include and library paths are pointing to these directories.
Using Hardware To Create Vst Plugins Plugin
Unresolved external symbols
If you are seeing errors like this:
Then this most likely means that the file which contains the given symbol is not correctly added to the VC++ solution.
Linking errors with symbols defined multiple times
This is undoubtedly one of the most frustrating problems which can occur when building a VST in VC++. If you are seeing error messages like this, then it most likely means there is some problem with your library configuration:
Most likely, the libcmt and msvcrt libraries are being included incorrectly in your build. Double-check the library list above, keeping in mind that the recommended configuration uses libcmt for release builds only, and msvcrtd for debug builds only.
While this term may seem alien to most, you would not have escaped VST plugins if you are a part of the ever-increasing group of people who spent time recording and producing music on their computers.
You could be a small, bedroom-sized studio owner who just does this on the side as a hobby, or you could be running a professional studio that produces music for others as well.
There is no way for you to produce real quality content without using the many different VST plugins that are easily available across platforms.
If you are looking for a guide that will help you understand VST plugins, all you need to do is keep reading!
VST Effects and VST InstrumentsWhat Is VST?
VST is the short form commonly used for Virtual Studio Technology.
This technology was developed to replace the traditional audio recording hardware with the help of software that could do the job in a much easier manner. This interface standard works to connect synthesizers and effects to editors and recording programs focused on audio.
The main difference in the process — when you compare the traditional methods with VST — is that you don’t have to bother about routing the audio out of the computer to the units made especially for hardware effects and then get it back to the computer. Instead, all of it is done internally.
There are two types of VST plugins that you absolutely need to know about if you are into recording and producing music — VST effects and VST instruments. Within each of these categories, there are tons of different options for you to choose from. All of these may perform similar or vastly different functions.
Let’s delve deeper into both these types of plugins in the next section.
VST Effects and VST Instruments
In this section, we will be looking at the two main types of VST plugins that you can incorporate into your audio recording, editing and producing process.
The first of these is the VST effects, which also include a large number of different sub-categories within the larger category of effects.
Similarly, the second type of plugins are VST instruments, which also cover a wide range of categories, some of which will be discussed in greater detail below.
VST Effects
The first type — VST effects — work like most other types of audio effects and can be used to process audio in a more effective manner, as it gives you the option of using it in real-time. VST effects work best when they are used in combination with the right low-latency soundcard
If there is a particular audio effect found in the form of hardware, there will definitely be a VST option for the same.
The different effects can be split into many different categories, the most popular of which are mentioned below:
- Modulation effects — For example, Chorus, Flanger, and Phaser.
- Time-based effects — For example, Reverb, Delay, and Echo.
- Spectral effects — For example, EQ and Panning
- Dynamic effects — For example, Compression and Distortion
- Filters — For example, Low-pass, High-pass, Band-pass, and
Band-reject
Let’s look at some of these in greater detail now.
EQ
The first type of VST plugins to be discussed here are the ones that concentrate on EQ. With the EQ plugins, you have control — digitally 0 over the frequency of the audio signals, which you can then adjust according to your requirement. There are many different types of EQ plugins available but their efficiency and utility will depend on your individual need for equalizing. Using these plugins, you can put together some simple adjustments and then customize the audio to fit your exact needs. The plugins may include many different multiple filters that help in either boosting or cutting off the different levels of frequencies.
The Best EQ VST Plugins for Instruments and Vocals
Looking to level up on your beats? Make sure you are always EQing everything with some of these free and paid eq vst plugins.
Reverb
The second type is the reverb VST plugins, which are basically tools that help you create the surroundings — including the specific reflections — in which any instrument is being placed. These are wonderful when it comes to giving a natural feel to the audio, as they put together the right amount of delay, as well as the response frequency so that an accurate recreation of the natural setting can be created. There are different types of reverb plugins that you can turn to, but you must remember that the performance of these can vary to a great extent.
Delay
If you are looking for specific plugins that will record an audio signal and replay it after a decided interval of time till it fades out completely, you can get your hands on delay VST plugins. There are a ton of ways in which you can play with these VST effects and all of them will end up giving you vastly — or marginally — different end results. There are a number of controls that are typically found in delay plugins, for example, dry/wet — which can be used to decide whether you want the actual audio with repetitions or just the repetitions — delay time — which determines the time for the replays — as well as feedback controls, which help in deciding how long the replays are going to be.
Compressor
Sometimes the difference between the louder and the softer sounds can get too jarring and the overall audio needs to be compressed to achieve a more balanced sound. Compressor VST plugins have been specially designed for situations like these, where their main purpose is to react to the audio signals and condense the sounds. These are different from EQ plugins, as they simply reduce the range of sounds that are coming in. There are many different types of compressor plugins, but the most basic ones usually come with a variety of adjustment controls like threshold, ratio, attack, release, knee, and more. These are in charge of the different aspects of the compression of sound signals.
How To Create A Vst

Filter
Another set of plugins that work in a manner that is similar to EQs, in essence, are filters. These help in tuning frequencies that go out of a particular limit that has been set as the cut-off frequency. This includes both frequencies that go over it or stay under it. You have the option of making the most out of the different bands on which these plugins function and operate. While there are many different varieties available, there are three main ones that you should know about — high-pass filter, low-pass filter, and band-pass filters. While a high-pass filter will just disable frequencies below the cutoff, low pass will disable the ones that go above the cutoff. Band-pass filters will keep only those that fit in the specified band.
Distortion
The last set of VST effects plugins to be discussed on this list are the ones aimed at distortion. If you choose such plugins and apply them to your audio, it will be intensified to a degree that makes it sound closer to what the same audio would sound in an analog setting. While in the past you didn’t have too much control over such distortion, now you can adjust all the different parameters that are in front of you to get a customized end result. Some parameters include multi-band, bit-crushers, phase, dynamic distortions and so much more. These can add a lot of character to the sound.
VST Instruments
Often referred to as VSTi, VST instruments can come in the form of either synthesizers or sampler units that you can play in real time. The other way to use them — if you are looking at live performances — is with MIDI. Regular instruments are physical pieces of hardware that can be bulky and unwieldy, but VST instruments are just the software versions of these, which makes them very handy for people working out of studios. Some of the more popular VST instruments will be discussed in greater detail below. Having these plugins loaded onto your computer eliminates the requirement of physically carrying around instruments.
Drum
As we mentioned before, VSTi plugins are going to give you all the benefits of having access to hardware without some of the associated disadvantages. With the help of a large number of VST drum plugins that are available — both for free and at some reasonable cost — you can get some authentic sounds in a virtual format. There are two types of drum plugins here. The first category of plugins is capable of mimicking the sound produced by the drums but with a few additional features for more depth. The second gives you many more options to create and innovate.
Bass
Bass is one of those elements that can make a world of a difference to the end result of your production. If you are looking for a virtual tool that will help you create a sound that is similar to the sound that is produced by analog tools, bass VST plugins can be the solution to your problems. As there are many different types of bass plugins available at any given time, you may have to choose what suits your requirements in the best possible way. Most, however, will give you a wide range of low-end variations and a chance to customize them according to your needs. The libraries included with these plugins are very impressive.
Synth
Vst 2 X Plugin
If you use the regular hardware synth instruments in your studio but want to switch them out for virtual software options, turning to synth-based VST plugins is always a good idea. These plugins help in creating the digital waveforms that emulate the sound that is produced by the physical instruments. With the help of these plugins, you can pick and choose which qualities you want to add while isolating and manipulating the basics. Synth-based VST plugins can help you get sounds that are similar to the ones created by instruments as well as the environment.
Piano
A piano is a large instrument that you possibly cannot lug around wherever you go. Therefore, VST plugins make for great alternatives that give you the right sound quality coupled with convenience. When it comes to piano VST plugins, there are two types that you must keep in mind. In the first category are those plugins that work with the help of sample sounds from an actual piano. The real instrument is used to record sounds and you will be required to use your computer as well as a MIDI keyboard controller to gain full access to its functionality. The second type use specially designed algorithms that mimic the sound produced by a piano.
String
If you need software that emulates the sound created by some of the popular stringed instruments that are used in the music industry, you should try to choose a good set of string VST plugins. With the help of high-quality processors and specialized parameters that are aimed at some of the more advanced utilization of the sound produced, these plugins help emulate the sound produced by a bunch of different stringed instruments like the guitar, violin and so on.
Orchestral
The final set of VST instrument plugins to be discussed on this list are orchestral plugins. Their functionality is not limited to just one or two instruments but covers a full collection of instruments, usually more in line with the classical form of music. The aim is to produce a sound that mimics an actual orchestra set up and performance by giving you access to libraries of samples that are extraordinary in terms of quality.
Free Trap Vst Plugins
While it is easy to get overwhelmed by the number of options that are in front of you when it comes to VST plugins, there are some things that you must keep in mind before giving in to the hype. First and foremost, check the system requirements, as there are some plugins that may not go well with your CPU. Additionally, it is important to know the source of the plugins, as these are third-party elements that may put your system in danger if you don’t look at the makers and their reputation. There may be free plugins but you may have to pay anywhere between a few dollars to a few hundred dollars for the plugins.
If you have been putting off using VST plugins, it is recommended that you try to incorporate these into your audio development process and just see the massive difference that they make to the quality of output. This is something that you just can’t avoid if you want the best out of your system!