If you've ever fancied creating your own VST plug-in synths and effects, Outsim's slick graphical development tool might just have made the process that bit easier for PC users.
The Apple Mac still seems to be the computer of choice in most professional recording situations, but if your inclinations run more towards DIY programming and messing about with DSP code, it's the Windows platform that sees the most activity. Whether your ambitions extend to coding VST plug-ins from scratch or just making an alternative skin for your favourite shareware application, you'll find both affordable tools and a busy community of like-minded individuals lurking on the Internet.
The community element is important, because programming can be pretty daunting to the uninitiated, and presents a steep learning curve. And where the tools are concerned, there's usually some sort of trade-off between ease of use, on the one hand, and flexibility and speed on the other. Modular synthesis programs with neat drag-and-drop interfaces offer a relatively easy point of entry, but the resulting designs often end up being CPU-intensive, and in some cases, remain tied to the application that created them. At the other end of the spectrum, a C++ compiler or x86 assembler gives you complete flexibility to do what you want, and the ability to optimise your code to make it run as fast as possible, but learning C++ or assembly language requires a big investment of time and effort.
Many of the more ambitious tools try to give us the best of both worlds, combining a graphical programming environment with the ability to incorporate low-level code, and providing both a real-time testbed and an extensive library of prefabricated synthesis components. Native Instruments' Reaktor 5 is arguably the most sophisticated, and comes with a huge library that not only includes high-level synth modules such as filters and oscillators, but the low-level components needed to implement other algorithms. However, Reaktor is a comparatively costly program, and Reaktor Ensembles can't be converted to stand-alone instruments or VST plug-ins, so you're unlikely to be able to recoup any of your investment by selling what you make.
Another well-established development tool is Jeff McClintock's Synth Edit. At $50 for a full shareware licence, it's much more affordable than Reaktor, and it offers the ability to turn your creations into free-standing VST plug-ins. There's nothing to stop you marketing them as products in their own right, and a number of Synth Edit developers have done just that. However, Synth Edit 's user interface is more basic than Reaktor 's, and although it's possible to add new high-level Synth Edit modules to the default library, you'll need to be able to program C++ to do so.
Enter Synth Maker from Outsim. At £125, it's positioned somewhere between Synth Edit and Reaktor in terms of price. In some ways, it combines the best aspects of both programs, but in others, it's very much its own beast.
A Tour Of The Library
The Synth Maker library comprises two kinds of element. Primitives are low-level mathematical or signal-processing components, which are combined to make more complex components called Modules. These, in turn, can be combined to make more complex Modules; and Modules, in turn, can be encapsulated as VST plug-ins or stand-alone programs at the click of a mouse button. In that respect, it's like a rather more streamlined version of the Reaktor architecture, with fewer components available, but with the major bonus that you can free the fruits of your labours from the development environment. (Synth Maker also allows you to have multiple projects open at the same time, which is helpful.)
However, the real selling point of Synth Maker isn't so much what you can do with it, but the way you do it. Outsim have clearly put an enormous amount of thought into designing a user interface that makes the task of building synths and effects units as simple and clear as possible. Like Reaktor, Synth Maker has a polished and consistent appearance which is predominantly graphical rather than text-based, but unlike NI's interface, all Synth Maker editing, testing and GUI design takes place within a single window.
What makes this possible is the Navigator, which runs along the top of the main editing window. When you load in a new project, it's displayed as a group of one or more Modules in the main Schematic window. Double-clicking on any of these Modules explodes it, so that the Schematic window now shows the Modules and Primitives that make up that Module; you can double-click on any of the non-Primitive Modules here to open them up, and so on. The clever part is that the Navigator stores a snapshot of each double-clicking step you take down the Module hierarchy of your creation, complete with miniature graphic of the state of the Schematic window, so you always know exactly where you are, and can jump backwards and forwards at the click of a mouse. The really clever part is that you can also bookmark Navigator pages and assign Function keys to them, making it simple to switch between editing multiple Modules located at different points in the schematic.
The other important section of the user interface is the Toolbox, which runs down the left-hand side, and is used to locate Primitives and Modules to be added to your schematic. Again, the Toolbox represents a neat way of incorporating in a single-window interface what other applications often place in floating palettes or drop-down menus. It provides several well thought-out ways of filtering the Synth Maker library to locate the Modules and Primitives you're after. Two lists divide the Modules and Primitives into functional categories such as MIDI, Envelope, Filter and so on, while you can also filter them by choosing a particular connector type, bringing up all the Modules that use that type. If all else fails, you can use a text search to find what you want. Modules and Primitives meeting the filter or search criteria appear in miniature form in the Toolbox panel, from where they can be dragged into the Schematic window. Again, neat touches abound: for instance, if you select a Module in the Toolbox panel and then click it again, the number two appears. Click again, and it changes to three, and so on. Now, when you drag that Module into the Schematic window, that number of copies will be created.
The Personal Touch
Synth Maker already represents decent value for money, but as we went to press, Outsim announced details of a new Personal Edition aimed at students and home users. This will offer an even more affordable way to access the full Synth Maker toolkit, with the restriction that you can only distribute the plug-ins you create as freeware, and that they must bear the 'Made with Synth Maker ' label. The Personal Edition is expected to cost just £65, and should be available by the time you read this.
The Schematic window is the only part of Synth Maker where you can actually edit anything, and, like the other areas of the program's user interface, it has been very nicely designed to make the process as straightforward as possible. Modules and Primitives are arranged on a background that looks rather like grey graph paper. They can overlap if you like, but since the schematic is both zoomable and scrollable, it's usually possible to keep them clear of one another.
Like their counterparts in similar applications, Synth Maker Modules and Primitives conform to various conventions. They're all grey rectangles — dark grey for Primitives, light for Modules — with inputs arrayed down the left-hand side and outputs down the right. Each input and output has a coloured logo in a circle, indicating the data type that is passed to or from it. Outputs can be connected to any input on any other component that shares that data type just by clicking and dragging, and if you drop a new component to the right of an existing one, Synth Maker will automatically suggest a link between compatible inputs and outputs that line up horizontally. Clicking on an existing link creates a breakpoint which can be dragged to curve the link around any obstacles in its path, and if the spaghetti is getting out of hand, you can also create wireless links. A single input can be connected directly to multiple outputs without the need to muck about with combiner or mixer elements; where it matters, the hierarchy among multiple links is indicated by the number of dashes that each displays.
If you try to create a link between an output and an input of different data types, the mouse pointer will change to a circle with a line through it, to point out your mistake, but in some cases it's possible to force Synth Maker to create these mutant links by holding down Shift and Ctrl as you drag. This provides a simple way of converting between data types.
More nice user-interface touches are apparent when you select a Module or Primitive within the Schematic window. Selected Modules and Primitives display a tag over each input and output describing its function, and a row of symbols appears along the bottom. These allow you to apply functions such as deleting and renaming Modules, or adding them to the Toolbox. If you have multiple, connected elements selected, clicking the rounded-off square symbol creates a new Module out of them; and when you have a Module selected that includes the appropriate input and output connectors, you can turn it into a VST Instrument or effect plug-in simply by clicking the VST symbol. Alternatively, right-clicking in the Schematic window brings up a context-sensitive menu which covers all this functionality and more. All the while, the application window's status bar displays context-sensitive information about whatever the mouse is currently pointing at.
If that all sounds refreshingly helpful by comparison with some other programs, that's because it is. Synth Maker is a shining example of how a good graphical user interface can make a complex piece of software approachable, usable and intuitive. And that's fortunate, because at present, one of its major negatives compared with longer-established rivals is a comparative lack of tutorial material and example projects. There's a decent PDF manual, but the only sample project included in the version 1.0 download is a simple synthesizer built entirely from high-level Modules. Other packages such as Reaktor and Max/MSP ship with much more detailed and varied tutorials, which explore the respective programs in greater depth. Outsim say on their web site that they're putting together a library of tutorial resources, and some users of the Synth Maker web forum have already posted their own Modules for download, so I think this situation will improve soon. For the time being, though, there's a certain amount of trial and error involved in learning to use the different Modules and Primitives.
Code Red: Synth Maker's Appeal For Commercial Developers
The ease with which you can create VST plug-ins in Synth Maker is just one aspect of a concerted focus by Outsim to make this a serious tool with appeal to commercial developers. There's a greater emphasis on performance and CPU load here than in many modular environments, which is manifested in features like the SSE-optimised Mono 4 data type. Perhaps the most significant inclusions from this point of view, however, are the Code and Assembler Primitives, which allow developers to include low-level code within Synth Maker Schematics.
The Assembler component does exactly what it says on the tin: you write assembler opcodes into a text box and they get compiled into the low-level machine language used by Intel CPUs. This is definitely not for novices, and unsurprisingly, getting your assembler code wrong has the potential to crash Synth Maker. Note that not all x86 opcodes are currently supported; download the Component Reference guide from the Synth Maker web site for details.
Though it's not as basic as assembler, Outsim's DSP programming language is still fairly low-level, thanks to the designers' aim to make it compile highly optimised, SSE-compatible code. So, for instance, there are no if-then constructions, no integer data type, and no branching or sub-routines. Not being an experienced DSP coder, I can't be sure how restrictive these limitations will prove, but if they don't get in the way too much, I can imagine the Code and Assembler components making Synth Maker a very popular development tool. Even if you're happy to code all your DSP in assembler, the idea of having such a friendly test-bed to work in, and of having Synth Maker take care of the boring stuff such as I/O and preset handling, has obvious appeal (though a dedicated x86 assembler package would offer more debugging tools).
All Mod Cons
At the moment, there are more Primitives than Modules, though Outsim are continually adding further high-level Modules to the Synth Maker library as time goes on; the update to version 1.03, imminent at the time of writing, will apparently include at least 10 new ones. In any case, the current collection is easily enough to be getting on with for most purposes. For example, you can use simple oscillators that generate a single waveform, but there are also more sophisticated choices, such as a multi-waveform VCO-type unit, a Step LFO Module, a Wave Draw oscillator and a Wave Player. Likewise, if you don't want to go through the rigmarole of implementing your own filters from scratch, you can use the pre-built Moog Filter and State Variable Filter Modules.
All of the high-level Modules are useful learning aids, and a couple of mouse clicks reveals exactly what goes into them. One or two are surprisingly sophisticated, notably a Compressor that offers soft clipping, variable lookahead and both upward and downward expansion. The factory library also includes a fair number of utility Modules that take the donkey work out of tedious but necessary tasks such as implementing preset handling and loading files, so you can get on with the creative business of making new and wonderful sounds. Of particular note are the various input and output Modules, which make it straightforward to route MIDI and audio into your creations, and to hook their outputs up to ASIO or Direct Sound outputs.
If you want to get into serious low-level synth building, you'll need to get your head around the basics of digital signal processing (DSP). The audio signal flowing through your creation is represented by polyphonic and monophonic 'stream data', which is Outsim's term for a series of floating-point numbers that fluctuates at sample rate. For most synth-based schematics, you'd use Poly streams throughout, permitting multiple synth voices to be played simultaneously, before collapsing these into one or two Mono streams at the output. By contrast, a typical VST effect accepts two mono streams at its input and outputs two more mono streams, so the entire schematic would tend to be mono. Fortunately, you rarely need to worry about the difference, because any Module with a stream input or output (indicated by a tilde symbol in a grey circle) can connect to whichever type is going. Under some circumstances you can also use a special stream data type called Mono 4. This 'packs' four mono streams into a single stream in order to take advantage of the SSE instruction set in Intel processors, which in effect allows you to process four data streams simultaneously.
Other data types, such as Boolean and integer values, can be streamed as well, but most of the time, data that is not representing an audio signal is triggered. In other words, it remains constant until some event causes it to change, whereupon the new value is transmitted through the schematic. Typical examples of triggered data include MIDI messages and data generated by the user adjusting controls. Synth Maker can deal with an impressive variety of user input, including mouse clicks and drags, and the library includes some neat GUI-based elements such as the Wave Draw oscillator, where the user can create waveforms with the mouse.
I can't pretend that in the review period I became adept enough to create complex synth elements from scratch using only Primitives, but I am sure the faults lie with my understanding of DSP rather than Synth Maker 's implementation of it! Again, this is an area where more thorough documentation would help, although there are some good third-party guides to DSP available on the Internet. When I scaled down my ambitions to more modest ideas which involved modifying library Modules, I was able to get results, and never found it difficult to locate or manipulate the elements I needed. Within a couple of days of installing the program, I'd created my first VST Instrument. Provided you have added the right input and output connector types, this is unbelievably simple: select the elements you want to include, right-click and select Make Module, then click the new Module's VST icon. A simple dialogue box appears and you're ready to go. Next time I booted Cubase, my new synth loaded flawlessly and worked perfectly (well, as perfectly as my inexpert design would allow).
Unlike some applications, Synth Maker gives you complete freedom to decide how your creations will look, so in theory you should be able to disguise their Synth Maker origins if you want to. The factory Modules adopt a 'house style' which is functional and sober-looking, and if you want to change this, you have to do it from the bottom up, rather than the top down, as it were. Once you've created the high-level Module that you want to turn into a VST plug-in, hitting Ctrl+E allows you to edit its graphical interface, but only to the extent that you can resize the window and rearrange the various elements within it. If you want to change the appearance of an individual Module, such as a filter, you need to open up that Module, then select each individual control within that Module and access their Properties pages. From here, you can modify such things as the control's labelling, colouring and size, and select new bitmap graphics. This, again, is elegantly handled, but it does mean you need to think about how you want your knobs and sliders to look before you create your synth. If you later decide that you'd prefer faux-vintage knobs to the futuristic ones you started with, you'll have to change the lot, but happily it is possible to 'synchronise' Modules such that a change made to one applies to them all.
As you'd expect with any complex program that's only at version 1.0, there are a few rough edges, but not as many as you might think. I experienced a few crashes, but not enough to be frustrating, and as this article went to press, a new version 1.03 update promised bug fixes which may well have sorted some of those issues. Those who are used to a more 'nannyish', high-level modular environment may find that they need to take some care when designing Synth Maker Schematics, because the Modules often do nothing to protect you from yourself. For example, the default ADSR envelope Modules offer attack times down to zero, which can cause clicks and splats as audio signals suddenly jump to their full values, and in general it's all too easy to create designs that will clip nastily under certain combinations of parameter settings.
Synth Maker is an ambitious piece of software, and is so open-ended and sophisticated that it's hard to do more in a review than try to give a flavour of what it's like to use. What is abundantly clear, though, is that Outsim have sat down and thought very hard about how to improve on previous user-interface designs, and that they've succeeded. Even if you do little more than blindly connect inputs to outputs in the hope of coming up with something interesting, Synth Maker is a joy to use, and I'm glad that it exists! Now, what can I add to my envelope-controlled tremolo effect...?
- Superb, intuitive user interface.
- Provides ways to integrate low-level DSP code and assembler into high-level designs.
- Designed to create optimised code with a low CPU load.
- Makes it easy to create your own VST Instruments and effects that can run independently of Synth Maker.
- Would benefit from more tutorial material.
Synth Maker is an exciting prospect both for hobbyists and people who are more serious about developing commercial synths and effects.
£125; Personal Edition £65. Prices include VAT.