On The Inside

On The Inside

Sunday, August 30, 2015

Getting Started with High Level Plugin Design: Synthmaker/Flowstone, Synthedit, Max for Live, or Reaktor?


A lot of people are interested in getting started with synthesizer programming but are unsure about how to get started. I'm a computer scientist by training and have no problems using low level languages like C or C++. However, even for the experienced, that can be time consuming. For the initial high level prototyping, I tend to still prototype in Reaktor.  I don't think that there's a better choice for this kind of work. If you want to consider some basic idea for a plugin, you can probably find the pieces of that idea already in the library. You can also integrate various testing tools into the prototype environment itself. If you choose to start with Reaktor, then I think that the most direct comparison and simplest transition is to Synthedit. You will find the environments similar on a basic level. An advantage of Synthedit is that building externals is fairly straightforward.  This combination gives you a fairly nice path as follows:

1) Develop ideas using high level prototyping in Reaktor
2) Build prototype of fixed idea in Synthedit
3) Build externals for each of the components in your synthedit prototype.
4) Merge previous externals into a single synthedit "synth/effect" external.
5) Transition to SDK using your synthedit synth/effect external as a starting point.

You could skip right to step 2, but, I find Reaktor so much more immediate and complete, that I find early stage prototyping less annoying in Reaktor. You will also find that Reaktor is fantastic just to have as an effect and synth plugin. Really, for anyone that creates music and wants to go down this path, I think Reaktor is THE starting point. The reason that you don't skip right to step 4 from 2 is that the existing modules in Synthedit allow you to add your C/C++ code one module at a time. For example, if you're building a synth, after you get it working fairly close to your goal, maybe you want to build a specific filter. You can develop this module while keeping all of the standard Synthedit modules in place. You can release this at any time, of course, choosing to incrementally develop more and more of your synth in C/C++. When you have the core developed, you can then transition to a cross platform version of your synth.

Synthmaker: I like synthmaker, it has become Flowstone. Synthmaker/Flowstone will get you to a nice looking plugin much faster than synthedit. You can have something to upload and give away with a weekend's worth of work.  Underneath the hood, however, it's quite a bit more complicated and it doesn't have the nice path that synthedit does to creating a C++ plugin. That said, it has a very nice DSP language that you can use to code up blocks and I've found this helpful for algorithm experimentation. It's often much more immediate at a low level than Reaktor because you don't have to drag a bunch of blocks around in order to add two numbers. Is it worth the price of entry?  For most people, I don't think so. On the other hand, If you don't want to learn C++, you do want to create 3d modeled looking synths with a minimal of effort, and you are willing to accept the stock controls, synthmaker is the fastest way to get to a good looking windows plugin.  If you want to go beyond that, you should measure its utility by asking whether what it does well is worth it to you for some part of your process. If you want to get the basic feel of Synthmaker, then you can get SynthMakerCM from most issues of computer music magazine. It has many demo-ish limitations, but, it's cheap and you can see what it can do at a basic level. IIRC, you can generate a VST with SynthmakerCM as long as you don't mind the UI having a SynthMakerCM logo on the front.

Max: I love MFL (max for live) primarily because it allows me to build user interfaces that work in the live environment. If you already own and use live and want to upgrade to suite, then this is probably worth the investment. There are quite a few practical elements in the MFL library so it's not bad for that first prototype, but, it doesn't translate as well to synthedit as Reaktor does as there are quite a few work/thought-flow differences.  If you have full blown Max there is a feature similar to synthmaker called GEN that allows you to write modules in a terse DSP like language. I tend to prefer Max+Gen, as opposed to SynthMaker, for this kind of experimentation now, but this doesn't come with MFL and I don't know if you can buy just the Gen license to add to MFL. In any case, it's an expensive route and I think Max has quirks that are in some ways more difficult to master than Reaktor/Synthedit; granted, some things are decidedly easier.  Max does allow you to use externals so it can be a bridge to coding your own fully C/C++ plugins, although for me, it's not quite as straightforward as Synthedit.

Pd: Pd is just open source max with a lot less of some stuff and some more of other stuff. If you think that you might get on with Max or MFL, download Pd first, it's free.

tl;dr: Reaktor is the place to start, Synthedit provides the most straightforward natural path from "Reaktor idea" to "C++ plugin." SynthMaker provides the shortest path to released plugin that looks good, but it doesn't provide a natural path to C/C++. Max/MFL/Pd are cut from the same cloth, they have a different thought/work flow, some say higher learning curve, MFL is a natural fit for Live users and these tools provide some path to C++ plugin development, but it's not as straightforward as Reaktor+Synthedit.