What's the simplest way to get started making a plugin (VST3)?

All your LV2 and LADSPA goodness and more.

Moderators: MattKingUSA, khz

Post Reply
gloom
Established Member
Posts: 5
Joined: Wed Sep 18, 2024 7:50 pm

What's the simplest way to get started making a plugin (VST3)?

Post by gloom »

I've been a programmer for 12 years, but mostly in the web space. I have used Python, Ruby, and currently I'm mostly using Golang.

I've been a musician for most of my life. (I'm not very good, but it's one of the few creative outlets I have.)

I've wanted to break into making plugins (VST3), particularly for Reaper. I'm looking for a good tutorial/guide on making a "vertical slice" of a plugin. I'm talking the "hello world" of plugins. It could literally be something I'm able to build, install, load into Reaper as a VST, and then change the volume for a track with a fader.

Any advice here?

Another thing I'm curious about is whether or not I'm able to use Golang for the project. It would be a bummer to have to overcome the hurdle of C++, simultaneously with creating a plugin for the first time, but I'm willing to do that if that's just how it goes. (If C++ is the way, some guidance or small sample project on project structure, workflow, building, etc. would be awesome.)

Anyway, I'm new here. Apologies if I broke any posting rules I don't understand. Thanks in advance and thanks to all those out there working on plugins & tools for us Linux folk <3.

User avatar
Michael Willis
Established Member
Posts: 1486
Joined: Mon Oct 03, 2016 3:27 pm
Location: Rocky Mountains, North America
Has thanked: 76 times
Been thanked: 191 times
Contact:

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Michael Willis »

Golang would be trouble. Garbage collection doesn't work for developing audio processing software, because any pauses in processing will almost certainly result in buffer underruns. Read more in the excellent article Time Waits For Nothing.

Juce is probably the most popular framework for developing plugins in C++.

I used DPF to develop Dragonfly Reverb in C++.

I'm starting to learn Rust and using nih-plug. I am really liking it, but of course it requires Rust.

Dplug is a framework for developing plugins in D. While D does support garbage collection, it is optional and you can mark functions with @nogc to avoid garbage collection. I experimented with Dplug a little bit, and it was nice, but I switched to Rust for the better memory safety features.

patchtheuniform
Established Member
Posts: 9
Joined: Sun Sep 01, 2024 11:55 pm
Has thanked: 2 times
Been thanked: 1 time

Re: What's the simplest way to get started making a plugin (VST3)?

Post by patchtheuniform »

I'm taking a poke at CLAP. I'm just getting started, so I can't offer much in the way of coherent insight.

Kott
Established Member
Posts: 866
Joined: Thu Mar 21, 2013 12:55 am
Location: Vladivostok
Has thanked: 69 times
Been thanked: 136 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Kott »

https://hise.dev/ a high-level framework with JS-alike lang.

I'm not sure that Go can be a good choice here.

patchtheuniform
Established Member
Posts: 9
Joined: Sun Sep 01, 2024 11:55 pm
Has thanked: 2 times
Been thanked: 1 time

Re: What's the simplest way to get started making a plugin (VST3)?

Post by patchtheuniform »

Also, since you said Reaper, has you considered the JSFX route? https://www.reaper.fm/sdk/js/js.php

gloom
Established Member
Posts: 5
Joined: Wed Sep 18, 2024 7:50 pm

Re: What's the simplest way to get started making a plugin (VST3)?

Post by gloom »

I appreciate it everyone! I will take a look at all of these.

User avatar
Linuxmusician01
Established Member
Posts: 1632
Joined: Mon Feb 23, 2015 2:38 pm
Location: Holland (Europe)
Has thanked: 853 times
Been thanked: 161 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Linuxmusician01 »

gloom wrote: Wed Sep 18, 2024 8:18 pm

[...]
I've wanted to break into making plugins (VST3), particularly for Reaper.
[...]

Isn't VST independent on the DAW you use? And as far as I know VST is a bit "old-fashioned". Clap is the new kid on the plugins block. I'm tempted to think that they didn't invent a new plugin format for nothing... And the there's the Linux-VST versus Windows-VST debacle. Did you know that there are "two versions" of VST? Since you ask this question in a Linux forum I assume that you use Linux and the Linux native version of Reaper (Reaper has a Win and a Lin version).

I have no experience w/ Clap but if one makes a Clap plugin one might not have to choose between a Linux or Windows version... Right? I might stand corrected in the next reply tho.

[sort of off topic, sorry]
And about Python and scripting languages versus programming languages: I ain't no programmer but simply a user. If something is made in a scripting language like Python I tend to avoid it. Why? If an update of the (Python) executable breaks compatibility w/ old scripts then you as a user are F-ed. You might be too young to remember but I can very, very, distinctly remember the SNAFU with the "update" from Python 2 to version 3. Broke all scripts. But maybe that's different for VST. I've got no idea how to "compile" a VST plugin. There must be an SDK to make VST's isn't there? And can you as a developer choose a language to program in it (e.g. C or Python)?

User avatar
d.healey
Established Member
Posts: 659
Joined: Fri Sep 22, 2017 8:33 pm
Has thanked: 328 times
Been thanked: 109 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by d.healey »

Another vote for HISE, and here's my YouTube channel full of HISE tutorials - https://www.youtube.com/@DHealey

Like with any new skill there is a learning curve, and for non-software engineers it is initially quite steep, but then it quickly becomes smoother :)

David Healey
YouTube - Free HISE scripting and sample library dev tutorials
Libre Wave - Freedom respecting instruments and effects.
barbouze
Established Member
Posts: 187
Joined: Tue May 26, 2015 12:26 pm
Has thanked: 2 times
Been thanked: 16 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by barbouze »

patchtheuniform wrote: Thu Sep 19, 2024 2:04 am

Also, since you said Reaper, has you considered the JSFX route? https://www.reaper.fm/sdk/js/js.php

I second that!
Making a plugin requires to be efficient both in DSP and everything around that DSP(what OS are you targeting, will it be VST3 and/or CLAP, what framework if any to use, what about GUI, etc.).
By going with JSFX you could put that second part on hold for the now and just have fun learning DSP:

Code: Select all

JSFX are simple text files, which become full featured plug-ins when loaded into REAPER. Because they are distributed in source form, you can edit existing JSFX to suit your needs, or you can write new JSFX from scratch. (If editing an existing JSFX, we recommend that you save it as something with a new name, so you do you lose your changes when upgrading REAPER). 

.

gloom
Established Member
Posts: 5
Joined: Wed Sep 18, 2024 7:50 pm

Re: What's the simplest way to get started making a plugin (VST3)?

Post by gloom »

d.healey wrote: Fri Sep 20, 2024 10:51 am

Another vote for HISE, and here's my YouTube channel full of HISE tutorials - https://www.youtube.com/@DHealey

Like with any new skill there is a learning curve, and for non-software engineers it is initially quite steep, but then it quickly becomes smoother :)

D Healey in the (virtual) flesh! I was actually watching your videos after someone suggested using HISE. I had quite a time tbh getting it built from source on Fedora, since the packages listed on Github appear to be specifically for ubuntu/deb.

I had to mod the Makefile to set the right CXXFLAGS, since it couldn't find any of the header files.

I did finally get a build, but some of the windows are empty :sob:. I'm going to have to take another stab at it. I'm new to linux audio, so I also really need to clean up my pipewire... alsa... jackd... mess of a system I've created for myself here.

That being said, HISE is very appealing and I'm going to stick at it!

User avatar
d.healey
Established Member
Posts: 659
Joined: Fri Sep 22, 2017 8:33 pm
Has thanked: 328 times
Been thanked: 109 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by d.healey »

gloom wrote: Fri Sep 20, 2024 7:08 pm
d.healey wrote: Fri Sep 20, 2024 10:51 am

Another vote for HISE, and here's my YouTube channel full of HISE tutorials - https://www.youtube.com/@DHealey

Like with any new skill there is a learning curve, and for non-software engineers it is initially quite steep, but then it quickly becomes smoother :)

D Healey in the (virtual) flesh! I was actually watching your videos after someone suggested using HISE. I had quite a time tbh getting it built from source on Fedora, since the packages listed on Github appear to be specifically for ubuntu/deb.

I had to mod the Makefile to set the right CXXFLAGS, since it couldn't find any of the header files.

I did finally get a build, but some of the windows are empty :sob:. I'm going to have to take another stab at it. I'm new to linux audio, so I also really need to clean up my pipewire... alsa... jackd... mess of a system I've created for myself here.

That being said, HISE is very appealing and I'm going to stick at it!

Yeah I haven't tried building on Fedora or Arch yet as I'm not familiar with those distros, but will probably have a go at some point. What version of gcc are you using?

David Healey
YouTube - Free HISE scripting and sample library dev tutorials
Libre Wave - Freedom respecting instruments and effects.
Kott
Established Member
Posts: 866
Joined: Thu Mar 21, 2013 12:55 am
Location: Vladivostok
Has thanked: 69 times
Been thanked: 136 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Kott »

gloom wrote: Fri Sep 20, 2024 7:08 pm
d.healey wrote: Fri Sep 20, 2024 10:51 am

Another vote for HISE, and here's my YouTube channel full of HISE tutorials - https://www.youtube.com/@DHealey

Like with any new skill there is a learning curve, and for non-software engineers it is initially quite steep, but then it quickly becomes smoother :)

D Healey in the (virtual) flesh! I was actually watching your videos after someone suggested using HISE. I had quite a time tbh getting it built from source on Fedora, since the packages listed on Github appear to be specifically for ubuntu/deb.

I had to mod the Makefile to set the right CXXFLAGS, since it couldn't find any of the header files.

I did finally get a build, but some of the windows are empty :sob:. I'm going to have to take another stab at it. I'm new to linux audio, so I also really need to clean up my pipewire... alsa... jackd... mess of a system I've created for myself here.

That being said, HISE is very appealing and I'm going to stick at it!

There is HISE in https://copr.fedorainfracloud.org/coprs ... kage/HISE/ but I didn't test it, so can't tell is it works properly or not.
I consider to add Fedora (and deb) builds in our openSUSE proaudio repo.

User avatar
d.healey
Established Member
Posts: 659
Joined: Fri Sep 22, 2017 8:33 pm
Has thanked: 328 times
Been thanked: 109 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by d.healey »

Kott wrote: Fri Sep 20, 2024 11:56 pm

There is HISE in https://copr.fedorainfracloud.org/coprs ... kage/HISE/ but I didn't test it, so can't tell is it works properly or not.
I consider to add Fedora (and deb) builds in our openSUSE proaudio repo.

They're out of date (which isn't surprising given how frequently HISE is updated). There's not much point in using HISE unless you can build it from source because you'll need to be able to do that anyway in order to export your project. - Actually I suppose if you just want to try it out before committing then a prebuilt binary is useful.

David Healey
YouTube - Free HISE scripting and sample library dev tutorials
Libre Wave - Freedom respecting instruments and effects.
Kott
Established Member
Posts: 866
Joined: Thu Mar 21, 2013 12:55 am
Location: Vladivostok
Has thanked: 69 times
Been thanked: 136 times

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Kott »

d.healey wrote: Sat Sep 21, 2024 10:23 am
Kott wrote: Fri Sep 20, 2024 11:56 pm

There is HISE in https://copr.fedorainfracloud.org/coprs ... kage/HISE/ but I didn't test it, so can't tell is it works properly or not.
I consider to add Fedora (and deb) builds in our openSUSE proaudio repo.

They're out of date (which isn't surprising given how frequently HISE is updated). There's not much point in using HISE unless you can build it from source because you'll need to be able to do that anyway in order to export your project. - Actually I suppose if you just want to try it out before committing then a prebuilt binary is useful.

I made this package https://build.opensuse.org/package/show ... audio/HISE and it works, you can export plugin's sourcetree and compile then. Also it's possible to build plugins using this package in OBS https://build.opensuse.org/package/show ... OOLS-WINDS (the receipt in the .spec file).

My intention is to provide HISE package for popular distros as the OBS can build the deb, rpm and even Arch packages. So it would be easy to install-and-run HISE, thus making HISE more accessible for Linux users.

(yeah, I'd take a look, and audinux package is not usable in terms of exporting)

Ardura
Established Member
Posts: 4
Joined: Thu Sep 19, 2024 8:56 pm
Been thanked: 1 time

Re: What's the simplest way to get started making a plugin (VST3)?

Post by Ardura »

+1 for Rust and Nih-plug. I picked up rust just in the interest of making plugins and found it very rewarding once you figure out the basics. I'm sure the learning curve is different depending on your programming abilities or previous language experience but there is a template to get up and running with a simple plugin by the Nih-plug repo maintainer.

Post Reply