MMG1 is a synthesizer modelled after an extremely famous monophonic synth but made polyphonic and with some extra features.
It is a component-level model of the original, for maximum realism and playability. It means that the modelling starts from the circuits and takes into account the maximum possible level of detail, while optimizing the algorithms to keep the models usable on a normal workstation/project.
MMG1 bases its synthesis on a set of three audio-range oscillators. They are exactly the same, with the only exception that the first one doesn’t have a control for the fine tuning of its pitch.
A fourth oscillator produces noise, selectable between White (flat on a frequency scale) and Brown (more energy on the low frequencies).
A fifth oscillator is included but works at frequencies below the udible range and is used as a selectable source for modulation (see below). This kind of oscillator is often referred to as an “LFO” (Low Frequency Oscillator).
The third audio oscillator can be used as a modulation source, too, so it can act as an LFO (or even go up to amplitude or frequency modulation, more below).
The set of four audio oscillators (three waveform oscillators and one noise source) are mixed together through individual Activation switches and Volume knobs (see the Mixer section on the interface).
The resulting mix is then processed through an Amplitude envelope generator with its controlled amplifier. The envelope generator defines how the amplitude of the sound changes from the start of a note till the end of the (optional) decay following the end of the note.
MMG1 uses ADS(R) envelopes. A single Decay time is available and can optionally be used for the duration of the tail after the end of a note.
The resulting enveloped sound is then processed through a filter. The filter in MMG1 is quite special and has its own identity as it is part of history of sound synthesis. It is the so-called “ladder” filter, a steep Low-pass filter with optional Resonance (labelled as “Emphasis” on the interface) that focuses the passing sound around the corner of the frequency band, where the sound starts being attenuated.
In MMG1, this filter has an optional “High-pass” mode, for a widely extended range of sounds.
The filter is controlled by its dedicated envelope generator that can dinamically control its frequency along the evolution of a note (the amount of control by the envelope generator is labelled as “Contour” on the interface).
This is the overall structure of sound generation in MMG1:
Audio Oscillators and Noise Generator -> Mix -> Level envelope -> Filter (controlled by its envelope) -> output.
Some parameters can be controlled by a modulation source. This source is the result of a combination that can be defined by the programmer, including: LFO, Filter envelope, Sample&Hold (labelled as “Noise”) and Osc3 (third audio oscillator). For this purpose, the third audio oscillator can be optionally detached from pitch control (so keeping a fixed pitch).
Destination of this modulation can be oscillators’ pitch and filter frequency. Modulation frequencies below the audible frequency range can give vibrato (on oscillators’ pitch) and/or tremolo (on filter’s frequency) effects. Modulation frequencies in the audible range can give frequency modulation (on oscillators’ pitch) and/or amplitude modulation (on filter’s frequency).
Further options for sound synthesis are: amount of feedback from final output back to amplifier’s input and key-follow (how the position of a note on the keyboard affects the frequency of the filter). More about these in further tutorials.
MMG1 includes another extra feature that, while being extremely simply implemented, it enormously widens the range of possible uses: a velocity parameter. The higher its value, the more the velocity of the incoming note affects the volume of the generated note. A zero setting makes it a classic sounding synth, an high value makes it dynamic (pianos, acoustic instruments, plucked sounds, etc.).
Glide control can add a lot of expressivity to performances. The control sets the amount of time needed for a new note to reach its target pitch, starting from last played note.
*** Fixed controllers and polyphony modes ***
Fixed controllers received by MMG1 are sustain pedal and pitch bend. The range of effect from received pitch bend values is selectable by a menu in the left part of the interface.
MMG1 includes option for several polyphony modes. The simples is the Poly 8 mode. Up to eight notes can be played at the same time (with full envelope and filter’s polyphony). This is NOT to be confused with the number of physical voices, it is the number of keys. So, for example, if a new note is received wile tails from preceding notes are still sounding, they are not cut.
Further poly modes (2 and 4 notes) are useful when several instances are used and the load on the cpu needs to be limited.
Mono modes are about the performance and the behaviour of the synth with sequences. There are six modes available. They combine precedence and legato. Precedence can be assigned to the lowest played note, the highest or the latest. Re-trigger is available (each new note triggers the envelopes even if previous key is still pressed, releasing the new one can re-trigger the old, still kept, one) or the legato option can be selected (further keys pressed after the first one or released don’t retrigger envelopes). Experiment with mono modes to get an idea.
*** Presets Management ***
MMG1 includes a simple and powerful system for management of presets. It runs around the concept of plain-text preset. Everything on the interface can be saved as an overall preset to be re-called later. switching between sounds is just as simple as selecting a preset.
A preset can be stored by using the save control. A preset is a single file. The same file can be reloaded by the load control.
For easier and quicker use, presets can be stored in a pre-defined location. All the presets stored there are pre-loaded on start-up and listed in a couple of quick-selection menus (top-center on the interface). This location is …/MMG1/preset/ (where “…” depends on the used system, Windows or Mac OSX). Any subdirectory contained inside /preset/ is used as a category identifier. Each preset file in that directory is associated to the relevant quick-recall menu. The general /preset/ directory (outside of any sub-directory) is generally used for “templates”, basic presets that are not designed to be used directly but as starting points for quick preset programming.
For example, this is a possible structure:
…/MMG1/preset/TEMPLATE – Organ
…/MMG1/preset/Bass/BASS – Acoustic Bass
…/MMG1/preset/Bass/BASS – Fretless
…/MMG1/preset/Lead/LEAD – Sin Solo
…/MMG1/preset/Lead/LEAD – 5th Detune
This structure results in a template in the main menu and two presets each in two category items, Bass and Lead.
We prefer to add a prefix to the file name for each preset, as in the example above, even though the fiule will go to its relevant cathegory. You are free to follow this style or not.
To add a new library of presets, just drop the “preset” directory to the “preset” directory on your file-system so that new directories (if any) will be added and presets from directories with existing namers will go to their relevant destination.
Only one level of sub-directories is used by the system. Any deeper level sub-directory is just ignored.
An additional feature for preset management is the plain-text copy and paste option. To copy a preset from the interface, just press copy. To paste the preset to another instance, just press paste there. The same copied preset can be pasted as plain-text, for example for quick-sharing in a forum. To activate that preset, just select the whole text, select system’s “copy” for the selected text (to system’s clipboard), press the “paste” control on MMG1’s interface.
*** MIDI Mapping and external controllers ***
All the controls on the interface can be mapped to MIDI CC (“Control Change”) signals, for example to be controlled by a connected hardware MIDI controller (for performance or sound design).
Maps can be defined, saved, loaded.
There is a pre-defined location for MIDI Maps. All the maps stored there are available as menu items in a MIDI Maps menu (bottom-center).
This location is …/MMG1/MIDIMaps/ (where “…” depends on the used system, Windows or Mac OSX). Maps must be there to be available for loading. Only the main directory is used for the menu, sub-directories and their content are just ignored.
A new MIDI Map is programmed by adding control-CC associations one by one. The whole map can be saved by the “Save map” control (bottom).
To add an association, start by moving a control on the interface. Then click on “learn” (bottom-center on the interface) and move a control on the hardware device. To add more associations, repeat the process (interface, press “learn”, hardware control).
If “Show Map” (bottom) is engaged, CC numbers are shown on top of included controls on MMG1’s interface.