Back to "Moppelsynths"

Moppeltron v1.1 VST

Moppeltron employs the Discrete-Summation Formulae (DSF) synthesis technique proposed by James A. Moorer. This technique has capabilities similar to those of frequency modulation, yet it has the advantage that the number of partials can be exactly specified and that also one-sided spectra can be generated. By morphing between two mixes of DSF parameter sets, Moppeltron is capable of synthesizing a wide variety of sounds and effects.

I created Moppeltron using Synthedit, yet it doesn't use native Synthedit oscillators but a unique DSF oscillator which I coded in C++. For v1.1, I also coded a new ADSR module which works just as the native SE module but operates faster.


  • Two DSF parameter sets defining the partials. Exact specification of the number of partials, the maximum frequency, and all other parameters is possible by using text entry fields. One-sided or two-sided spectra.
  • A morphing unit allowing static mixes of the two DSF parameter sets as well as dynamic warping between two mixes using an ADSR envelope or an LFO.
  • ADSR envelope and a gain for volume control. Embedded piano keyboard control.
  • MIDI control of all parameters. Easy MIDI-CC assignment by MIDI learn function.
  • 16 voice polyphony, or mono. Note sliding. Adjustable pitch bend range.
  • 64 presets.

How it's used


The starting point of synthesis is the harmonics unit, where two DSF parameter sets are defined, each of which describing a waveform. The two sets are then combined by the morphing unit using one of five different control modes to synthesize the final waveform. In particular, the parameter sets can be mixed utilizing one of the two mix sliders to synthesize a static waveform, or the synth dynamically warps between the two mixer settings using one of the two Attack-Decay-Sustain-Release (ADSR) envelopes or the low frequency oscillator (LFO). Finally, the volume of the resulting signal is adjusted by an ADSR envelope and a gain slider.


Each of the two DSF parameter sets describes a waveform as the sum of sine waves at particular frequencies (commonly called harmonics or partials). One partial, hence called center frequency, is special in that it is always generated. The center frequency is determined by the currently played note and tuned with the respective PITCH knob.

SIDEBANDS is the number of additional partials on either side of the center frequency. If SYMMETRY is set to 1-SIDED, then all additional partials will be greater than the center frequency, ie. in the spectrum they will be on the right side of it, making it the fundamental frequency. If SYMMETRY is set to 2-SIDED, then the partials on the right side will be mirrored to the left side, making the frequency spectrum symmetric at the center frequency.

For each of the two parameter sets, the frequencies and amplitudes of the resulting partials can be defined as follows. The frequency of the i-th partial is

    freqc + i * ( freqc * m/c + offset)

where freqc is the center frequency, m and c are the left and right values of the knobs denoted as M:C-RATIO, and offset is the value of the knob M-OFFSET. That is, the distance between two subsequent partials is constant, and it's described as a multiple of the center frequency plus some offset.
The amplitude of the i-th partial is

    a ^ i

where a is the value of AMPLRATIO. That is, for amplitude ratio values smaller than 1 (greater than 1), the partial amplitudes decrease (increase) as the distance between the partials and the center frequency increases.

Note 1: If offset=0 and two-sided symmetry is chosen, the resulting spectrum is the same as that synthesized by frequency modulation with freqc as carrier frequency and (freqc * m/c) as modulating frequency, the difference being that the FM spectrum would be infinite.
Note 2: If offset=0 and integer values are chosen for m and c, the resulting spectrum is a harmonic series.
Note 3: Partials with negative frequencies, which can occur by the definition above if m or offset is negative, or if the spectrum is two-sided, will be  mirrored. For example, a partial at "-100Hz" would actually be audible at +100Hz.

MAXFREQ is the maximum allowed frequency of the partials. Only partials lower than that value will be generated. MAXFREQ is usually set to 22000, ie. about half the supposed sampling rate of 44kHz, to avoid aliasing. Still, Moppeltron operates at any sampling rate, and MAXFREQ can be set to arbitrarily large values using the text entry field.


The two DSF parameter sets are combined by the morphing unit. There are five different morphing methods which can be chosen with the MORPHCONTROL selector:
  1. MIXA: When MORPHCONTROL is set to MIXA, the final waveform corresponds to a mix of the two DSF parameter sets, and it's the MIXA-slider that controls the mix ratio. If the slider is moved to the topmost position, DSF parameter set 1 will be played. If it's moved to the bottommost position, set 2 will be played. If it's moved inbetween those positions, then - you guessed it - a corresponding mix of the sets will be synthesized.
  2. MIXB: Similar to MIXA, but with the MIXB slider as mix control.
  3. ADSR2: When this morph control setting is active, and a note is played, then the final waveform changes dynamically. It starts at a form corresponding to the MIXB setting, warps to the MIXA setting, and finally warps back to the MIXB setting again. The ADSR2 envelope controls the speed at which this happens. ATTACK defines how fast the waveform moves from MIXB to MIXA once a key is  pressed. The higher the ATTACK value, the slower the change. As soon as the waveform reaches MIXA, it will move to a level between MIXB and MIXA which is determined by SUSTAIN, and the speed at which it moves to the SUSTAIN level is determined by DECAY. When the key is released, the waveform moves back to the MIXB setting at a speed determined by RELEASE.
  4. ADSR1: Similar to ADSR2, but with the ADSR1 envelope as control. That is, with the ADSR1 morph control setting active, envelope ADSR1 will not only control the volume but also the morphing between the MIXB and MIXA mixes.
  5. LFO: When this morph control setting is active, the synthesized waveform periodically warps between the MIXB and MIXA setting, controlled by the LFO. SPEED is the LFO's speed. If the SYNC button is lit, the LFO speed will be synchronized with the song tempo. The LFO's amplitude is also affected by the ADSR2 envelope. For example, the ATTACK value of ADSR2 defines how fast the LFO's amplitude reaches its maximum once a key is pressed. AMT controls the LFO's overall amplitude, and with WAVEFORM you can pick a certain LFO waveform.


By the help of the MIDI learn function, you can easily assign parameters to MIDI-CCs. This is how it works:
  1. Hit the LEARN button. The green LED next to it is lit to indicate that you're now in MIDI learn mode.
  2. Move the knob/slider/button you wish to control.
  3. Move the MIDI control which you want to assign to it. The green LED is unlit again to indicate that you left MIDI learn mode.
That's it. Repeat this procedure to have all parameters controlled. If you accidentally entered MIDI learn mode and want to leave it again, just hit the LEARN button once again.
If you want to reset the MIDI-CC -> Parameter mapping to its default, keep the LEARN button pressed for 5 seconds. But be cautious: This will not alter only the mapping of the current Moppeltron instance but also that of any Moppeltron instance sharing the same MAP-ID.
This is because the mappings are stored centrally, and Moppeltron instances that share the same MAP-ID also share the same MIDI-CC mapping. So if you want use more than one MIDI-CC mapping, you have to alter the MAP-IDs accordingly. For instance, if you have several projects, and you want each project to have a unique MIDI-CC mapping of its own, assign a certain MAP-ID, eg. '0', to all instances in the first project, then another MAP-ID, eg. '1', to all instances in the second project, and so forth. And if you want to use different mappings for different instances within one project, you have to assign  different MAP-IDs to them as well. By the MAP-ID control on the Moppeltron panel, you can assign 100 different IDs (0-99).
One extra hint: The mappings are stored as plain text files in the Moppeltron plugin folder, in folders named mpt1100, mpt1101, and so forth. So you can, for instance, make backups or copy and paste your own default mappings.


GAIN limits the overall volume, and the ADSR1 envelope controls the dynamic volume change once a key is pressed.
If the MONO button is lit, then only one voice is played (instead of 8, the default).
SLIDE is the speed at which notes slide. To make notes slide, a key must not be released before the next key is pressed. Otherwise, if keys are always fully released before the next key is pressed, no sliding will occur. You'll figure out how it works if you use the 'Cat' preset and slide with the mouse on the piano keyboard while keeping the left mouse button pressed. If the 'T' field on the piano keyboard is lit, pressed keys will remain pressed until the 'T' field is unlit again.
BENDE RANGE is the pitch bend range measured in half tones. If you're using a pitch bend wheel, you may have to alter this parameter to get the desired effect.


Put the file Moppeltron.dll into your VST Plugins folder.

Thanks to

James A. Moorer (author of "The Synthesis of Complex Audio Spectra by Means of Discrete Summation Formulas",

Darren Hester (photographer of the original texture that has been used in the panel background,

Jeff McClintock (creator of Synthedit,

David Haupt (creator of the MIDI ControlMeister module,


You can contact me by E-Mail at: (Burkhard Reike).


This software is provided as is, there is no warranty and nobody is responsible for any kind of damage. Use it at your own risk.
VST is a trademark of Steinberg Soft- und Hardware GmbH, Germany.

Download: (Windows)

Older versions: (Windows)

This synth is free. If you like it, feel free to leave a donation.
Back to "Moppelsynths"
Email Youtube
Google+ Blogger Twitter

VST is a trademark of Steinberg Soft- und Hardware GmbH, Germany.
Privacy Policy