I can hear those of you who have never heard of an All-Pass filter thinking “hang on a filter that passes everything? What possible use is that, how can this be a filter?” Well they are very useful items. They do indeed have an almost flat frequency response (see below), and technically they are a filter when connected up in the correct manner.
But if we put a 1kHz sine wave through the filter, and compare the output with the 1kHz tone direct from the oscillator something is happening to the signal passed through the filter:
Now we change the filters “pitch” control (below)
You can see that the phase of one signal has changed with regard to the other, so although the frequency response is flat, the phase of the signal passed through the filter is changing with frequency. This is useful, it will create a well known musical effect for us, the phaser. A phaser is quite a simple effect to create.
Creating a phaser in Synthedit:
If we connect an All-Pass filter to a noise source, then mix the direct noise signal with the signal passed through the filter you can see there’s a pronounced dip in the signal level at roughly 1kHz. This is where the filter has shifted the phase by 180 degrees relative to the input, so when the signals are added in the Level Adj module we get a cancellation effect causing a “notch” at that frequency.
Adding a second filter in series
By adding the second filter we get a second notch, at roughly double the frequency, so we can change the sound once again just by adding a second filter coupled to the first.
The resonance control adds a degree of feedback into the filter module.
Two stage Phaser for SynthEdit.
The structure below gives us a Phaser module like you might find on a guitarist’s pedal board. Adding the TD LFO A allows us to automatically sweep the notch frequencies up and down at a rate set by the speed control, and a frequency range set by the sweep control. The mix control on the X-Mix control allows us to go from the “dry” unfiltered signal through to the fully filtered “wet” signal. The LFO type on the TD LFO A is set to “triangle” which is the sweep waveform on most phasers, and the modify plug has a value of 0 Volts to give us the triangle shape. The speed slider can be set to a minimum of 0.01 volts, and a maximum of 5 volts giving a useful LFO range of 0.01Hz to 5Hz. Note: The All Pass filter module has two frequency to control voltage settings: 1 V/Octave and 1 V/kHz. The latter 1 V/kHz is perfectly good for a phaser, and uses less CPU power. Note: When you connect two All Pass filters in series, you won’t create a deeper “notch” effect, as the second filter adds it’s own phase shift onto the shift introduced by the first filter, hence you get a second notch at a different frequency, and by adding a third filter we get yet another new notch frequency. Adding filters always adds new notch frequencies.
Getting a better “resonance” sound from a SynthEdit phaser.
However the resonance control as it stands, won’t sound quite right due to the way synthedit handles feedback, but we can remedy this by adding a peak filter like so with its control voltage to pitch response set to 1 V/kHz and a variable resonance control added instead of being connected to the second phaser stage. The resonance we get when the SV filter is set to single stage band pass will sound much better than we can ever get from the stock All Pass filters.
The idea behind this is that you can step through the options (for example) of an oscillator with just a single button rather than using a drop-down list box. Once the prefab control is put together it’s self configuring apart from the text label, and text colours. The list is taken from the module you connect up to.
How to step through a list with a single button in SynthEdit.
The idea here is that when we click on the button (Image2) module, it sends a “True” pulse to the ED Step Increment Int module, which connects to the PatchMemory List3 module. The PM List3 module reads the list of options from the DSP module (for example an Oscillator) it’s connected to and converts this to an Enumerated List For the List to Text and ED Step Increment Int module…(this makes life easier…less typing, and less opportunity for errors creeping in). Each time the ED Step Increment Int module receives a True pulse on the Increment plug it advances one step at a time through the list of options by advancing the Integer count by one step. The DAM list size module is used to inform the ED Step Increment Int module how many steps there should be, but for some reason I found you need to subtract 1 from the list co get the correct size. The two ED Text entry modules are used to display the selected value, and add a label to the control. Note: The Wrap option on the ED Step Increment Int module module should be set to “True” by selecting this on the options panel, then we can cycle through the list forever… Note: The RH-Int-Redir module is needed to connect up the ED Step Increment Int module and the List to Text module due to the Outputs being on the LHS of the ED Step Increment Int module… The List to Text module sends the Text name of the option selected to the Text Entry4 module where the selected option is displayed in the text box. If you want to cycle the other way, just send the Boolean pulse to the Decrement plug, it’s as easy as that. Note: If you want to make the Text label into a “click to select” connect the Increment plug on the ED Step Increment Int module module to the Mouse Down plug on the Text Entry4 module, and then you can step through in the same way by clicking on the text box.
Connecting up and using the prefab is easy, as you can see below, as I said the list is automatically generated when you connect the Switch to the Modules “List” plug.
Why have separate control panels? Sometimes when we are designing a Synthesizer, we can end up with a very complex, if not outright cluttered and confusing control panel (we have all seen examples of those!). Wouldn’t it be great if we could have separate control panels for different functions, such as a sequencer panel, an effects panel, etc. Well the good news is that we can, and it’s not over complicated either! Not only this anyone who uses your plug-in will thank you for it too.
How to have separate panels-the push button route.
With a few sub controls we can switch between control panels using a stepper controlled by a single button. Each switch is connected to a Bools to Int module via an QTN_Volt2GUIBool. This module converts as DSP voltage to a GUI Bool signal. When a button is pressed it sends a momentary “True” to the Bools to Int module, which the outputs an integer which corresponds to the plug receiving the pulse. Bool Val 1 outputs a 1, Bool Val 2 outputs a 2 and so on… This is then converted back into individual latched (that is it’s held at “True” until a new integer value is received on the Value plug) Boolean outputs to the integer value received.
Note: When designing this sort of panel switching we need to be disciplined, and give plugs appropriate names wherever possible (annoyingly you can’t rename the plugs on some modules!) otherwise things can rapidly become extremely confusing, and difficult to de-bug.
When this is connected up as shown below, we can switch between the individual panels by clicking on the appropriate button. Each individual control, or panel must be inside a container of it’s own for this to work properly. Note: switching these panels on and off is only visible in the panel view when the audio engine is on, and not in not the structure view, where all the panel containers will be visible.
Admin note: Updated 03/02/24 to reflect changes in the Elena Designs module pack (dsp-gui modules removed).
This module takes the MIDI input and converts it to control voltages for controlling and programming SynthEdit’s DSP (Audio/Voltage) modules. It has Gate and Trigger outputs for triggering ADSR envelope generators, Pitch control for Oscillators and Filters, along with Velocity and Aftertouch for Filters and Amplifiers. Aftertouch is not supported by all MIDI Keyboards, so don’t be surprised if it doesn’t work in your MIDI setup: Check your handbook/Help files for your keyboard before doing too much bug checking!
Important notes about MIDI-CV2 module and its use.
Warning: Never place the MIDI-CV 2 module in its own container, this will lead to incorrect notes being played, as each new note is played the note pitches will jump progressively higher. It should always be in your main Synthesizer container.
Patch Mem and MIDI-CV2. The MIDI-CV2 module is a type of Patch Memory module, do not try and use it connected directly to any Patch Memory modules. You will end up with a serious data conflict.
Example of incorrect use of MIDI-CV2.
This is likely to cause all sorts of headaches at a later stage. If you want to separate the Pitch CV and ADSR triggering you should use the MIDI to Gate2 module as shown further down the page… Warning: in some cases using MIDI-CV2 in this way can cause SE to crash and close down immediately when the audio engine is started-you have been warned.
The correct method. The ADSR2 should be triggered by a MIDI to Gate2 module to eliminate potentially odd feedback errors cropping up.
The MIDI-CV2 Module and it’s plugs.
Plugs: Left Hand Side: -> MIDI In:- (MIDI) The MIDI input data which is converted to Voltages for SynthEdit to use. -> Channel:- (List) Selects which MIDI channel the module will “listen” to. The options are All, or 1 to 16 exclusively. The default is “All” This can also be set in the Properties panel.
Right Hand Side: <- Trigger:- (Voltage) Outputs a short pulse of 10V for triggering the attack section of an ADSR module, or for synchronizing with a key press. <- Gate:- (Voltage) Outputs a voltage (10V) for as long as a key is held down. <- Pitch:- (Voltage) Converts the MIDI note value to a voltage suitable for controlling the pitch of Oscillators and Filters. Uses the standard synthesizer value of 1 Octave per Volt. <- Velocity:- (Voltage) Outputs a voltage proportional to how “hard” the key is hit on the MIDI Keyboard on a scale of 0 to 10 Volts. <- Aftertouch:- (Voltage) Outputs a voltage proportional to the Aftertouch on the key being held down (pressure applied to the key while being held down if your MIDI Keyboard supports this).
About MIDI Polyphony and Synthedit.
Controlling the MIDI Polyphony is no longer handled by the MIDI-CV module, but is controlled by the dedicated Polyphony Control module. The Polyphony module Provides overall control of Polyphony in your synthesizer- how many voices (notes) the synth can play at once. The greater your polyphony, the more keys you can play at the same time, this is usually deliberately limited to control the amount of CPU your synth can use. 8 to 32 voices is a typical amount. Note: This module must be in the same container as the Polyphonic modules that you are controlling. Note: Never connect any Patch Memory modules to the Polyphony Control module, it is already a type of Patch Memory module. Note: Due to the way the module works the glide setting cannot be retained in any patches saved for your Synthesizer. Warning: Do not have effects modules in the same container as a Polyphony Control Module, this will cause excessive CPU consumption, clicking, glitching and may cause crashes. The correct structure is shown below, this method means that the effects (which should not be Polyphonic anyway) are kept separate from anything Polyphonic and will not be driven into excess CPU usage. If you have Reverb, Delay or Chorus in a Polyphonic container CPU use will go crazy.
Plugs: Note: all the Integer plugs have a counterpart Text plug which are all named Item List, these are to enable connecting the Integer plug to a List Entry Module. <->Polyphony:- (Integer) – How many notes can sound at any one time. Range = 1 to 128. <->Polyphony Reserve:- (Integer) These are the extra voices that usually remain unused. The point of Reserve Voices is to reduce clicking during voice-stealing. In the event that all the regular voices are used up, these temporary extra voices (this is what Voice Stealing means) allow for new notes to play while SynthEdit quickly fades-out some voices for recycling instead of just abruptly ending the notes. 3 to 8 reserve voices are usually sufficient (depending on how many notes you might trigger at the same time). <->Voice Stealing:- (Integer) Controls how voices are recycled. There are three options: Soft, Hard, or Overlap
1) Soft;- Voices are allocated in a ’round robin’ fashion (e.g. 1,2,3…). When you play the same key repeatedly, then the same voice is recycled (e.g. 1,1,1..). Soft-stolen envelopes do not hard-reset to zero but start from current level. This give a feel somewhat like a monophonic synth where repeated notes fade very smoothly into each other. Not suitable for sample-based instruments because it will cause clicks during note-on events. 2) Hard;- Voices are always allocated in a ’round robin’ fashion (e.g. 1,2,3…). When you play the same key repeatedly, the previous voice is faded out very quickly. 3) Overlap;- Voices are always allocated in a ’round robin’ fashion (e.g. 1,2,3…). However, when you play the same key repeatedly, the previous voice is faded out slowly. This allows repeated notes to build-up in intensity somewhat like a real piano for example. The disadvantage is that this mode uses more CPU than the others. Not realistic on monophonic instruments like bass, as it will tend to muddy the sound and will probably cause flanging effects on samples.
->Mono Mode:- (Boolean) When enabled (True) only one voice can be played, like a monophonic Synthesizer. Best for traditionally monophonic instruments like Bass. Not suitable for sample-based instruments because it will cause clicks during note-on events. Note however you can use polyphonic mode with Polyphony set to “1” to restrict a sampler to a single voice. -> Mono Retrigger:- (Boolean)Affects how a mono instrument responds to legato (overlapping) playing when in Mono Mode. With Mono Retrigger enabled (True) you will hear envelopes retrigger for a distinct attack on all notes. Without retrigger, legato notes will glide smoothly into each other (soft-stealing). -> Mono Note Priority:- (Integer) This has three options: Off, Low, Hi, Last In mono mode when two notes are Played, this controls controls which note played will sound. -> Glide:- (Floating Point) The value of this control sets how fast note pitches glide in Mono mode. Also known as portamento. The range is from 0 to 10. -> Glide Mode:- (Integer) Selects between two options; Legato, Always. In Mono Mode this controls what playing style causes notes to glide. -> Bender Range:- (Integer) Controls the amount of pitch variation that is sent by the Pitch Bend wheel. -> Voice Refresh:- (Integer) Has two modes; Enable, Disable. Voice Refresh periodically ‘wakes‘ each voice. The purpose of this is reduce clicks which may occur under the following conditions: You change the setting of a filter (or other recursive module) while not playing a voice, then play the voice. The click can happen when the voice ‘wakes up‘ and suddenly updates the filter settings (which can cause a click). Under some conditions Voice Refresh can consume too much CPU, so this pin allows you to disable it
WARNING: For backward compatibility Polyphony control module will not work if your MIDI-CV is an older version and has pins like Mono-mode, Poly Mode, Retrigger, or Mono Note Priority pins connected.
This module provides control of the Oversampling rate for your Synthesizer or effects VST. Note: This module only works when inside a container. The oversampling rate is set by connecting a list entry control to the module. This controls the sample rate at which the Container processes audio. This figure is expressed as a factor relative to 44.1kHz (which is a typical sampling/processing rate). For example if you select 2x oversampling, the Container will process at a minimum of 88.2kHz.
Plugs. <-> Oversampling: (Integer) Controls the sample rate at which the Container processes audio. This figure is expressed as a factor relative to 44.1 kHz (which is a typical standard rate). For example if you select 2x oversampling, the Container will process at (at least) 88.2 kHz. The options are: x2, x4, x8, x16, and x32 Note: If your soundcard is already running at 88.2 kHz or higher, 2x oversampling won’t have any effect because SynthEdit takes this to mean that you are already processing at twice the ‘standard‘ rate. If the Soundcard is set to run at 88.2 kHz SynthEdit will only apply additional oversampling if you select 4x, 8x or a higher oversampling rate… <-> List Items: (Text) Supplies the list of rates to choose from. <-> Oversampling Filter: (Integer) Receives your choice of filtering. <-> List Items 2: (Text) Supplies the list of filters to choose from: 3, 5, 7, 9, FIR Low, FIR Med, FIR High, FIR Ultra.
Oversampling Filter options: 3, 5, 7, 9, FIR Low, FIR Med, FIR High, FIR Ultra.
About the Oversampling Filter:- This option Controls the type of filter used to down-sample the audio as it exits the oversampling container. A value of 5, 7 or 9 will select an IIR filter with the corresponding number of poles (more is better). These types of filters have low latency, and low CPU but introduce phase-shift into the signal. A value of FIR-low, FIR-Medium, FIR-High, or FIR-Ultra will select a FIR filter. These filters are very clean and high-quality but do introduce some latency. FIR-Ultra is the best quality. Oversampling Filters: ( [3,5,7,9] Elliptic IIR Filter, [13-low, 14-med, 15-hi, 16-ultra] FIR Adaptive Quality, [20+] FIR actual taps) Important Notes about Oversampling: Note: Oversampling filter increases the CPU load by the same factor as the oversampling multiplier, this means x8 oversampling means the workload for the CPU is increased eightfold. Note: Changing the oversampling rate causes a short interruption to audio processing while the oversampling filters are inserted into the signal flow. Note: DO NOT connect a Patch Memory module to the Oversampling Module it will cause some very unpredictable and undesirable results..
About FIR Filters.
In signal processing, a finite impulse response (FIR) filter is a ‘filter whose impulse response (or response to any finite length input) is of finite duration, because it settles to zero in finite time’. This is in contrast to infinite impulse response (IIR) filters, which may have internal feedback and may continue to respond indefinitely to an impulse (usually decaying). The impulse response (that is, the output in response to a Kronecker delta input) of an Nth-order discrete-time FIR filter lasts exactly N + 1 samples (from first non-zero element through last non-zero element) before it then settles to zero. FIR filters can be discrete-time or continuous-time, and digital or analogue.
Example: A whole plugin is running at 44.100Hz, but you want to decrease aliasing created by distortion. So you containerize just the distortion module and add an Oversampling Control to that same container. Now, only the distortion part will be processed at double standard rate (88.200Hz, which will create less aliasing) and then filtered back to the original SR for further signal processing. Note: There should be only one Oversampling Control per container, and it works “remotely” without any audio patch cables connected to it. It has two properties that you can access by selecting the Oversampling Control’s parent container and checking the Properties Panel
About Oversampling:
In signal processing, oversampling is the process of sampling a signal at a sampling frequency significantly higher than the Nyquist rate. In theory, a bandwidth-limited signal can be perfectly reconstructed if sampled at the Nyquist rate or above it. The Nyquist rate is defined as ‘twice the bandwidth of the signal’. Oversampling is capable of improving audio resolution and signal-to-noise ratios, and can assist in avoiding aliasing and phase distortion by reducing anti-aliasing filter performance requirements. A signal is said to be oversampled by a factor of N if it is sampled at N times the Nyquist rate. For example, we have a system with a Nyquist limit of 44kHz, but it’s actually sampled at 88kHz, then it would be oversampled by a factor of 2 so if the sample rate is taken up to 132kHz then we are oversampling by a factor of 3.
Why oversample? There are four good reasons for performing oversampling: 1) To improve anti-aliasing performance (the higher the sample rate, the lower the level of the aliasing by products) 2) To increase audio resolution 3) To reduce background noise levels 4) It’s much easier to reduce aliasing distortion during sampling than after the sampling process (reducing aliasing after sampling is almost impossible to do without affecting sound quality adversely). Oversampling and Anti Aliasing. Oversampling makes it much easier to design and create analogue anti-aliasing filters. Without oversampling, it is very difficult to create filters with a sharp enough cut-off necessary to maximize the available bandwidth without the audio exceeding the limitations of the Nyquist frequency limit. By increasing the bandwidth of the sampling system, design considerations for anti-aliasing filters may be made simpler. Once the signal has been sampled, the signal can be digitally filtered and then down-sampled to the required sampling frequency. In modern digital circuit or DSP technology, any filtering systems associated with the down-sampled audio are easier to put in place than an analogue filter system that would be required by a non-oversampled audio design.
SynthEdit Oversampling in action. Its as simple as this, just connect these modules up like so inside the container, and welcome to the world of Oversampling. No further connections are needed.
A Prefab is a SynthEdit file that can be inserted into a project like any other module. Prefabs are simply a container with other modules inside, already connected up to perform a specific function, they are ideal if you have a complex (or simple) structure you have created that you know you’ll re-use over, and over again… if you save it as a Prefab it’s there ready to use whenever you want it. SynthEdit comes with some pre-built synthesiser and effect prefabs ready to use.
Hint: If you create a Prefab Sub-Folder in your SynthEdit Projects folder and store your Prefabs in there, separate Sub-Folders according on the function of the prefab, they will show up in your Modules panel. If you have control or waveform related Prefabs, and you use these names for the Folders, they will show up in those folders in the Modules Panel…choose your folder names wisely. Controls, Effects, Filters, Modifiers, Sub-Controls, and Waveform are all good choices… not only this, but if you create your own folder names for the Prefabs, then you’ll be saving them in your own categories (just be sure to choose a folder name not already used by synthedit if you want a unique category)
Prefabs are a great time saver when building complex Synthesizers, or you have a complex module you are going to use frequently. Or even a complex module that you had a hard time getting to work as you wanted (Don’t forget to include a read me file with it, you’ll thank yourself later!) An example of a Prefab and internal structure is shown below. This is a relatively simple example, but one I use frequently. To open a container just double click anywhere on the container module. All Prefabs will have two IO Modules, one for Input and one for Output. If you want to add more inputs and/or out outputs, just create a connection from the desired plug to the “Spare” in on the relevant IO Module. To save the Container/Structure as a prefab just right click, go to More… in the menu and select “Selection to Prefab”, then a “Save As” dialogue box will open allowing you to choose a folder (or create a new folder), and save the prefab with your own unique name (do not use a name already in use by an existing module).
This is a method of creating a combined control for a coarse and fine voltage setting. It’s quite simple and uses the newer Vector controls. This is the finished control (Sorry that flashy looking knob in the centre is V1.5 only but the principle will work with the plain Vector Knob B in V1.4)
How it looks using Vector Knob B in V1.4
This is the structure below (Inside a container). We are just taking the Animation position of each vector control through a PatchMemory Float 3 to convert it to a DSP float value, this will later be converted to Voltage for DSP modules. The PatchMem connected to the vector ring has its maximum value set to 1 so that we get a range of 0 to 1 for this control, and 0 to 10 for the Knob C. The two values are added together using an ED Add (Float) module, and converted to Volts for controlling DSP modules. This means we get a total range of 0 to 11 for the control (shades of Spinal Tap), so by setting the Knob C’s PatchMem to a maximum of 9, we go back to our usual default of 0 to 10 volts. All you need to do once its working is to create a panel view, size and line up the two controls then lock the container view and save as a prefab control. This enables us to use the main inner knob as a coarse 0 to 10 control, and the outer ring as a fine 0 to 1 control (or any range you wish)
Changing the control ranges:
Changing the ranges for the inner and outer controls is as easy as setting the Max and Min values in the properties panel. This is set up for 0-to-1 for the outer ring, and 0-to-9 for the knob, giving an overall range of 0-to10 Volts out.
A ring modulator multiplies two audio signals together to create two brand-new frequencies which are the sum and difference of the input frequencies. What does all that mean, though?
A ring modulator is basically a VCA with a special modulation input. On a normal VCA, you want complete silence when there is no CV, so it won’t let any carrier signal pass when the modulation signal is 0 (or below). Negative modulation signals are just ignored in a VCA. But in a ring modulator, on the other hand we want it to pass the carrier when the modulation signal goes negative as well (see below). For this reason they are also known as “Balanced Modulators”
This makes Ring Modulation different from the modulation we get from a VCA because it also has the added effect of cancelling the carrier frequency from the output signal, leaving only the sum and difference frequencies. The frequencies from both the carrier (Input 1) and Modulator (Input 2) are not present at the output of the ring modulator, but two new signals (sidebands) will be generated at the difference and sum frequencies for the two inputs. The more complex the frequency spectrum of the modulator signal, the more sidebands that will be produced. What does it sound like? Well just think of the classic Dalek “Exterminate” from Dr Who…that’s a normal voice passed though a ring modulator with a 30Hz sine wave, you can also create bell like sounds and some really otherworldly discordant sci-fi film type effects.
Comparison of Ring Modulation and Amplitude modulation at various frequencies.
1 kHz Modulator 3 kHz carrier. Note how the 3 kHz signal has disappeared from the ring modulator’s output, and two new frequencies (AKA Sidebands) have appeared these are; 3 kHz – 1 kHz = 2 kHz, and 3 kHz + 1 kHz =4 kHz. However the Amplitude modulated signal still contains the 3 kHz carrier, and more sidebands on to of the 2 kHz and 4 kHz.
2 kHz Modulator 3 kHz carrier.
3 kHz Modulator 3 kHz carrier.
4 kHz Modulator 3 kHz carrier Note: This set of spectra looks odd, 3 kHz + 4 kHz = 7 kHz, is fine and it’s present which is OK. But where has the seemingly unrelated 1 kHz sideband come from? well 3 kHz – 4 kHz = -1 kHz, and a negative frequency just isn’t possible – so it gets “reflected” back from 0 up to 1 kHz. This always applies if the result of the carrier- modulator equation results in a negative number. (Well as far as we know negative frequencies don’t exist… and if they do I don’t want to think about the implications or the physics, it makes my head hurt!)
5 kHz Modulator 3 kHz carrier.
As you can see from the frequency spectrums above, the 3 kHz carrier is never present in the ring modulators output signal, but is always present in the amplitude modulators output. Note: When the carrier and modulator are at the identical 3 kHz frequency there is only one 6kHz signal present in the spectrum, this is because 3 kHz + 3 kHz = 6kHz, however (you can probably guess this) 3 kHz – 3 kHz = 0 Hz. This is obviously DC so we can ignore this in fact we really don’t want it, so to prevent any DC in the output, not to mention any LF growls, rumbles or cross-mod it’s a good idea to put a high pass filter in the output at say 100 Hz cut-off frequency.
Using the Synthedit Ring Modulator.
There are already a choice of some Ring Modulator SEM’s. This is a complete module using the stock SynthEdit SEM. We can make a quite good Ring Modulator unit with just a few other modules added on. 1) The standard container module with an Input IO Mod and an Output IO Mod. 2) Add an internal Modulation oscillator using an Oscillator with a Tuner Module. Connect the Pitch control Plug to a Spare plug on the Input IO Mod. This is so we can control the modulation oscillator using either the keyboard, or some other control voltage source. 3) We switch the Modulation source from internal to external using a Switch Many ->1 module 4) In the properties panel rename the Two Input plugs, we have used “Internal” and “External” so we get a meaningful choice in the List Box. 5) Feed this to the Input 2 of the Ring Modulator, and connect Input 1 of the Ring Modulator to the Spare plug on the Input IO Module. 6) Connect a Level Adj module to the Output plug of the Ring Modulator using Input 1, and a Slider Control to the Input 2 of the Level Adj Module. 7) Select the Slider Control, and in the Properties panel give it the name “Output level”, and a Maximum value of 20. This is to compensate for the output of the Ring Modulator being a lower signal level (±5 volts, instead of the usual ± 10 volts).
Comparing the SE Ring mod and the TD Diode Ring Mod.
As you can see below there’s a noticeable difference in the frequency spectrum from the two Ring Modulators, the standard SE gives a cleaner harmonic spectrum of the sort you would get from a modern Balanced Modulator chip, and the TD_RingmodDiode module has a “dirtier” frequency spectrum like you would get from a diode modulator with it’s inherent distortion. For those with an electronics background the diode modulator will have a region of voltage where the diodes are not conducting (0 to +0.3 Volts for Germanium diodes, and 0 to +0.7 volts for Silicon diodes) so there will always be a small portion of the audio that is not passed through the modulator causing a small amount of a “crossover” type harmonic distortion.
Phase Distortion Synthesis was pioneered by Casio in the 1980’s and is based on the idea of distorting the playback phase of a sine wave.
Phase distortion synthesizers like the Casio CZ-1000 are characterized by a very clean sound, similar in some cases to the Yamaha DX-7. The Casio’s 8-stage envelopes for Pitch, Wave shape, and Amplitude were superior to most synthesizers at the time. The main drawback of the Casio was a lack of velocity sensitive keys. Of course with SynthEdit, you can use the Velocity output of the MIDI to CV module to improve the playability of the Casio sound. Vince Clark (of Erasure) used a rack full of Casio-CZ’s to achieve a “fat” sound. Now you can too!
How the Casio PD synthesizers worked.
Casio’s method of Phase Distortion used oscillators which generated modulator and carrier waveforms, which were synchronized to each other. The modulators were various wave-shapes that could ‘distort’ the carrier’s sine wave into other shapes, to a degree derived from the Digitally Controlled Wave (DCW) envelope. In doing so, many harmonics were created in the output. As the modulators were rich in harmonic content, they could create spectra more linearly, i.e. like traditional subtractive spectra, rather than emulating Yamaha’s phase modulation (PM/FM) synthesis. Yamaha style PM does not require oscillator sync but is usually limited to sine waves, which meant that the output audio spectrum bears the non-linear structure of Bessel functions. PD is a different type of PM – whose different modulation system caused significant difference in operation and sound between PD and PM. Thus the two methods are significantly different. The phase transforms were assembled from piecewise linear functions under binary logic control and show the characteristic sharp knees (and for some transforms, even sudden jumps) as they move from minimum to maximum, where the frequency counter’s accumulator wraps around and starts over. The sharp knees are smoothed by the roundness of the modulated sine wave and not too noticeable in the resulting audio signal.
Recreating Phase Distortion synthesis with SynthEdit.
SynthEdit has a Phase Distortion Oscillator module that can be used to recreate that classic sound. The Modulation Depth input controls the amount of distortion, with Zero Volts giving a pure sine wave and 10 Volts giving a fully distorted wave. The example below shows the effect of progressively increasing the amount of phase distortion when Wave 1 and Wave 2 are both sine waves. Wave 1 is the main (carrier) oscillator and Wave 2 is the modulating oscillator for the Phase distortion.
There are 8 different wave-shapes to choose from, and you can select different combinations of the two waves-shapes. The Phase Distortion Oscillator module is used slightly differently from the standard voltage controlled oscillator.
The wave-shapes available are: (with the addition of “none” for Wave 2)
The diagram below shows a typical Subtractive Synthesiser voice containing an oscillator, VCF and VCA sections. The Filter and Amplifier sections are each modulated with a envelope generator (ADSR) , one to control the Volume, and one to control the filter cut-off frequency.
Here is how you can achieve a similar result using the Phase Distortion Oscillator module, with one ADSR modulating the Phase Distortion level, and the second the Audio output level.
There is (usually) no VCF section, instead the ADSR that would have modulated a filter is connected to the Phase Distortion Oscillator’s Modulation Depth input plug. This gives a sound very somewhat similar to traditional subtractive synthesis, but without the need for a filter. Of course if you want to add a filter into the mix there’s nothing stopping you (Hybrid Synthesis).
A simple Phase Distortion Synth constructed in SynthEdit.
The basic synthesizer is quite a simple arrangement of a PD Oscillator, two ADSR modules and a VCA, but it can be made as complex as you like with more oscillators, (plus filters if you wish), and a noise source. As with most structures, you can add to them and make them as complex as your imagination and ingenuity will permit.