33 KiB
fontfamily | fontsize | geometry |
---|---|---|
dejavu | 16pt | a4paper,margin=2cm |
MicroDexed User Manual
Version 1.0 (June 2020)
What is MicroDexed?
MicroDexed (also called MD) is a software which runs on a Teensy(-3.6/4.x) microcontroller. It simulates a well know 6 operator FM synthesizer with some additions (like effects) and is controlled and mostly programmed via MIDI. The sound engine is based on Dexed, a famous open-source VST plugin.
Requirements
To use MD, you need suitable hardware. For example TeensyMIDIAudo (TMA) was developed directly for MD. The schematics and layouts are open-source, so you can easily build a TMA board. You can also build it on a stripe grid board or use completely different variants - it's up to you how you build the hardware. Another option (with a few extensions) is the Teensy Guitar Audio Shield.
Basically your MD "board" needs the following:
- I2C connector for connecting a LCD display (software is written for a 2*16 character display, but a bigger one should do also).
- 2 Encoders (for each encoder one digital input for the button and two digital inputs for the encoder directions).
- A DA converter supported by Teensy (something like a "audio shield", e.g. the Teeensy audio shield, or (the simplest way) you can use the 12bit DA output pins of the Teensy-3.6 (not possible for Teensy-4.x!)).
- "A way to get MIDI into the Teensy", like the onboard USB port (will not work for USB-MIDI-keybords, because it is not a host port!), the USB-Host port (with soldering a header) or external IO-components for DIN-MIDI.
- A small FAT32 formated SD card.
- The Arduino-IDE and TeensyDuino for compiling and uploading the program code (tested with Arduino-1.8.12 and TeensyDuino-1.52).
The complete hardware build manual for the TMA-board can be found inside the TMA-Build-Manual. So for now we expect that you have a running hardware with installed MD software.
Operating elements on the front
The normal controls for the user are arranged as follows:
If you decide to do the arrangement differently this is no problem. You only have to remember how the encoders are assigned to the function:
- Left encoder is named VOLUME
- Right encoder is named PRESET
Permament encoder functions
The VOLUME encoder always has the following functions - no matter where you are in the menus:
- Turn left/right: Change the volume (MIDI-CC 7). The volume-change-screen appears when turing and disapears after a short time and you get back, where you left off.
- Long-Press: A MIDI panic is triggered and all voices are muted.
- Short-Press: Back (from the selected menu-item or up to the parrent menu)
The PRESET encoder has only two different permanent function:
- Long-Press inside menu: This takes you to the sound/bank selection.
- Long-Press inside voice/bank selection: Changing between voice and bank selection.
Quick start
On a freshly installed MD the screen should greet you with the sound/bank selection. The volume is set to 80%.
Long-Press PRESET: Changes between voice and bank selection:
Turn PRESET left/right: Change voice or bank (voices: 1-32, banks: 0-99):
- indicates that you are using timbre 1.
- indicates that you currently use the monotimbral engine.
- are showing which parameter you currently edit with the PRESET encoder.
- below the timbre symbol(s) indicates that there was an MIDI event (if using a Teensy -4.x different height bars (depending on velocity) are displayed per timbre).
Using MicroDexed
The individual menu items are described below. MD knows three different states:
- Voice/Bank selection
- Adjust volume
- Menu
After switching on, you are in the voice/bank selection. To enter the menu you have to press the volume encoder. You can return to the voice/bank selection by holding down the preset encoder. If you turn the volume encoder, the volume screen appears and you can see which value is set. After a few seconds the system automatically returns to the previous screen.
To select items in the menu, the preset encoder must be turned. On the right side you will see where you are in the menu list. You can select a menu item or jump to a submenu by pressing the preset encoder.
If you want to leave a menu point or change to a higher menu, the volume encoder must be operated.
Hint: You can translate MD with different options and accordingly some features may or may not be available. This also depends on what kind of microcontroller you use. In > this manual the standard options are used. These are:
- Microcontroller: Teensy-3.6 (240 Mhz overclocking)
- Teensy audio card (SGTL5000 based audio chip)
- USB-host port enabled
- Mono-timbral engine
If you use the dual-timbral engine, in many menus a small will appear (right of the ) instead of the key. To switch between the two engines and change their parameters, simply press the preset encoder.
Sound/Bank selection
The most important screen will be the selection for the sounds. The screen displays the selected bank number (top left) and the selected voice number (below). Next to the numbers are the corresponding names. The paramater, which is shown in square brackets, can be changed by turning the preset encoder.
MD can manage 100 banks (0-99) and 32 voices per bank, if you turn the encoder over the 32 voices, the first voice of the next bank will be loaded automatically (if possible). This happens the same way if you go lower than voice number 1.
To switch between voice and bank selection, the preset encoder must be pressed for a long time.
Next to the bank name is the symbol for the active engine. As described above, we use the mono-timbral engine for this manual, so the display next to it has a key symbol and is therefore not available. In this case we can not switch between the two instances by pressing the preset encoder.
If a MIDI note is detected, a note symbol is displayed below the corresponding instance as long as this note is active.
When the voice is changed, MD sends a voice dump in the background via MIDI SYSEX on its selected MIDI channel. This has the advantage that external devices (like a voice editor on a PC) synchronize the data directly.
To enter the menus, the volume encoder must be operated.
Voice Menu
The Voice menu is the most comprehensive menu. Here all functions related to sound generation are stored in different menus.
Audio Menu
The audio menu contains all functions that can lead to audible changes in any form.
Voice Level
By changing (and later saving) this value you can compensate for differences in volume between different sounds. The value ranges from 0 to 127. Normal is 100, but you can make the sound louder by increasing the value.
Panorama
The place in the stereo image can be adjusted here (MIDI-CC 10)
Effects
MD comes with some effects. Basically, each MD instance has its own resonant low-pass filter, (mono) Chorus and a separate (mono) delay (max. 250/500 ms). This is followed by the placement in the stereo image (see panorama) and a stereo reverb. A complete picture of the generation of the audio signal is stored in the Repository.
Note on effects menu: It is possible to deactivate the effects at compile time. If this was done, then no effects menu is available!
(Mono-)Chorus
A simple chorus created on the mix of the original signal and a pitch-modulated original signal. The effect is only audible when frequncy, depth and level are all somehow greater than 0.
Parameter:
- Frequency (0-10 Hz)
- Waveform (Triangle/Sine)
- Depth (0-100)
- Level (0-100)
(Mono-)Delay
The delay has a feedback loop and can be mixed into the original signal by means of level. Therefore time and level must be greater than 0.
Parameter:
- Time: (0-500ms for mono-timbral or 0-250 for dual-timbral (on Teensy-3.6))
- Feedback (0-100)
- Level (0-100)
Dedicated MIDI controller numbers:
- Time: MIDI-CC 105
- Feedback: MIDI-CC 106
- Level: MIDI-CC 107
Filter
The filter is a resonant 4-pole low-pass filter.
Parameter:
- Cutoff (0-100)
- Resonance (0-100)
Dedicated MIDI controller numbers:
- Cutoff: MIDI-CC 104
- Resonance: MIDI-CC 103
(Stereo) Reverb (Master effect)
The reverb is a port of the freeverb. With the mono-timbral engine the parameter Reverb Send seems to be superfluous and can be set to 100. But if you use the dual-timbral version, you can set the amount of reverb send for each of the two sound generators separately. The reverb can only be heard when the roomzize and level, as well as Reverb Send are greater than 0.
Parameter:
- Roomsize (0-100)
- Damping (0-100)
- Level (0-100)
- Reverb Send (0-100)
Dedicated MIDI controller numbers:
- Level: MIDI-CC 91
EQ (Master effect)
The EQ is only active when using a Teensy audio shield (or SGTL5000 chip). It serves as a simple adjustment of the sound image.
Parameter:
- Bass (0-100)
- Treble (0-100)
Controller
The controller section is responsible for the settings of the different MIDI controllers.
Mote on Controllers:
How it works inside MD:
Pitch and amplitude modulations are set inside the voice presets by two parameters : PMD (Pitch Modulation Depth) and AMD (Amplitude Modulation Depth)
Those settings cannot be edited using MDs interface (but can be edited via MIDI-SYSEX).
Pitch modulation:
The LFO, internal to MD, will affect all operators in the same way. Its frequency (or rate) and depth are common to all those operators.
Depending on the LFO’s waveform, the effect will sound like a faint vibrato or a large wobble (sine or triangle), a trill (square), a series of random pitches (sample and hold), to name a few.
Amplitude modulation:
The LFO, internal to MD, will affect all operators independantly: Rate will be common, but modulation depth can be set differently on each operator.
If the operator is a carrier, the LFO will affect the general volume of the preset. A sine wave LFO applied to a carrier operator will result in some kind of tremolo effect.
If the operator is a modulator, the LFO will affect the harmonic content of the preset. A sine wave LFO applied to a modulator operator can, in most cases, be compared to an automatic Wah-Wah effect. A sample and hold LFO applied to a modulator operator will result into a series of notes with random brightness.
MDs controller menu
Even if pitch and amplitude modulations are already set inside the Dexed preset, it is still possible to add modulation using external controllers.
Controllers are physical or virtual devices, external to MD, which will have an effect on some parameters, via MIDI-CC messages.
On MD, sources are : Pitch Bend, Modulation, Breath Controller, Foot Pedal, Aftertouch.
Destinations are : pitch modulation by internal LFO, amplitude modulation by internal LFO, EG Bias.
On a physical synth or master keyboard, pitch bend is usually controlled by a wheel or one axis of a joystick, modulation by a second wheel, or the second axis of the joystick, a breath controller by an external pressure sensor, and foot pedal is obvious.
But in fact, if this is a common setting, other combinations can occur, depending on the keyboard/controller and of the musician’s choice.
Those MIDI messages can as well be produced by virtual controllers as DAW, virtual keyboards or MIDI command softwares.
The devices named in this manual refer to the MIDI message, no matter which organ of the controller device produces them.
MD will not produce those MIDI CC messages, but will define their destination, their operating mode, and their intensity.
Pitchbend
The pitch of the note can be raised or lowered using the Pitch Bend control (Usually a dedicated wheel or joysitck on a master keyboard). The range can be set up to 1octave on both directions (up/down). Range setting defines the highest possible variation: from one semitone to a full octave. Steps define if the control is continuous (step = 0) or by discrete values (steps) of 1, 2 ... 12 semitones.
Parameter:
- Range (0-12)
- Step (0-12)
Other controllers (Modulation-Wheel/Aftertouch/Foot-Contoller/Breath-Controller)
The other MIDI controllers all have the same modification possibilities. The allocation of modulation can affect different destinations: PITCH (pitch envelope), AMP (loudness envelope), EG (see note below). It is possible to specify targets or any combination of targets but to be able to hear an effect, the voice must be configured accordingly.
Parameters:
- Range (0-99)
- Assign (PITCH/AMP/EG or any combination)
- Mode (LINEAR/REVERSE LINEAR/DIRECT)
Dedicated MIDI controller numbers:
- Modulation wheel: MIDI-CC 1
- Foot contoller: MIDI-CC 4
- Breath controller: MIDI-CC 2
Note on target EG:
Each of the 6 operators has similar settings, no matter if it is a carrier or a modulator.
Amongst those settings, an envelope generator, and an output level.
Output level could as well be named “Gain” and can be compared to a mixer entry fader (in case of a carrier) or a modulation index (in case of a modulator).
EG stands for EG bias, and could as well be called EG depth. It could be compared to the filters EG depth on an analog synthesizer.
When a controller is routed to EG (aka EG Bias), the Range value will define how much the controller will affect each operator’s envelope depth.
Depending on a parameter which is internal to the sound engines preset, this will have a different effect, and on many cases, no effect at all.
On MD, this internal parameter is called AMD (for Amplitude Modulation Depth) and the controller routed ot EG will only have an effect on the operators when their individual AMD is set to a value greater than 0.
If those operators are carriers, the controller routed to EG will control the overall volume of the sound.
If those operators are modulators, the controller routed to EG will affect the modulation indexes, which have an effect on the harmonic content of the sound (the higher the modulator’s level, the richer the harmonics, leading to a brighter sound).
If carriers and modulators have an AMD setting with a value greater than 0, then the controller routed to EG will affect, at the same time, volume and brightness of the sound.
If no operator has an AMD setting greater than 0, then the controller will have no effect.
Or better to say:
If, inside the preset, AMD is set to 0 for all operators, then the controller will have no effect.
Note on changing AMD: You can easily change all voice parameters by using an external MIDI-SYSEX editor (see Appendix).
MIDI
In this menu everything concerning MIDI control is set.
MIDI Channel
This influences on which midi channel MD reacts. A channel between 1 and 16 can be selected. Alternatively OMNI can be selected if data should be received on each MIDI channel.
Parameters:
- MIDI-Channel (OMNI/1-16)
Lowest/Highest note
You can also restrict the range to which MIDI-notes MD should react. This allows split and/or dual configurations with the dual-timbral engine or mehewren MD devices.
Parameters:
- Lowest Note (A0-C8)
- Highest Note (A0-C8)
Note on ranges: You have to check by yourself if the note ranges you entered make sense. If you set Lowest Note to C6 and Highest Note to C4 you won't hear anything!
Send voice
The currently configured voice can be sent via MIDI SYSEX, for example to edit it in an external editor or use it on another MD.
- Choose the bank.
- After choosing, push the preset encoder.
- Choose the voice to send.
- After choosing, push the preset encoder and the data is send via MIDI.
Note on sending voice data: The voice data is send on the current MIDI channel. If the MIDI channel is OMNI the data will be send on Channel 1.
Setup
The setup menu contains all other parameters that are necessary for this voice.
Portamento
Portamento allows the pitch to slide continuously from one note to the next one.
Parameters:
- Mode (FINGERED/FULL)
- Glissando (ON/OFF)
- Time (0-99)
Dedicated MIDI controller numbers:
- Portamento On-Off: MIDI-CC 65
Note on portamento:
Each musical instrument has a specific way to produce notes. Some have frets, keys, pistons and will produce discrete notes inside a scale… In european temperament, those notes are usually a chromatic scale (C, C#, D, D#, ...).
On these instruments, it is uneasy, or even impossible, to produce a note between those. The pitch will then abruptly switch from one note to another, it will only vary by steps, and no intermediate pitch will be produced.
On other instruments, such as violin or trombone, the pitch of the note can vary continuously, depending on the exact position of the finger on a string, or the length or the air column inside the pipe: this allows the pitch to slide continuously from one note to the next one. This is known as portamento. Depending on the instrumentist technique, this slide can be fast or slow. On MD, this speed is defined by the Time parameter. Higher values for portamento rate will produce a fast slide when lower values will result in a slower slide.
In monophonic setting, the choice is given to have a constant (Full) portamento (all notes are concerned) or a Fingered portamento, which will only happen when you keep the initial key pressed, when playing a new key (legato).
Glissando is different in that instead of producing a continuous slide between the pitches of the subsequent notes, it will play all the notes of the scale which are between those 2 notes, like a pianist gliding his finger on the keyboard, or a guitarist on his fretted guitar neck. A glide between C3 and E3 will play subsequently C3, C#3, D3, D#3, E3, when a portamento would result in a continuous rising of the pitch, from C3 to E3.
Polyphony
You can reduce the maximum of parallel heared voices if needed. If you recognize glitches in sound maybe reducing the polyphony by one can help to avoid these glitches.
Parameters:
- Polyphony (0-20, see note below)
Hint for Polyphony: Maximum polyphony depends on the used Teensy and the used clock speed at compile time. Setting the polyphony to 0 means that no sound will be produced. In Monophonic mode you need at least a polyphony of 2.
Transpose / Fine-tune
With these parameters you can adjust the pitch. By means of Transpose this is done in semitone steps (+/- 24 semitone) and by Fine-Tune in +/- 99 cent.
Parameters:
- Transpose (-24 - 24)
- Fine-Tune (-99 - 99)
Mono-/Polyphonic
MD can be set to a monophonic mode. In this mode, the envelopes are not restarted when playing legato. In combination with portamento this can lead to good sounding effects.
Parameters:
- Mono/Poly (MONOPHONIC/POLYPHONIX)
Important note on Mono/Poly: Please do not confuse this parameter with Polyphony! Mono/Poly limits the polyphony only indirectly by using only two of the maximum available internal sound generators. If Polyphony is set to one, it is still different from playing with MONOPHONIC mode enabled. Furthermore, a polyphony of at least two is required for the MONOPHONIC mode!
Internal
In the internal menu there are several basic items.
Note Refresh
With Note Refresh you can influence the behaviour when playing the same note.
For example: if you play a G5 and press and hold the sustain pedal, the next time you strike the same note, another of the maximum available tone generators will hit the note. So the note sounds double and its envelope would also run out seperate for both notes (with a corresponding time delay). This would, however, limit the maximum available notes, since the same note sounds multiple times.
With RETRIGGERED, the envelope of the same note is started again and more remaining tone generators are available for other tones.
You should try out this setting and decide yourself which variant fits better.
Parameters:
- Note Refresh (NORMAL/RETRIGGERED)
Velocity Level
If you have a hard to play keyboard or just want everything to sound "louder" or "more brilliant" and you don't have to press the keys so hard anymore, you can set a higher value here.
Parameters:
- Velocity Level (100-127)
Engine
The original Dexed offers three different routines for generating sound, all of which sound a little different. These three engines can also be found in MD and you can try out which one sounds best. Mark 1 is modeled after an original FM synth (also in the calculation), Modern is more modern and more accurate and OPL is the attempt to recalculate the sound generation like it was done on OPL chips back then.
Parameters:
- Engine (MODERN/MARK 1/OPL)
Operator
Operator enable/disable is a function often used when creating sounds. As an example, let's assume that operator 2 is disabled and we want to enable it again:
The blinking cursor is on :
- Choose by turning the preset encoder to the right.
- When the blinking cursor is on , push the preset encoder.
Now Operator is enabled:
Pushing the encoder again turns the operator off (). If you turn off all operators, nothing can be heard.
Save voice
The current voice is stored inside a bank onto SD card.
- Choose the bank.
- After choosing, push the preset encoder.
- Choose the slot where to store the voice.
- After choosing, push the preset encoder.
- Think about overwriting the selected bank/voice? If it is ok, turn the preset encoder to choose YES.
- If you are really shure, push the preset encoder and the voice is stored.
You can always abort the process by pressing the volume encoder (back):
Load/Save
MD can save settings for effects and sound separately from the voice/bank parameters. Furthermore it is even possible to call up finished combinations of these three variants.
Performance
A performance is a combination of an effect setup, voice setup and the selected voices themselves (see below for descriptions of effect setup and voice setup).
Loading and/or saving a performance makes it possible to call up or save a complete setup ready to play for live operation.
Hint on Performance: It is possible to call up a performance directly via the first used MIDI channel using MIDI Bank Change/MIDI Program Change.
TBD: explain how to do this
Voice config
Voice configurations store all data beyond the sound data itself that is necessary for playing. Voice-Configs should not be confused with the voice data (inside a bank) that describes the sound. All data that are not stored in the voice data are stored there:
- MIDI channel
- MIDI lowest note
- MIDI highest note
- Tranpose
- Tune
- Internal level
- Panorama
- Polyphony
- Velocity level
- Engine Type
- Mono/Poly
- Note refresh mode
- Pitchbend:
- Range
- Step
- Modulation wheel
- Range
- Assign
- Mode
- Foot controller
- Range
- Assign
- Mode
- Breath Controller
- Range
- Assign
- Mode
- Portamento
- Mode
- Glissando
- Time
- Operator status
Effects
Effect configurations save all settings for the effects and are independent of voice configurations or the voices themselves. The following parameters are stored:
- Filter cutoff
- Filter resonance
- Chorus
- Frequency
- Waveform
- Depth
- Level
- Delay
- Time
- Feedback
- Level
- Reverb
- Send
- Roomsize
- Damping
- Level
- Equalizer
- Bass
- Treble
MIDI
The following menu items allow data exchange via MIDI-SYSEX with editors/libraries or other (compatible) synths.
MIDI Recv Bank
A bank consists of 32 voices. These can be sent in a block to MD. Before you can send them, you have to select a bank slot and maybe want to edit the name of the bank on MD's side.
- Choose the bank slot.
- After choosing, push the preset encoder.
- Think about overwriting the selected bank/voice? If it is ok, turn the preset encoder to choose YES.
- If you are really shure, push the preset encoder.
- Now you can choose to edit the name of the new bank. The blinking cursor is located on the first character (on the left) and can be moved with the preset encoder in this example to the position of character the "4").
- At the position where the letter is to be changed, the preset encoder must be pressed to switch to edit mode.
- After you pressed the preset encoder, you are in edit mode. This is indicated by an asterisk at the end of the field.
- Now you can turn the preset encoder up/down to choose the character you need.
- With pressing the preset encoder you leave the edit mode (the asterisk disapears)
- Now can go to step 5 and edit the other characters like the first one, or you can go one position after the last character to leave the edit screen. An OK prompt will apear on the right.
- Push the preset encoder to wait for the data to receive.
- Now you can send from the remote device the bank data. After the transfer is succesfull, the data will be stored - not before!
You can always abort the process by pressing the volume encoder (back):
MIDI Snd Bank
You can also send a complete bank of 32 voices via MIDI-SYSEX.
- Choose the bank slot.
- After choosing, push the preset encoder.
The bank will be sent immediately.
Hint for sending banks via MIDI: The bank is sent on the configured MIDI channel. If OMNI is configured, then MIDI channel 1 is used for sending.
MIDI Snd Voice
This is where you can send one voice via MIDI-SYSEX.
- Choose the bank slot.
- After choosing, push the preset encoder.
- Choose the voice slot.
- After choosing, push the preset encoder.
The voice will be sent immediately.
Hint for sending banks via MIDI: The bank is sent on the configured MIDI channel. If OMNI is configured, then MIDI channel 1 is used for sending.
System
Stereo/Mono
MIDI Soft THRU
EEPROM Reset
Info
Tips and tricks
Editing the voices
https://www.thisdx7cartdoesnotexist.com/
https://synthmata.com/volca-fm/
The menu structure
- Voice
- Select
- Audio
- Voice Level
- Panorama
- Effects
- Chorus
- Waveform
- Depth
- Level
- Waveform
- Delay
- Time
- Feedback
- Level
- Filter
- Cutoff
- Resonance
- Reverb
- Roomsize
- Damping
- Level
- Reverb Send
- EQ
- Bass
- Treble
- Chorus
- Controller
- Pitchbend
- PB Range
- PB Step
- Mod Wheel
- MW Range
- MW Assign
- MW Mode
- Aftertouch
- AT Range
- AT Assign
- AT Mode
- Foot Ctrl
- FC Range
- FC Assign
- FC Mode
- Breath Ctrl
- BC Range
- BC Assign
- BC Mode
- Pitchbend
- MIDI
- MIDI Channel
- Lowest Note
- Highest Note
- Send Voice
- Setup
- Portamento
- Port. Mode
- Port. Gliss
- Port. Time
- Polyphony
- Transpose
- Fine Tune
- Mono/Poly
- Portamento
- Internal
- Note Refresh
- Velocity Lvl
- Engine
- Operator
- Save Voice
- Audio
- Select
- Load/Save
- Performance
- Load Perf.
- Save Perf.
- Voice Config
- Load Voice Cfg
- Save Voice Cfg
- Effects
- Load Effects Cfg
- Save Effects Cfg
- MIDI
- MIDI Recv Bank
- MIDI Snd Bank
- MIDI Snd Voice
- Performance
- System
- Stereo/Mono
- MIDI Soft THRU
- EEPROM Reset
- Info