In 2000 I published the book Digital Audio With Java, wherein I presented an architecture for processing sound with code written entirely in Java. In the framework I provided, you had to combine user-written code for sound processing and user interface with modules I provided for reading and playing samples. Once all of the code in the signal processing chain was available, audio samples were pulled through the sound processing functions and the results could be heard in real time.
That was then. Today there is SynthMaker from Outsim Ltd. SynthMaker provides the same type of functionality but does so in a completely graphical environment. With SynthMaker, you can prototype audio effects or build complete software synthesizers by graphically connecting various types of modules provided with the program and/or by writing modules one self. And SynthMaker is not limited to the digital signal processing side of the equation. SynthMaker allows elaborate user interfaces to be created with all of the switches, knobs and readouts your creations require for real time operation.
Once you have your audio application built, it can be tested and debugged directly in the SynthMaker environment by connecting up any inputs required and listening to the result on a direct sound or midi output. Various readouts and analyzers are provided that allow you to inspect signals along the signal path which is a real help in debugging. Once your application functions correctly it can be:
- Converted into a module and saved in the module library for use in building other modules.
- It can be exported as a stand alone application (EXE program) for use in the Windows environment.
- It can be made into a Virtual Studio Technology (VST) plug-in for use with most sound processing applications. (See "Resources" for information on VST modules and instruments.)
For programmer/musicians like myself, the third bullet is probably the most important aspect of SynthMaker. Without a tool like SynthMaker, creating custom VST plug-ins is a time consuming, tedious and error-prone process that takes the focus away from what you are trying to achieve -- the recording of music. In addition, you must have software development tools like Visual C++ to implement the plug-in and understand the Steinburg VST spec from top to bottom to build a plug-in that works.
Building your VST plug-ins with SynthMaker can save a lot of time and effort. For example, the other day I recorded a guitar part and wanted to use vibrato on it to give it an edge. I looked around at the plug-ins I had available and didn't find a suitable one. Later that night I started to think about the vibrato algorithm and the next day I created a VST plug-in that suited my purpose.
Other plug-ins I have created with SynthMaker include:
- Tremelo. Amplitude modulator with adjustable low frequency modulation and depth.
- Panner. Similar to a balance control on a stereo, a panner is used to position a sound source in a stereo sound field.
- Auto Panner. Using the panner module created for the effect above I created an auto panner which pans a sound source back and forth in the stereo field in a controlled manner. Here a low frequency oscillator (LFO) is used to control panning. A sin, triangle or square wave can be selected as the wave shape of the LFO. A depth control determines how far back and forth in the stereo field the sound source is panned.
- Stereo Width Enhancer. This effect affects the apparent width of a stereo sound source. A stereo signal can be reduced to mono with this effect or can be made larger than life.
All of these effect modules are available from Dr. Dobb's in this source code archive. The rest of this article is an overview of the SynthMaker concept and how it is applied.