I am having a hard time finding good resources on how to make a VST.
I don’t know C/C++ but I know go/Rust and I have seen some Rust wrappers for VST development.
Regardless of language, are there any good resources on how to make a VST?
I think I would like to make a tape saturation/lofi audio processor of some kind. So audio stream in audio back out into a DAW.
I use Bitwig (not for much yet) and prefer to program on Linux/Mac but I know VSTs are kind of this blackbox and seem to only have targets for Windows/Mac.
Any pointers for those that have made something or are currently learning would be great!
Haven’t heard of JUCE but I’ll take a look. Seems like an integrated environment. Not sure I want to go that route but I am interested regardless. Thanks!
big recommendation for JUCE. i work with it professionally 5 days a week and can say that it’s a really well designed framework, library and toolkit. i jumped in from a mostly javascript background having only taken one very basic course of C++ but had no major trouble getting a grip of it. only downside is of course that if you intend to make money with your plugin then you’ll have to buy the license.
Learn C++ and (optionally) use Juce would be my advice.
You’ll be coming in with Juce at a good point; as I think Juce is being more settled now with v5 / breaking changes.
A word of warning with regards to Juce and the Audio Programmer (Joshua): Some of those videos are quite out of date now I believe; refer above breaking changes with Juce; so sanity check first.
Sick thanks for the pointers. I guess it’s time to learn C++ even if it’s just to get dirty enough to link but I am sure I will find myself productive with it. I just like the safety (both compile time checks/errors and memory safety) of Rust. It has good interop, but who knows, I might end up really liking C++
If the docs are good, the videos should get me going and then I’ll start to get familiar with the API and probably reach out quite a bit in the Discord.
Pretty stoked there is a Discord.
Soo many times I have had help from Slack communities for pretty interesting problems so this should be quite nice.
JUCE is best.
Unless you want to spend your time learning how to get audio directly from the input buffer on your sound card and translate bits into midi CCs etc, using a “ready made” solution is the quickest way to get you up and running with the actual creative part of making a VST. Never mind that it’s pretty much becoming the industry standard for a lot of audio programming stuff (Roli own it now)
Yea I kind of am interested in the lower levels to be honest but I might be more than happy with the data I’ll have access to in JUCE. I don’t mind sending byte arrays over USB to talk to radios, so either approach works for me.
Is there something you would recommend in order to read audio streams?
If you still talking JUCE, if you load up the “vst plugin template” you get a “process” function which gives you direct pointer to the audio stream, letting you read from and write directly to it as far as I remember.
I haven’t actually done any JUCE stuff in a couple of years but was meaning to get back into it with this quarentine!
as already mentioned above, i would suggest C++/Juce …then you might find other tools along the way but this would most probably be a good choice as it’s an environment widely used, Juce is also multiplatform so you won’t need to worry about porting things from one OS to another, which is also good thing
you’ll need to register on Roli’s website though as an account willl be needed each time you want to use it
Pulling back on the picture slightly. How you do this depends a lot on what your final objectives are.
A different approach would be to use tools other than a pure software approach to creating your VSTs. I’ll list three. There are others. So everyone, please chip in here.
You probably know about this stuff already but i’ll list them out for other readers here.
The VST system was created by Steinberg and made into an open standard. They know about VST. Halion 6 from Steinberg is a sampling and sound design system, with a very large range of capabilities. Part of Halion 6 is the Library Creator tool which allows you to create complete VSTs with an extensive UI and rich sound creation possibilities. If you intend to distribute your VST your customer uses the free Halion Sonic SE to run your content as a VST.
Similarly you can create a Kontakt Instrument to be used under the free Kontakt Player. There are a lot of commercial developers that use this approach.
Another approach is to use the Mathworks programs MATLAB and SIMULINK to generate and export VST3, and AU plugins.
There are various advantages and disadvantages to all these approaches.