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](https://github.com/asb2m10/dexed), a famous open-source VST plugin.
MicroDexed (from now called MD) is a software which runs on a Teensy(-3.6/4.x) microcontroller. It simulates a well known 6 operator FM synthesizer with some additions (like effects) and slightly extensions. It is controlled via MIDI and voice presets can also be programmed via MIDI. The sound engine is based on [Dexed](https://github.com/asb2m10/dexed), a famous open-source VST plugin.
## Requirements
@ -25,8 +27,11 @@ To use MD, you need suitable hardware. For example [TeensyMIDIAudo (TMA)](https:
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 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!)). Audio output is also possible via the USB-B port direct into a program (like Audacity).
* Getting MIDI into the Teensy
* via the onboard Micro-USB port (or USB-B port on a TMA board (note: will not work for USB-MIDI-keybords, because it is not a host port!))
* via USB-Host port (with soldering a header on the Teensy-3.6/-4.1)
* via 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).
@ -277,10 +282,41 @@ Parameter:
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 preset must be configured accordingly.
---
> __Note on controllers:__
>
> External controllers such as Mod Wheel, Foot Pedal, etc, will send MIDI messages to MD, from 0 to 127.
>
> * The *Assign* parameter will define the destination of this modulation.
> * The *Range* parameter will define a divider, reducing this operating range to fit the users needs (*Range* can be seen as a percentage value).
> * The *Mode* parameter will define the behaviour of the controllers output, or how MD will react on the controllers messages.
>
> In *Linear* mode, the modulation applied to the chosen destination will vary from 0 to the value defined by *Range*.
> Output can be considered as:
>
> > MIDI CC value * (*Range*/100) (and is not inverted)
>
> In *Reverse* mode, the MIDI CC value is substracted to its maximum. The output will vary from 127 to (127-*Range*), and thus, will be inverted, compared to its input.
> Output can be considered as:
>
> > 127 - (MIDI CC value * (*Range*/100))
>
> In *Direct* mode, the modulation applied to the chosen destination, will vary from (127-*Range*) to 127, without being inverted.
> Output can be considered as:
>
> > 127 - ((*Range*/100)*127) + (MIDI CC value * (*Range*/100))
>
> *Linear* will be prefered for Pitch or Amp modulations (no modulation when MIDI CCs value is null, maximum modulation set by the *Range* parameter.)
>
> *Direct* mode will be prefered when modulation is applied to EG bias: MIDI CC value of 127 (maximum) will leave the sound un-altered, when lower values will reduce the volume or brightness of the preset, down to a value defined by *Range*.
>
> *Reverse* mode will for example be used when a same controller is applied to two different MD units (or two instances of a bitimbral MD), set to the same MIDI channel, to modify the level balance of those two engines. If one of the MDs is set to Direct and the other to Reversed, it will then be possible to control the balance of those two engines, for example by turning the Mod Wheel or by pressing the Foot Pedal, allowing some kind of sound morphing.
---
Parameters:
* Range (0-99)
* Assign (PITCH/AMP/EG or any combination)
* Mode (LINEAR/REVERSE LINEAR/DIRECT)
* Mode (LINEAR/REVERSE-LINEAR/DIRECT)
> Dedicated MIDI controller numbers:
> * Modulation wheel: MIDI-CC 1
@ -759,14 +795,14 @@ The sound generation (msfa) from the free VST-plugin Dexed. So you can use Dexed
As mentioned before: you can use external editor software for MIDI SYSEX editing of MD voice presets. Here is a collection of freely available editors:
* not really an editor but a system which generates a bank of voice presets with a KI behind. The names of the voice presets are mostly not readable at the time of writing, but the sounds were not bad.
* also an online editor whic was written for Volca-FM but also works for Dexed/MD.
Another way of editing voice presets is to use an editor like Edisyn. For download and install instructions read the manual at https://github.com/eclab/edisyn.
Another way of editing voice presets is to use an editor like Edisyn. For download and install instructions read the manual at [https://github.com/eclab/edisyn](https://github.com/eclab/edisyn).
<divstyle="page-break-after: always"></div>
@ -862,15 +898,15 @@ Another way of editing voice presets is to use an editor like Edisyn. For downlo
MD is a complete open hardware (TMA board) and open software project. All resources are available at codeberg.org:
Unfortunately there is currently no finished website and no forum. Hopefully this will follow soon.
### Reporting Bugs
MD has errors. There is no error-free software - at least I don't know any. If you find a bug in the program, please open an issue at https://codeberg.org/dcoredump/MicroDexed/issues. Please remember to make the error description as accurate as possible and include as much information as possible and possibly MIDI files in the report.
MD has errors. There is no error-free software - at least I don't know any. If you find a bug in the program, please open an issue at [https://codeberg.org/dcoredump/MicroDexed/issues](https://codeberg.org/dcoredump/MicroDexed/issues). Please remember to make the error description as accurate as possible and include as much information as possible and possibly MIDI files in the report.
### Feature Requests
Feature requests can currently also be made via https://codeberg.org/dcoredump/MicroDexed/issues should be submitted. Please mark in the title as __Feature-Request__.
Feature requests can currently also be made via [https://codeberg.org/dcoredump/MicroDexed/issues](https://codeberg.org/dcoredump/MicroDexed/issues) should be submitted. Please mark in the title as __Feature-Request__.