Creating an Audio Unit / VST?

  • Im extremely interested in building my own VST Drum Machine and Synth suite, i understand this can take several years. But this is a little project id like to begin, after seeing Steve Duda's Nerve demonstrated online here and there it really got me thinking.

    Where would I start?
    What information would I have to learn?
    What programming language?

    Ultimately at the end of the process id like to have a stable and powerful VST that i can use in my own productions and hopefully others can use, even if this does start with a simple single osc synth.

    I like the idea of max for live but i dont find myself drawn to it.

    Thanks as always.

  • not much help, because i don't know much either. but it's something i think about. from what i know, c++ is the language to learn.

    some resources i found:
    kvr forum about plugin dev - http://www.kvraudio.com/forum/viewforum.php?f=33

    cockos (guys who do reaper) library, which includes iplug framework: http://cockos.com/wdl/

    check out http://openFrameworks.cc - this is going to be my starting point when i finally finish my dissertation.

    and http://creativeapplications.net is always good for inspiration.

    i'd say start really small. like building an effect that controls gain or something, baby steps, then move on. do one thing well then try something else. like, get it working, then put more work into the gui.

    apologies if any of this is patronising.

  • In no way was any of that patronising, if anything its informative. ~Ill check these out when im home! Thanks.

  • im happy to make this a joint venture? More people working on different areas, the quicker it will come together and overall an awesome learning experience!

  • sure. i don't know how much i can commit. i'm going to vietnam (woooooot!) on friday to get some pho and ride on boats or something, then there's the aforementioned dissertation. but i finish my m.Ed in september, though i also start a new job (teaching year 1), so that's going to hose a fair chunk of my free time. but i'm definitely up for some collaborative learning.

  • On my windows PC (now macOS) i used to play with Synthedit. It's no freeware anymore, but building a vst synth is like building with lego.
    it's really easy for a non programmer (like me) to get fast results and it's good for learning the buildup of a synth.

    http://www.synthedit.com/

    also interested in learning c/c++

  • I'd recommend to start by (as mentioned) downloading the VST SDK, but download 2.4 (not VST 3.x, as many apps such as Live don't support VST3 yet, and I doubt 2.4 support will go away very soon).

    Next, get the AGain example to compile and show up in your VST Host. If you get this far, celebrate! It took me several hours..

    Then perhaps start modifying the ProcessReplacing method, add some parameters do to more than just gain (perhaps something relatively simple like Bit reduction). There are some valuable resources like musicdsp.org for example code on DSP operations in C.

  • What you want to look into is a c++ programming library called JUCE.
    http://www.rawmaterialsoftware.com/juce.php

    i'm not a fan of either VST's or AU's, but i've heard good things about JUCE's ability to fabricate them.

  • it looks like you want to get deeper into vst/au programming, but i remember there was this platform called "sonicbirth" on which you could graphically design AU´s and it was for free...

  • Thanks for all the feedback chaps! I registered as a developer on steinbergs site and downloaded the kit, i think im going to go to design a "suite" in the end. As im mainly into house music it will be mostly focused at the dance/upbeat crowd but useable to anyone.

    Im a musician before a producer so im goin to keep that in mind when building this thing.

    Has anyone else built any vsts?

  • I recommend reading up on DSP. The math behind audio synthesis and processing is, at least for an audio nerd like me, quite interesting and fun.

    Stanford's CCRMA site (https://ccrma.stanford.edu/) has been a big help to me, lots of great, free info there.

    Get your geek on!

    edit: Although, if you're new to the guts of DSP, I recommend finding a good book. The papers on stanford's site are a bit intimidating.

  • +1 for juce.

    they do a lot of the heavy lifting so you don't have to.

    i've done some VST work, but not anything useful.

    i think juce even lets you build the core of the plugin independent of the plugin format, so you can build the same code as an AU and a VST.

  • more links:
    http://dspguide.com/
    [[http://yehar.com/blog/?p=121|olli niemitalo's dsp tutorial]]

  • you guys are brilliant thanks very much, ive decided im going for 3 different parts of the suite. Synth, Drum Machine and the third im yet to decide, but maybe an 'effects engine'.

    But to not to get too far ahead of myself - a drum machine is first, as this is where i really need to brush up my skills, because quite frankly i feel my beats suck most the time outwith the 4 to the floor beat. So a little under the hood learning should give me some ideas and inspiration.

    My brother is a programmer, so im going to get his help where possible.

  • not to rain on your parade Dean, but do you really think you'll find inspiration for your musics knee deep in learning C++?

    why not try building something interesting in max? you'd be up and running with a good grasp of the basics after a short weekend of tutorials.

  • no but learning more about drum synthesis will inspire me to experiment more?

    Ive no interest in learning max but cheers for the advice.

  • @ResAlien - cheers mate! brilliant info, ive heard of but never looked at supercollider.

    Its not that they suck its just creating them is never a nice "fluent flow"
    On saying that ive started using guru, and its blowing me away how much my workflow is improving.

    Im very much into making music rather than clicking boxes on a piano roll. And this was really my only option before as i didnt like creating beats with the keyboard.

  • freelance writer

  • -10 for mentioning the crappiest shit in the world JUCE

  • hey dean,
    i see that you have no interest in learning max.
    if your feelings change, or if anyone else is interested, another option to consider is gen in max/msp/jitter:

    http://cycling74.com/wiki/index.php?title=Category:Gen_Code_Export