Stuck with a SynthEdit project?

Tag: Polyphony Control

The Polyphony Module

This is another module that seems to cause some confusion. If you follow a few simple rules it’s fairly simple. However you need to read all the information on Polyphony and using this module carefully.

Rules for using the Polyphony Control Module.

Important: Do not connect any Patch Memory Modules to the Polyphony control module for any reason, as it is already a type of Patch Memory- you’ll get some very serious data conflicts! The reasoning behind this is that when you have synthesizer VSTs that support saving and loading patches, you’ll sometimes need to have different settings saved ready to be applied to the Polyphony when the patch is re-loaded (Glide for example) this will be done directly from the Polyphony module rather than having loads of extra Patch Mem modules to add.
Important: For backward compatibility (in older versions of SE) the Polyphony control module will not work if your MIDI-CV module has plugs like Mono-mode, Poly Mode, Retrigger, or Mono Note Priority pins connected. MIDI-CV2 should present no problems at all.
Note: The Polyphony Control module does not have a properties panel. All parameters are controlled directly from the module’s plugs.
Note: There is no point in connecting any GUI fixed values or Patch Memories to the control plugs because it will not work, and as stated previously connecting Patch Memories to the Polyphony Control will cause data conflicts.
The only safe “solution” is setting the correct required values in all of your factory presets, including any test or personal presets, and connect a list entry only for you to check that its value remains at the intended one, but do not make it accessible to users (i.e. either remove it when exporting the final plugin or leave it inside a non displayable container).

Monophonic Synthesizers and Containers.

This is important to understand. If you are designing a monophonic synth, your Polyphony module musty be in the main container. Not just the VCO(s). You need to make the whole synth Monophonic, not just the VCOs’. If you don’t adhere to this you’ll get excessive CPU usage, and problems with volume/filter pitch increasing exponentially. The first structure is how NOT to construct your monophonic synth. The bottom image shows how it should be structured

In the example above each time you play a new note the Filter and VCA will get “cloned” for the new note.
However in the example below everything inside your container (everything in the purple area goes in the same container) all your modules will be Monophonic and will not get cloned, and control voltages to VCA/Filter won’t get stacked up exponentially.

Another common mistake

One common mistake with SynthEdit is to place a MIDI to CV module in it’s own container. This will lead to the Oscillator pitch jumping higher with each new note played, (and other strange things will happen).

This is because the downstream modules are outside the MIDI to CV modules container, therefore they are not cloned when you play a new note. What happens instead is the two  note’s pitches are combined before the Oscillator.

What the Polyphony Control Module does.

As the name suggests this provides control of Polyphony – how many voices (notes to you and me) the synth can play in one go.
The greater your polyphony, the more keys you can hold (and hear) at the same time, the Polyphony is usually deliberately limited to control the amount of CPU your synthesizer can use.
A sensible compromise is a level somewhere between 8 and 32 voices.

Velocity control and Polyphony.

I have a monophonic Synthesizer with velocity connected to the VCF and VCA, and each time I play a new note the volume increases exponentially.
What’s happening?
Chances are you have these modules outside of the container with the Polyphony module in it that you have set up for Monophonic use. What’s happening is that although your VCOs’ are now monophonic, your Velocity control and associated modules are outside of the module’s container, so they are still polyphonic! Because of this each time you play a note the velocity voltage will be increasing exponentially… not good. A quick fix if you have done this would be to add another Polyphony module into your VCF/VCA container(s) which is set up for Monophonic.

The Modules’ plugs and settings.


Plugs:
Polyphony:- (Integer/Text) How many notes can sound at one time.
This can be anywhere from 1 to 128 voices.
Polyphony Reserve:- (Integer/Text) These are some extra voices to be kept in reserve that will usually be unused. Why do this? The point of having these Reserve Voices is to reduce clicking during “voice-stealing”.
In the event that all of the regular voices are used up, these temporary extra “reserve” voices allow new some notes to play while SynthEdit quickly fades-out some of voices already in use for recycling.
A reserve of 3 to 8 voices will usually be sufficient, depending on how many notes you might trigger at the same instant (how many fingers have you got?).
Voice Stealing:- (Integer/Text) This mode setting controls how the voices are recycled, there are three modes:
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…). 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, may muddy the sound and cause flanging effects on samples.
Mono Mode:– (Boolean) Only one voice is ever used, like a monophonic Synthesizer (like the first Analogue synthesizers) .
This works well for traditionally monophonic instruments like Bass synthesizers. Note: This mode is not suitable for sample-based instruments because it will cause clicks during note-on events. However you can use the polyphonic mode with Polyphony set to “1” to restrict your sampler to a single voice.
Mono Retrigger:– (Boolean) Controls how a monophonic instrument responds to legato (overlapping) note playing. With the Retrigger mode enabled you will hear envelopes retrigger for a distinct attack on all new notes. In Legato mode, any notes played as legato will now glide smoothly into each other without triggering a new envelope (no new gate or trigger pulses).
Mono Note Priority:- (Integer/Text) When in the monophonic mode when two or more notes are held, this controls which of the notes sounds. This has three modes: High, Low , and Last. High plays the highest note, Low plays the Lowest, and Last plays the last note to be held down.
Glide:- (Floating Point) The value on this plug controls how fast the pitch changes between the notes played. Glide is often known as portamento.
Note: The Glide Control plug has a floating point range of 0 to 10, rather than the expected “default” of 0 to 1 that most Floating Point plugs have.
Glide Mode:- (Integer/Text) This has two modes, Legato and Always. It controls what playing style causes notes to glide. “Always” means that there is always a smooth portamento between notes, even if there is a gap between the keys being pressed, whereas “Legato” only uses the portamento effect when notes are played in a legato style.
Bender Range:- (Integer/Text) Controls the range of the Pitch Bender wheel.
Voice Refresh(Integer/Text) This has two modes: Enable and Disable .
The Voice Refresh periodically ‘wakes’ each voice. The purpose of this is reduce clicks which may occur under the following conditions: You have changed 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). Note: Under some conditions having the Voice Refresh enabled can consume too much CPU, so this setting allows you to disable it to save on CPU cycles.

OK So all fairly straightforward then…or is it?

Shown below is a typical structure for a synthesizers Polyphony controller. The controller doesn’t need to physically connect to anything in the Synthesizer in order to function, it just sits on it’s own inside the main synthesizer container.

The switches that connect to the Polyphony Controller have these internal structures:
Note: I know I said don’t connect Patch Memory to the Polyphony Controller module, but these are OK as they are not connected to it, but to the sub-controls.

We can create a neat little control panel from which all the Mono/Poly functions can be accessed easily this way.

A Polyphony control panel using this structure.

Recap on the important bits.

  1. Never connect a Patch Memory directly to the Polyphony Controller module.
  2. You don’t need patch memories to handle your synth’s patches with this module – it handles all the settings that are in the patch itself.
  3. No fixed value modules to be connected to the Polyphony controller.
  4. Only one Polyphony Controller per container. Put all of your polyphonic synthesizer modules and containers in this main container.
  5. Do not put effects or LFO’s in the container that holds the Polyphony Controller. You’ll create clones of these modules and it can quickly send CPU usage very high indeed.
  6. Only use the Polyphony module with the newest MIDI to CV2 module. Do not connect it to the older Midi to CV module that has any mono/poly control functions.

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