Stuck with a SynthEdit project?

Category: SynthEdit Polyphony

MIDI-CV2 and Polyphony Synthedit Modules.

MIDI-CV2 Module.

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.

Correct connection of the MIDI-CV2
Incorrect connection.
Incorrect connection.

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.

MIDI-CV2 module connections

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.

Correct method for adding effects to a synthesizer
The Polyphony module's connections.

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.

Connecting the Polyphony Control in Synthedit.

How to connect the Polyphony Control module

Polyphony and CPU usage in SynthEdit.

SynthEdit has a default of 6 voice polyphony. You can change this, up to the maximum of 128 voices supported by MIDI. 
Note:- for polyphony to work correctly, each synthesiser must be in it’s own container and each container must have exactly one MIDI to CV Module.
Important Note: Each new polyphonic channel creates cloned synth modules, so keep the number voices set to a realistic number (after all normal keyboard players can only hold down so many keys at once!) if not you risk creating a real “CPU hog”
NOTE: VST Plug-ins internally control their own polyphony, once your module structure becomes a VST it’s out of your control, you must set your limits at the design stage.

When a MIDI to CV Module is added to a container, all the modules downstream automatically become polyphonic. You can set the maximum number of voices from the container’s properties dialog. The polyphony is confined to that container. If you bring connections out of the container via an IO Mod Module, the signal is merged back into a mono signal. This is one way to control which modules are polyphonic.
SynthEdit creates clones of the modules in a container as needed for each voice in use (you can’t see the clones, they are generated internally).

Illustration of cloned modules

SynthEdit only clones the modules it needs to. For example;

LFOs and Polyphony:
The LFO is treated differently for polyphonic modules. Here one LFO is shared by all the voices.

This is because the LFO does not depend on the MIDI to CV module, it is not connected to the MIDI to CV module in the signal path.

SynthEdit automatically analyses each synthesiser’s signal flow to minimize the number of modules that need to be cloned to sound a new voice. This helps reduce the CPU load and increases performance.
Note: If do decide you want one LFO per voice, it will need to have some connection with the MIDI to CV module.
For example: you could connect the MIDI to CV modules Pitch Out plug to the LFO via a switch module, then turn off the switch, (although the switch is “off” breaking the control voltage flow, SynthEdit still sees this as a connection) this would then give you one separate LFO for each note you played.

Polyphony control

Reserve Voices
Reserve Voices are extra spare voices used only to prevents clicks when you play more notes than Polyphony allows for. 3 to5 are usually sufficient.
Imagine you set polyphony to 3, and hold 3 notes, then hit a 4th note, what will happen? One of the 3 notes has to stop, but there is no way to stop a note instantly without it clicking. You have two options:

  1. Have some extra voices in ‘reserve’ to play the 4th note. This allows the new note to start immediately while one of the old notes is faded out. This is the best option.
  2. Have no reserve voices, SE will fade-out one of the 3 notes, then play the 4th note. This results in latency, half your notes get delayed several milliseconds, and the fade-out ‘pop’ is more noticeable because it’s not ‘masked’ by a new note.

Reserve voices don’t count toward polyphony. Reserve voices are only in effect for a few milliseconds, you only need enough to cope with how many notes you expect trigger ‘at once’ (at exactly the same time). I don’t tend to trigger more than 3 notes at the same instant, so 3-4 reserve voices is enough. This is not related to how many notes you can hold down at once, ‘polyphony’ sets that.