Skip to content

Latest commit

 

History

History

midi4plus1

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MIDI 4+1

A DIY Arduino-powered MIDI to 4x CV/gate interface in 6 HP, with both polyphonic and monophonic voice allocation modes.

Arduino code | BOM | 🛒 Buy PCB and panel on Tindie | ModularGrid | YouTube demo | 🗨️ Mod Wiggler | 🗨️ Lines

Features and limitations

  • Single MIDI input via DIN or TRS Type A (now the MIDI standard).
  • Four 1V/oct CV/gate outputs with gate LEDs.
  • Button for cycling through five different modes, with coloured mode LED:
    • Poly (red): four-voices polyphony with priority to last, LRU strategy and voice stealing;
    • Poly-first (green): four-voices polyphony with priority to first and first-available strategy;
    • Split poly+mono (blue): split keyboard with three-voices polyphony on the left, and monophony on the right (priority to last);
    • Split mono+poly (pink): same as above, but flipped;
    • Mono (teal): four independent monophonic allocators, one for each MIDI channel 1 to 4.
  • Additional output which can work as one of the following:
    • Gate output that stays high while at least one polyphonic voice is active (logic OR), useful for single-filter setups;
    • Trigger output for MIDI clock, with customizable PPQ (can be enabled in code).
  • Voices lock with a long-press of the mode button: all gates of currently held polyphonic voices stay high, ignoring key releases until next reallocation.

The DACs range is 0-4V, so only the 4 center octaves are covered. To get more, it is necessary to add amplifiers on CV outputs. Split modes splits the keyboard on middle C. Both lowest MIDI octave and split octave are easily configurable in code.

Uploading a new sketch requires disconnecting the MIDI input circuit from the Arduino RX pin: there's a jumper on the back of the PCB that can be moved from "MIDI" to "PROG".

Calibration procedure

Power on your modular system with the button pressed: the mode LED lights up in white to show you entered the DACs calibration procedure. Gate LEDs show which CV output is currently being calibrated. The procedure requires measuring the output voltage using a multimeter with mV precision (0.001V).

The first CV output should be around 0.5V: use a MIDI instrument to send any note below middle C (MIDI note 60, usually C4 or C3) to decrease the measured value, or any note above middle C to increase it, until you get exactly 0.500V. Now press the button to advance to the next calibration point, that is 1.000V, and adjust the measured value again. There are 8 calibration points for each CV output (configurable in code), after which the calibration process is repeated for the second, third and fourth CV output, as shown by gate LEDs.

At the end of the whole procedure, the module will reboot itself and all CV outputs will track 1V/oct accurately. Calibration data is stored in Arduino EEPROM memory, so it's persisted across reboots and won't be lost by uploading a new sketch.

Schematic

Pictures

New PCB build

🛒 Buy PCB and panel on Tindie

Old 3D-printed build

Thanks