This is the second in a series of three articles road-testing SynthEdit, a shareware program that has become a major force in creating virtual instruments. With SynthEdit, you build your own software synth by connecting modules onscreen; the program (which runs on Windows) then exports the instrument in the popular VST plug-in format. Here's a recap:
From an implementer's perspective, there are four basic kinds of digital synthesizers.
Mathematical. These are synths based on simple mathematical operations—addition, subtraction, multiplication, and so on—of signals or numbers in lookup tables. That is all that is needed to build basic additive, frequency modulation, phase modulation, waveshaping, and virtual analog oscillator modules.
Delay-based. The ability to delay a signal by a fixed or variable number of samples, and to feed the delayed signal back on itself, is the basic technology in a slew of other kinds of synthesis: echoes, reverbs, flanging, and filters. Most notably, physical modeling synthesis usually requires delays.
Sample-based. Sampling involves recording a sound and then replaying the sound (or some part of the sound) at various pitches and speeds.
Analytical. Analytical synthesis involves recording a sound, analyzing its various components, and then using those components to generate new sounds. The analysis typically involves some kind of Fast Fourier Transform (FFT) to characterize the sound as sine waves at various phases and amplitudes. As CPUs have become fast enough to do these calculations in real time, more and more soft synthesizers have incorporated some kind of analytical synthesis.
Synthesizers are very often made with mixes of the different kinds of modules. In fact, one of the constants in synthesizer design for the last 40 years is that layering two sounds made from simple sound generators is often more effective and controllable than having a single all-singing, all-dancing sound generator.
Almost all analog mini-synths from the 1970s followed the basic design in Figure 1: The keyboard drives one or more voltage controlled oscillators (VCOs), whose output goes through a voltage controlled filter (VCF, which cuts out higher harmonics), and finally through a voltage controlled amplifier (VCA, which sets the output level). Voltage control allows the synthesist to alter the sound as it plays. The keyboard also triggers one or more envelope generators (EGs), which determine the volume and filtering of each note over time. Typically, EGs have four sections: Attack, Decay, Sustain, and Release. Typical analog synths had controls for vibrato and portamento (pitch glide between successive notes) as well.
Figure 1. This functional diagram, made in SynthEdit, shows
the signal flow in a classic analog synthesizer. The diagonal lines represent
control signals, whereas the horizontal lines represent audio signals. (Click
to enlarge.)This basic design spawned only fairly minor variations: one, two, or three VCOs; a slightly different selection of waveforms for the oscillators; one or two EGs; different filter characteristics; and so on. The trend-setting Minimoog had three VCOs, the ARP Odyssey allowed one VCO to sync against the other, the Oberheims had a 2-pole filter (brighter than the Moogs), and the Yamaha CS-80 let you mix in a sine wave at the fundamental frequency but filter out lower harmonics.
By the end of the 70s, the basic design was so entrenched that specialist chip makers offered cost-saving chips for VCOs, VCFs, VCAs, and EGs. Not only did the major vendors use the same basic design, they even used the same chips and circuits. The age of mini-synths with great character was dead, and most synths sounded much the same.
Though it followed the classic architecture, the Roland SH-3A synthesizer had a unique sound. Its VCO used a kind of organ circuit that split the note into five independently controllable octave partials: 32' 16', 8', 4', and 2'. (Following organ terminology, the pitches are referenced to the length of pipes on a pipe organ, from two feet to 32.) There was a little mixer for these partials, and each partial could have a slightly different waveshape: square, pulse, and sawtooth. Figure 2 shows how I chose to implement this in SynthEdit. For simplicity, I just used five oscillators. The higher oscillators are synced to the 32' oscillator.
Figure 2. View the basic signal flow of the Ricko-3A. (Click
to enlarge.)Analog oscillators have two characteristics. One is that they are often unstable; they drift out of tune, especially as the synth warms up. This effect is made worse if the resistor ladder on the keyboard has drifted out of calibration. The second is that the waveshapes produced by the oscillator often do not look much like the ones on the front-panel drawing—typically sine, square, triangle, and sawtooth.
To simulate the tuning drift, I wrote a little C++ module that allows each note in the scale to vary slightly from equal temperament and be closer to a well-tempered scale. That will make the synth ever-so-slightly out of tune when played with electronic instruments but probably more in tune when played with guitars.
To simulate the waveform variation, each partial can be sent though one of several waveshapers. That lets the synth make a sine wave a little more square, for example, or increase the gap in a sawtooth wave. Some VST synths use waveshaping as the central plank in getting their "sound." Download Mik Sybrandt's Wave 3 to try an example.
In Figure 3, we're starting to get closer to a real design. We now have two envelope generators, an LFO for vibrato, another LFO for the SH-3As "chorus" (pulse-width modulation) effect, and some panning effects.
Figure 3. With the basic signal flow in place, we add some
modulators to shape the sound. (Click
to enlarge.)I created these diagrams by taking SynthEdit screenshots and filtering out unneeded details. But it shows you the basics of using SynthEdit: you simply connect modules together. The SynthEdit user interface is mouse-based, and you just drag the mouse between the "plugs" on each module. We'll explore this in more depth in Part 3.
The final block diagram for a synthesizer is much bigger, because many other factors have to be considered: the ranges and response characteristics of sliders and controls, suppressing DC offsets, making sure that signal levels do not go so high that there is clipping, reducing anti-aliasing effects, optimizing performance, and so on. Getting these secondary factors right seems to be where skill and expertise come in.
My hardware SH-3A died a couple years back, after providing sterling service since the mid-1970s. But I had tapes of music played with it, and I was able to tailor the Ricko-3A to emulate at least those sounds. One essential characteristic, for example, was that the filter response did not track the envelope generator linearly; it was more exponential. That enabled the instrument to produce much sharper bass notes.
Probably the most fun part of the project was not recreating the SH-3A but extending it. For years I had many "what ifs" floating around in my mind. Now I could try them out and see how they worked. The simplest extension was to have different kinds of VCFs in parallel, with a strength control to fade between them. The full-left position produces a 2-pole filter, the full-right gives a 4-pole filter, and the middle sounds most like the SH-3A to me. Then, as I had hot-rodded my old SH-3A with a homemade flanger in the 70s, I added a flanger. I also added the ability to trigger the envelope generators from the MIDI clock signal, for "Heart of Glass" effects. And I added a way to adjust the partials from the envelope generator, which helps generate sounds that are much more like classic additive synthesis.
I found two extensions the most sonically interesting. One was merely adjusting the phase relationships between the five partials. Different harmonics are cancelled or emphasized, sometimes quite subtly, but the effect lets the Ricko emulate many more 70s tones. The other was to add a Scream knob which, when turned clockwise, sweeps the 16', 8', 4', and 2' partials upward toward 1'. That really brings out the sync effects on the oscillators and facilitates making many non-harmonic sounds, which allows the Ricko to sound more like an FM synth or an ARP Odyssey.
Because oscillators and filters use quite a bit of CPU in SynthEdit, I decided to restrict polyphonic operation to four voices. But the upside of this is that it allows better simulation of synths such as the Roland Jupiter 4 and the Oberheim OB-4.
SynthEdit also allows developers to create their own "skins," or graphical user interfaces (GUIs), for their instruments. The results vary from horrible to sublime but can be great fun.
For the Ricko-3A, I followed the general layout and colors of the original SH-3A, though without being slavish. The SH-3A had a nice, logical left-to-right flow that I kept; often VST synths are quite poorly grouped, which makes them difficult to operate. I used Adobe Illustrator to create the various images and Adobe Image Ready to convert them to PNG format for importing into SynthEdit. I had a photo of the SH-3A that I cut up and used for the borders of the GUI. Here is the background image:
For some knobs I just took the built-in SynthEdit knobs, or downloaded knobs that others had made available on the Web, and then adjusted the colors or decoration. For example, the sliders on the SH-3A have a little square inset that was easy to do:
In SynthEdit, assembling the GUI is straightforward, although tedious. You put all the graphic files for your skin in a new folder, and then in the Properties dialog box for the synthesizer's container you select that skin. Presto! All the knobs and backgrounds change accordingly. Much of the effort then is just lining up controls so they are correct. Here is the final GUI in all its glory:
So, what does the Ricko-3A sound like? Here are some examples.
SynthEdit is still a beta product. The product has great features, good stability, good sound, an excellent community, and a developer (Jeff McClintock) who is very responsive to bug reports. Nevertheless, documentation is lacking, in particular for some of the key concepts. Luckily, users have stepped into the breach, and there are some good third-party tutorials.
I only really had two difficulties with SynthEdit. Both ultimately came from difficulty in understanding how SynthEdit decides to make modules polyphonic or monophonic. Basically, SynthEdit traces forward along the incoming MIDI signal path and makes modules reachable along that flow polyphonic, but it also seems to trace backward from some modules to force monophonic operation. In one case I had an unused module that I thought was just dangling harmlessly off a signal path, and that module completely messed up the polyphony. McClintock was kind enough to look at the synth and found the problem directly. That was good service; however, SynthEdit needs better documentation in this area at least.
When I made the Ricko-3A, I also made six or more other experimental synths. The ease with which I could put together synths with unique architectures was a great delight. However, I have noticed that many SynthEdit newbies release as their first synthesizer a vanilla Minimoog clone with little novelty. I suspect that the proliferation of these, though they may be beautiful to their creators, has resulted in SynthEdit synths getting a reputation in some circles for being amateurish and same-sounding. But as always, it's what you make of it. I used the Ricko-3A on a remix of Bluebottle Kiss's "Ounce of Your Cruelty" for NonZero Records, and it was cool to be making a sound that no one else had made.
I hope you're getting inspired to try making your own synths in SynthEdit. You now have enough background to experiment, so download the program, and give it a go. Part 3 of this series, "Inside the Ricko-3A," is the under-the-hood part. I'll give more details on specific operation of the SynthEdit application, as well as the kinds of modules available. See you then.
|
Related Reading MAKE |
Copyright © 2009 O'Reilly Media, Inc.