Easiest way into plugin development
-
- KVRist
- 418 posts since 26 May, 2018
I'm a musician, a sound "engineer", an EE dropout (working and studying together, not for me) and I get the basics of programming, although I am not a programmer by any means.
I have a few ideas for a couple of plugins, there are a few ways for me to accomplish what I want with a string of plugins (with the possible exception of one feature) but I'd like to build an integrated solution with all the controls I need exactly where I want them. Nothing too fancy. I suppose I could do what I want with Pure Data or MAX/MSP, but it would be a bit too cumbersome for my tastes (I really need to use this stuff as an audio plugin). Also, I want to be able to just install this stuff on whatever system I have (be it Windows, macOS or Linux - VST and possibly CLAP being the obvious choices) without the added baggage of MAX/MSP or Pure Data.
I gather that the most complete framework for plugins, one that would also be cross-platform, is JUCE. Unfortunately, I'm mostly a programming virgin (I've dabbled with MATLAB and Supercollider, years ago, the former just to do offline processing rather than real-time, the latter just to program some very simple synths). JUCE has some tutorials on its website, but they're a bit scattered and sparse, and not much of a "baby steps" tutorial. As I said, I'm an EE dropout so I have a basic understanding of DSP. I know how a Fourier transform works on paper, what convolution is. I basically covered all of the basic DSP for one-variable functions (for example, the Laplace transforms, cosine transforms, windowing, etc.) even though it's been a long time, but I suppose I could revise a bit as needed. Still, I don't know how to implement this stuff in realtime. I tried reading through some open source plugin code, but apart from the fact that not all open source code is readable code, I find it really hard to make out other people's code. So basically, what's my best bet?
I have a few ideas for a couple of plugins, there are a few ways for me to accomplish what I want with a string of plugins (with the possible exception of one feature) but I'd like to build an integrated solution with all the controls I need exactly where I want them. Nothing too fancy. I suppose I could do what I want with Pure Data or MAX/MSP, but it would be a bit too cumbersome for my tastes (I really need to use this stuff as an audio plugin). Also, I want to be able to just install this stuff on whatever system I have (be it Windows, macOS or Linux - VST and possibly CLAP being the obvious choices) without the added baggage of MAX/MSP or Pure Data.
I gather that the most complete framework for plugins, one that would also be cross-platform, is JUCE. Unfortunately, I'm mostly a programming virgin (I've dabbled with MATLAB and Supercollider, years ago, the former just to do offline processing rather than real-time, the latter just to program some very simple synths). JUCE has some tutorials on its website, but they're a bit scattered and sparse, and not much of a "baby steps" tutorial. As I said, I'm an EE dropout so I have a basic understanding of DSP. I know how a Fourier transform works on paper, what convolution is. I basically covered all of the basic DSP for one-variable functions (for example, the Laplace transforms, cosine transforms, windowing, etc.) even though it's been a long time, but I suppose I could revise a bit as needed. Still, I don't know how to implement this stuff in realtime. I tried reading through some open source plugin code, but apart from the fact that not all open source code is readable code, I find it really hard to make out other people's code. So basically, what's my best bet?
-
Jeff McClintock Jeff McClintock https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=56398
- KVRist
- 433 posts since 30 Jan, 2005 from New Zealand
try SynthEdit (yes, I'm biased). Because you can start with a easy-to-learn visual drag-and-drop environment, and once you're happy with that you can start gradually adding your own functionality with C++ add-ons (aka 'modules'). C++ is currently the most widely used language in pro-audio, so if you choose to get 'serious' at some point in the future and write your plugin from scratch, all your hard work (writing C++) is transferable.
SynthEdit exports (makes) VST3 (Windows and macOS) and AU2 plugins (macOS).
SynthEdit exports (makes) VST3 (Windows and macOS) and AU2 plugins (macOS).
-
- KVRAF
- 1759 posts since 11 Nov, 2009 from Northern CA
I'd suggest checking out Blue Cat Audio's Plug'n Script. I let's you off easy for things like the GUI programming (although you have less flexibility as a result), but you can do pretty much anything you'd like to the audio stream. You get a good idea of what programming a plug-in looks like - the interface is reasonably VST-like.
If you try it and have great success, that's a sign that investing (a *whole lot*) more time in learning the craft of software development might eventually pay off. The learning curve to programming audio processing in C++ is pretty huge. Plug-n Script gives you a shot at doing something significant with a considerably reduced learning curve - not that learning it will be a trivial undertaking.
If you try it and have great success, that's a sign that investing (a *whole lot*) more time in learning the craft of software development might eventually pay off. The learning curve to programming audio processing in C++ is pretty huge. Plug-n Script gives you a shot at doing something significant with a considerably reduced learning curve - not that learning it will be a trivial undertaking.
-
- KVRian
- 730 posts since 17 Sep, 2007 from Planet Thanet
I think sometimes you need to bite the bullet and jump into C++. If you have some programming background it's not too onerous. Totally agree with the other posters about using alternatives like Synthedit or Angelscript. If you have some DSP you might like Faust. Maybe have a look at the iPlug2 toolkit which is a bit more lightweight than JUCE (and, I think, has Faust baked in nowadays).
- KVRist
- 102 posts since 2 Jul, 2021 from Netherlands
I would suggest hiring someone to do the programming for you. You've got some experience with how development works, which is very useful, as it allows you to communicate more effectively with the developer. But it doesn't mean you should try to do all the development yourself, unless that's something you're really excited about learning.
My audio programming blog: https://audiodev.blog
- KVRian
- 1184 posts since 24 Feb, 2012
JUCE and its (rather excellent) tutorials will help and teach you how to build multiformat/multiplatform plugins. It will give you first pointers on traditional 2D graphics.
Audio is largely plain math and memory handling, so JUCE assume it's your job and you know why you're here using it.
But these are just the tools covering various disciplines, each cutting edge and highly specialized. Think how banal a hammer is vs what an experienced stonemason can do with it.
IMHO, the audio part is the pudding, and likely the toughest effort. I started focussing on audio only, building algorithms with Reaktor. Only much later I learned to express them in code (which in itself can be challenging without experience).
Start as small as you can. JUCE plugin demo is perfect once you have a good feel for common algorithms (filters, crossovers, dynamic processing, modulation). Try adding gain and balance controls. Try adding a low pass filter, and build from there.
I spent 7-8 years building my first plugin. It got better, but even after a dozen products in the wild, the development of a competitive audio plugin still means a major effort.
Audio is largely plain math and memory handling, so JUCE assume it's your job and you know why you're here using it.
But these are just the tools covering various disciplines, each cutting edge and highly specialized. Think how banal a hammer is vs what an experienced stonemason can do with it.
IMHO, the audio part is the pudding, and likely the toughest effort. I started focussing on audio only, building algorithms with Reaktor. Only much later I learned to express them in code (which in itself can be challenging without experience).
Start as small as you can. JUCE plugin demo is perfect once you have a good feel for common algorithms (filters, crossovers, dynamic processing, modulation). Try adding gain and balance controls. Try adding a low pass filter, and build from there.
I spent 7-8 years building my first plugin. It got better, but even after a dozen products in the wild, the development of a competitive audio plugin still means a major effort.
Fabien from Tokyo Dawn Records
Check out my audio processors over at the Tokyo Dawn Labs!
Check out my audio processors over at the Tokyo Dawn Labs!
- Banned
- 75 posts since 2 Jul, 2022 from Toronto, Canada
Perhaps look into taking baby steps and try your hand at JavaScript for Audio[1] first? That way you get into the groove of development mindset and best practices and more importantly, debugging your code and logic.
https://www.routledge.com/JavaScript-fo ... 1032062723
https://www.routledge.com/JavaScript-fo ... 1032062723
all the best
- KVRAF
- 5375 posts since 22 Jul, 2006 from Tasmania, Australia
Flowstone can teach the paradigms that Fabien summarised
-it's super easy too
x64 is available through me, if u buy the program
==>
http://www.dsprobotics.com/
-it's super easy too
x64 is available through me, if u buy the program
==>
http://www.dsprobotics.com/
I wonder what I want in here
-my site is gone and music a mess
-my site is gone and music a mess
- KVRist
- 487 posts since 2 Feb, 2005 from UK
- KVRAF
- 3485 posts since 28 Jan, 2006 from Phoenix, AZ
check out my thread: viewtopic.php?t=584526
Vlang + CLAP could easily be the ultimate solution for plugin development. And someone could eventually use V to make a realtime audio coding platform that runs directly in your DAW. And that could be straight exported to efficient C code, so unlike other development platforms which are proprietary, inflexible, inefficient, does not compile to audio plugin, etc. CLAP / VSCode / V i's way lighter and easier to get into than JUCE / VST / Visual Studio / C++
also JUCE is not free!
(well, not easy quite yet, still working on translating CLAP for V and V UI librart is early in development so it's not as function-rich as JUCE, but I didn't need those functions in the first place)
Vlang + CLAP could easily be the ultimate solution for plugin development. And someone could eventually use V to make a realtime audio coding platform that runs directly in your DAW. And that could be straight exported to efficient C code, so unlike other development platforms which are proprietary, inflexible, inefficient, does not compile to audio plugin, etc. CLAP / VSCode / V i's way lighter and easier to get into than JUCE / VST / Visual Studio / C++
also JUCE is not free!
(well, not easy quite yet, still working on translating CLAP for V and V UI librart is early in development so it's not as function-rich as JUCE, but I didn't need those functions in the first place)
