Friday, April 4, 2014

Synth Edit 3 Osc Synth Tutorial - (Original publication September 2005 in Postunder Records Minimag)

Synth Edit 3 Osc Synth Tutorial

This tutorial is free and was written with lots of love by Faxi Nadu

When you play around with analog or software synths, they may seem mysterious and magical but in fact, most synths incorporate similar ideas and methods. If you udnerstand the basic ideas of synthesis, and the concepts behind synth design you can further enhance your skills as a musician. In this multi-part tutorial we will discuss the principles of synthesis while building our own vst synths. This tutorial assumes you have played around with synthesizers and know a thing or two about the "musical" aspect of synthesis.

To follow the examples and build your own you need synthedit. The current versions are available for a free demo and for purchase at

In this issue we will go right ahead and talk about various basic building blocks (and how they interact) of many common synth designs classified as "subtractive synths". A subtractive synth is called that because the sounds are achieved mainly by subtracting frequencies from a module called an "oscillator" using various techniques like filtering for example.

The original term "oscillator" was derived from analog circuits. When voltage is driven through certain electronic circuts it spins, meaning the current is swaying such that it produces audible frequencies. This spinning is called oscillation. In fact, all atomic structures have a set oscillating frequency, even the earth's oscillation (spinning) causes a resonance of 7.84hz (inaudible). The digital oscilators mimic this process and generate audible frequency tones. Right click on your empty project and go to insert. This brings up a sub menu with the various SE modules grouped by thier function. Go to waveform and chose oscillator. This will bring up an ocillator, and you now see the osc module on your project. Notice the various inputs and outputs labeled on the module. The inputs are used to control the oscillator's behaviour and the output passes on the audio results.

In order for our osc to know what frequency (pitch) to produce we need to connect the pitch inputs to something outputing values. If we are going to want to play notes using this oscilator then we will need to connect the pitch to a module that can recieve and pass on incoming midi data. Right click on your project and choose Midi to CV from the MIDI submenu. Right click once more, and choose midi in from the midi submenu. Drag the mouse to connect between the midi in's midi data output to the Midi to CV midi input and connect the pitch output of the Midi to CV module to the oscillator's pitch input. The oscillator will now be receiving notes (pitch) from your keyboard or external sequencer.

If we don't tell the osc when to start and stop playing, and for how long it will just make a continues tone without volume changes and without stopping. We want it to start each time we play a note and we want to be able to control how loud the tone is when we hit the key, while we hold it down, and after we let go. By being able to control these parameters dynamicaly we can mimick the way variousacoustic instruments and "natural" sounds change thier volume when we play them - for instance, a violin string's volume is slow to rise and slow to fall in comperison to a kick drum's sharp volume as it is hit and sharp drop back to quiet. right click on your project again and insert ADSR from the waveforn submenu. An ADSR is a type of envelope and is used to dynamicaly control various synthesis functions. When you route an ADSR to control a paramater you are essentialy giving it a "curve" that changes the value of the parameter . You define this curve using four points - Attach, Decay, Sustain, and Release. An aditional input called "gate" tells the evelope when to start running the curve and for how long, (in our case each time a new note is hit and how long the player is holding it down). Connect the gate output of the Midi to CV module into the gate input of the ADSR.

Now right click on your project and insert a slider from the controls submenu. Connect the slider signal out to the ADSR attack input. Insert 3 more sliders and connect one to decay, one to sustain and the third to release. The last input is for the overal level of the ADSR - in our case, it would be the overall volume of the tone. Insert an additional slider and connect it to the overall level input on the ADSR.

The ADSR in itself is just an envelope and is only used to control a paramater. For the ADSR to control the osc's volume we need to use an amplifier together with the ADSR. Insert a VCA from the modifiers menu. A VCA module stands for "Voltage Controled Amplifier" and it does just that - mimicking an amplifier. Connect the osc's audio out into the VCA signal input and the output of the ADSR into the volume input of the VCA. Your ADSR envelope now officialy controls the volume of your oscillator.

Right now, if you connect the audio output of the VCA module you got yourself a functional synth, but with a very limited range of sounds, and pretty limited control. Let's enhance this a bit by adding a filter module. A filters job is to receive an audio input and based on the filter settings output only some of the frequencies. The filter that we are goign to use is called a "low pass" filter. It works by letting only the frequencies to the left of the filter's "pitch" input pass to the output (most programs call it cutoff or frequency but techically it is also correct to call it pitch). The filter analyzes the incoming input and based on the design of the filter, audio is passed to the output while becoming softer in volume as it approaches the frequency at wich the knob is set at. This is called the filter's "slope". The filter module we ae going to use is called a "moog filter", implieing the slope is set to 24db per octave.

Go ahead and insert a moog filter module from the filters submenu. Notice the filter module itself has no volume input. The simplest way to control the overal volume of the synth without adding more modules, is to insert the filter before the VCA. That way, our "overall volume" slider on the ADSR will serve as a master volume for our synth. Disconnect the VCA's "signal" input from the oscilator. Connect the osc "audio out" to the filter's "signal" input, then connect the filter "output" to the VCA "signal" in. Now insert two more sliders (you can also highlight an existing slider module from your project and copy it - cntrl+c then paste it - cntrl+v). Connect one slider to the filter "pitch" and one to "resonance". Resonance, in a very simple manner of speaking, raises the volume around the value of the "pitch" slider. When you increase the resonance value, volume increases around the center frequency, but the higher the resonancse value is, the range of the area boosted covers less frequencies around the center. Some types of filters reach what is called "self-oscillation". It means that with the resonance value set all the way up, the filter produces its on audible tone, at the frequency of the "pitch" knob.

Lets take a minute to disccus the oscillator again. When we talked about oscillators, we mentioned that current driving through an electronic circut is the basis for the term. The part of the circut the electricity passes through to make the sound is called a "waveform". The elecricity would pass through these waveforms, flowing in positive to negative electronic waves and form repeating "cycles" of audible sound corresponding to the selected waveform. A cycle is essently one current pass through the waveform from positive electoronic values to negative, hence one crossing of the 0 value on the X axis of a wave editor is one pass. In fact, you can say any sound we know in nature has a waveform. If you take any sound, and analyse it in a wave editor, you will see it is built of waveforms - coming in many shapes and lengths and often changing in shape very rapidly. Longer cycles produce lower bass frequencies, and faster cycles produce high frequencies.
complex waveform

Oscillator modules like the one we are using useally allow you to choose between a number of simple "mathematical" waveforms. Many of these are traditional waveforms used every since synths have been around like the "sine", "square", and "triangle" for example. The names correspond to the shape of the sound as you would see it in a wave editor.

Notice on your oscillator module the green "waveform" input. In synthedit, green input are to be conected to the list entry module. Bring one out of the controls submenu and connect it to the osc's waveform input. You will notice that as soon as you connect the modules, choices of waveforms apear on the drop down menu of the list entry module. These are your choices of waveforms on this particular oscillator.

Right click on your project again and insert a sound out module from the Input/Output menu. Connect the VCA's output to the sound out's 1 and 2 inputs. Your synth should now be responding to incoming midi and all your sliders should function.

We got it to a point where it is functional, but various minor features can be added, greatly improving the synth's sound pallete and versatility. We will go ahead and make these improvements, and afterwards organise our synth's front panel, add our own background gfx and wrap it as a vsti instrument.

Ok. First thing, to make this synth have a wider, fatter sound let's add some more oscilators. Either copy and paste your current oscilator twice, or pull out two oscs from the waveform menu. Now copy and paste your waveform selector (list entry) from the first oscilator twice, and connect one to each of your new oscilator's waveform input. Also, connect the incoming midi pitch to the other osc's inputs.

We will now add an option to chose diffrent octaves for each of the oscilators. This will allow us to play broad layered sounds with each note we play. Go to the flow control menu, and drag out a module labeled switch (many->1). Now, from the controls menu drag out three slider modules. Connect all of these sliders to the switch module's spare input. Notice that as you connect each slider, a new spare input is opened. This way the switch module can be used for as many connections as desired, in our case three. Each time you connect, make sure you connect to a new spare input.

After connecting the sliders, right click on one of them and go to its properties menu. Change the "Title" to "0", Lo Value to "0" and change the "Appearance" from "Vert Slider" to "Button". This button will be the nuetral position of your octave selector, playing in the same octave as you play your midi notes. Now go to the second slider. Title it "+1", set lo value at "1", and again change the appearance to "Button". Setting the octave switcher to the "+1" position will play the oscilator at an octave above what your midi notes. Move on to the last slider, title it "-1", change lo value to "-1" and appearance to "Button". This position, as you probably guess already, will play the oscilator at an octave below your played midi notes. Right click on the switch module and go to properties. Name each choice slot according to the button attached to it. You can also title the switch "Octave" or something similar.

One more thing we need to do is go inside the switch module's properties, and label each input "-1,0,+1" according to the button attached to it.

We would like each of our oscilators to have its own octave selector. we can do this on our main project window by creating a set of buttons and switch for each oscilator. This way is perfectly fine, but in order to keep things neat, and to learn how to work with containers we will place the octave switcher we built inside a container. Right click on your project and insert a container from the main insert menu.

Highlight the switch and the three connecting buttons by dragging the mouse over them, or by clicking each one while holding the cntrl key. Once highlighted cut them (cntrl-x). Right click on the container module and go to its structure.

Paste (cntrl-v) the octave switcher modules in the container's structure.Notice that inside the container structure you have a small module titled IO Mod. This is the way the container recieves input and sends output to other modules. Connect the switch module's "output" and "Choice" to the IO Mod's spare input. Take care to connect to a new spare input, just like we did earlier with the switch module. You can now close the container's structure and go back to your main project structure.

Notice your container now has a "Choice" input and and output. Bring out a "List Entry" module from the "Controls" menu and connect it to your container's choice input. Notice how it automaticaly offers the 3 choices offered by the switch module: -1, 0, +1.

Now you can connect your octave selector container and choice to one oscilator, and copy/paste and then connect two more octave selectors for your other oscs. Notice that at this point we already have a lot more going on in our workspace than last month. You can start organizing it to keep it simple and effective for your mind and eyes like I have done in the next screenshot.

We can further enhance our control over pitch by fine tune control over each oscilator's pitch. By bieng able to detune one or more oscs we gain more control over the tonality of our synth as well as fatten it up further. Insert a slider from the controls menu and attach it to the first oscilator's pitch input. Right click on the slider, change title to "fine". The low and high values determine the range of the knob, in other words how much detuning is possible. You can experiment with diffrent settings, but usually low values are used. Set "Lo Value" to "-.01" and "Hi Value" to "0.1". Now make and then connect the same "Fine" sliders for your other two oscilators.

The last thing we are going to do in regards to pitch is add a pitchbender. Synth Edit has a ready made pitchbender module. Drag a pitch bender out of the controls menu and connect its output to the pitch input of all three of your oscilators.

Now that we have three oscilators, we surely would like to be able to control each osc's volume seperatly. Insert three VCA modules from the modifiers menu. Disconnect your first oscilator from the filter and connect each osc to one of the VCA module's signal input. Open three slider modules and connect one to each VCA's volume input. Now connect all threeVCAs to the filter's signal input.

On to the filter then! We are going to make an LFO and have it modulate the filter cutoff (pitch). LFO stands for Low Frequency Oscilator. It is an oscilator that outputs values swaying at different speads acording to the pitch of the oscilator, and affecting whatever it is attached to by a degree determined by a slider and a mulitplier. Lets make some sense into this by opening an oscilator fromt he waveform menu. connect a slider to the pitch input, enter the slider's properties and title it "Rate". In order for the LFO to function in the classic manner, we will need to limit the range of the rate button (the speed of the lfo). In one of the examples synth edit comes with, they set the low value to "-5" and the high value to "1". We will do the same as well, but these values can be experimented with.

Once done with that drag a list entry module from the controls menu and connect it to the waveform input on the oscilator. Insert a multiplier module from the math menu. Add a slider and connect it to the first input on the multiplier, right click on it and in the properties title the slider "Amount". Now connect your new oscilator's output to the other multiplier input.

Connect the multiplier output to the filter's pitch input. You now have the filter's pitch button controlling the cutoof frequency in a linear fashion and an LFO for creating variations in the filter's cutoff. When the amount knob of the LFO is turned all the way down, it is in its "off" position.

Just before we move on to setting up the panel, we are gonna add pulse width control and portamento. If you look on each of your oscilators you will see and input labeled "Pulse Width". Pulse width control on each oscilator is only enabeled when that oscilators waveform is set to pulse. When set to pulse, the width knob controls how wide each pulse cycle will be. Insert three additional sliders and connect one to each oscilator's pulse width input.

Portamento control allows for a synth to gradualy glide from one sent note to the next without actually defining the intermediate notes, rather than abruptly shifting to the new note when one is pressed. In Synth Edit portamento is easily achived. Just open up another slider and connect it to the portamento time input on the midi to cv module. When set to zero, there will be no portamento at all and the pitch will change normally from note to note. The higher the setting on the portamento knob the longer the pitch glide from note to not will be.

Whew! Done with the sound stuff for a bit. Moving on to the front panel layout. Right click on your project and chose "Panel Edit".

You'll see all your diffrent sliders and boxes in one big mess, with generally no way of knowing wich volume knob belongs to wich osc and so forth.

Start organising the mess by first going back to your structure and naming every slider with the apropriate oscillator or other component it relates to (in fact, in the future you should label each module with the appropriate oscilator set it belongs to as you work. Saves time and effort).. For instance, title the volume slider for the first oscilator "vol1" the second "vol2" and the third "vol3". Proceed and do the same with the fine, pulse width, waveform choices and octave selector for each oscilator as well. You can perhaps also rename the filter's pitch knob to something more familiar like "cut" to avoid cunfusion. After doing that you can then go back to the panel window and start grouping related sliders and boxes. Right click on any of your sliders. Looking in the Appearance list you see there are various choices of graphics and typs for your slider. Buttons and sliders do diffrent things, but you an change the slider appearance to a knob, small knob or other type of slider. Choice of slider gfx is really up to you. You can leave it all as it is, use smaller knobs for lesser used functions such as pulse width, change all to small knobs , etc. I will use vertical sliders because they react in a simple, predictable up-down fashion - but it is really up to you.

In order to wrap your synth as a vsti plugin you need to first select by draging and highlighting with your mouse the entire structure of the synth (all the modules on the structure window). Then, with everything highlighted you go to the main edit tab on the top bar and chose "Containerise Selection"

Right now alll you will see on your main structure is your synth container. Right click on it and go to the structure. All of your modules are in there, but you will also see a new module inside your container called "IO Mod". You have already seen this when we built containers for our octave selectors. What we will be doing in a minute is wrapping the container as a vsti instrument. This IO Mod serves as the means of communication for the between the vst host program and the synth, so we need to disconnect and delete the "Midi In" module and "Sound Out" module from our project. Connect your main VCA to the spare of the IO Mod, and the midi in from your Midi to CV to the 2nd spare that opens up.

Don't forget to give your container a name (right click, properties, title). This name will appear in your vst host program when you insert the instrument in a channel. It is also very important you size your panel window neatly around your synth. Whatver you see in your panel window is exactly how the synth will look in your vst host program. Four pictures back is how it should be, and following is how it should not:

Go to the main File menu and chose "Save As VST". You will get a menu with some fields to fill out: a name for your synth, the actual *.dll filename, vst identifier, specify if the plugin is a synth or effect (vst or vsti plugin, in our case vsti), and you can also add some comments in the info field.

Press OK when you are done, and that's it! Your synth is exported as a vst plugin. (Synth Edit may give you an error saying it can't find the directory. If this is the case go to your synth edit folder and create a folder called "vstplugins"). Copy your *.dll file to your vst host's vst plugin folder, and you are ready to use it.

You now know how to use synth edit and build most of the basic chains involved in moduler patching. You can try yourself to improve this synth - build another LFO and attach it to pitch, build an ADSR for the filter, add 17 oscillators - possibilities are endless. Try out and have fun.