Pointers for making a VST?

Thanks for the feedback on JUCE. Seems to be the ultimate toolkit so far.

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.

Join the Audio Programmer Discord as well.

3 Likes

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)

2 Likes

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! :slight_smile:

2 Likes

Oh nice! That’s probably what I am looking for. Not at my machine yet but I’ll look into it tonight.

And yea, the idea of making a VST happened because of all this as well heh

1 Like

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 :smile:
you’ll need to register on Roli’s website though as an account willl be needed each time you want to use it

1 Like

Yea crossplatform is great! And I’ll go ahead and make a roli account before installing everything.

1 Like

The function is processBlock I thought it was just process :slight_smile: It gives you a reference to a buffer of audio and midi messages! :slight_smile: should be what u need

1 Like

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.

1 Like

Appreciate the thoughts here. I’ll probably stick to being close to the metal but I program for a living so the other options are great for those that would prefer a different approach!

Or if I get frustrated with segfaults…:rofl:

1 Like

An advantage to the software approach of developing a VST particularly with C++ and JUCE taking you even closer to the “metal” (so to speak) is the opportumity to later port your work to pure hardware. ELK Audio has an OS and a development environment that allows you to put VST’s onto hardware under their version of Linux. This could be custom hardware with it’s own built-in direct controls, or they recently have added a version that runs on the Raspberry Pi. Of course if someone chose to they could skip the VST part and go directly to hardware with ELK Audios tools as well.

Adding to my previous post:
What i didn’t mention above is my recollection that the MATLAB system makes a VST by generating code that creates a VST. Please could someone else contradict or confirm this.

1 Like

Was not aware about ELK Audio. That sounds pretty interesting tbh. So a way to potentially make a pedal instead of just a VST? Not bad…

Well there’s another thread for that => Coding

Two other nice ways to make inexpensive real audio hardware on that thread:

The Daisy from Electrosmith and the MOD Dwarf.

1 Like

Will Pirkle’s book just got updated

3 Likes

Seems legit. Awesome!

1 Like

Keep em coming (for others as well) but I am happy that everyone is chiming in. I know it’ll be information overload for me but that’s ok. Much better resources than my fruitless searches has reminded me why I like this forum so much.

Really appreciate the help so far :upside_down_face:

Oh yeah and there’s also Pdvst. There used to be something similar for Max but i’m pretty sure that is defunct.

1 Like

btw, been eyeing the development of https://github.com/iPlug2/iPlug2 for some time. it’s currently at a “pre-release” stage but looks pretty promising! it’s also being actively developed (as you’ll see from the commit history). might become a viable alternative for JUCE in the future (although it probably won’t be as fully-featured in a loooong time).

1 Like