Midi2CV Mk2 is a DIY embeddable MIDI to 4 x CV/Gate converter with extensive configuration options and extra modulation sources (LFO and AHDSR EG).
- +-12V or +-15V, Euro or MOTM power connector
- 50mA@+15V, 10mA@-15V
- 4 x CV channels, each could be 0+5V, 0+10V or -5+5V, configurable by jumpers
- 4 x Gate channels, 0+5V, 0+7V or 0+10V, configurable by a jumper
MIDI IN LED
- optional MIDI IN LED, blinks when receiving MIDI events
- optional GATE LED, lit when a note is on
- MIDI IN connector
- optional MIDI OUT connector, mirrors MIDI IN
- hold down during power up to enter firmware update mode via MIDI
- hold down while receiving a note to learn MIDI Channel (v2.03+)
- hold down while receiving control change, after touch or program change to learn control CV parameter
- hold down while moving pitch wheel up/down to turn note tuning mode on and off
- hold down for 10 sec while the device is idle to reset the device to default settings
SW1-4 specify default base MIDI channel
- MONO and POLY modes use the base channel
- DUAL mode uses base channel and base channel + 1
- QUAD mode uses base channel, base channel +1, +2 and +3
1234 ch 1234 ch .... 01 ...X 09 X... 02 X..X 10 .X.. 03 .X.X 11 XX.. 04 XX.X 12 ..X. 05 ..XX 13 X.X. 06 X.XX 14 .XX. 07 .XXX 15 XXX. 08 XXXX 16
SW5-6 specify operation mode:
CV: note, velocity, pitch bend, control
Gate: gate, strobe, start, clock
- DUAL — two MIDI channels
CV: note1, velocity1, note2, velocity2
Gate: gate1, strobe1, gate2, strobe2
- QUAD — four MIDI channels
CV: note1, note2, note3, note4
Gate: gate1, gate2, gate3, gate4
- POLY — true polyphonic voice allocation
CV: note1, note2, note3, note4
Gate: gate1, gate2, gate3, gate4
56 Mode .. mono X. dual .X quad XX poly
Note CV: 1V/Oct pitch CV with optional micro tuning: every note can be set to output any CV level within selected output range. Can be used for Hz/V, alternate tuning schemes, or to correct VCO tracking imperfections. Note tuning is configured using special operation mode, and could be saved, restored or loaded via sysex message from a computer.
Velocity CV: linear by default, however, you can choose to adjust velocity response curve making it softer, harder or wider:
Control CV: by default, this CV tracks CC 1 (Modulation Wheel) value, however, it could be set to track any CC from 1 to 119, or after touch/program change values. If set to track after touch, the response curve could be adjusted similarly to velocity response curve. Control setting can be “learned” on the fly: hold down LEARN switch and turn/click the desired control knob/button, or press a key on after touch-enabled keyboard to track after touch.
Gate: goes high when a key is down, low when no keys are down. If “strobe gate” option is in effect, gate signal is pulled down for the duration of the strobe every time a key is pressed while some other key is down. This allows envelopes to re-trigger for synths that don’t have Strobe input.
Strobe: goes down for 1 to 5 ms, occurs each time a key is pressed. Strobe length and polarity are configurable by sending a sysex message and the setting is persisted in EEPROM.
Start: goes high when MIDI Start/Continue message is received and down when MIDI Stop message is received.
Clock: goes down for 1 to 5ms each time MIDI clock message is received, could be divided down to 32 triplet, 32th note, 16 triplet, 16th note, 8th note triplet, etc. all the way to 2 bar note. Division factor is configurable by a sysex and the setting is persisted in EEPROM.
In DRUM mode CV outputs produce gate like signals with amplitude proportional to the note velocity. The unit response to 4 predefined notes (by default C3,C3#,D3,D3#) on the base channel. The notes can be configured via sysex and are persisted in EEPROM.
On-board switches SW1-4 specify default MIDI channel. Midi2CV Mk2 uses this channel when it is first started or is reset to default settings. You can change Midi2CV Mk2 MIDI channel by changing these switches or “learning” it from a note played while holding down LEARN switch. The “learned” MIDI channel will be in effect until the device is reset, in which case the default MIDI Channel specified by DIP switches will be used.
LFO and EG
Starting with firmware version 2.0, Midi2CV Mk2 provides two extra modulation sources: LFO and AHDSR EG which can be assigned to any CV output. These modulation sources are controlled by MIDI CC commands sent from an external MIDI controller connected to MIDI IN.
- frequency: 0.1-100Hz
- basic waveshapes: sine, sweep, lumps, spike, sine3, sine5, triangle, ramp up, ramp down, square, random sample&hold, random lines, noise
- phase distortion waveshaper
- wave steppyness
- free running or reset on note on
- fade in 0 – 10sec
- bipolar or unipolar
- amplitude control
- segments: Attack, Hold, Decay, Sustain, Release
- segment duration: 0-15sec
- segment shape: linear, expo, sine
- legato retrigger: on / off
- MIDI Clock retrigger: 1/32T – 2bars
- auto gate control – 0-15sec (similar to MS-20 EG)
- looping: off, gated, auto
- inverted: on/off
- amplitude control
In looping mode EG can be used as a fancy LFO with the shape composed by four linear, exponential or sinusoidal segments with the duration specified by Attack, Hold, Decay, Sustain and Release controls.
Software pitch bend
Starting with firmware v3.10, Midi2CV Mk2 supports software pitch bend: note CV is affected by MIDI Pitch Bend events according to pitch bend range in semitones set by the 0Bh sysex command. If pitch bend range is set to 0, software pitch bend is effectively disabled. The pitch bend range setting does not affect hardware Pitch Bend CV.
Note CV tuning
The default note CV tuning is 1V/Oct for output range 0-10V and -5+5V ranges, and 0.5V/Oct for 0-5V range.
To enable note CV tuning mode, hold down LEARN switch and move Pitchbend wheel up, then release LEARN switch and return Pitchbend wheel to neutral.
To disable note CV tuning mode, hold down LEARN switch and move the Pitchbend wheel down, then release LEARN switch and return Pitchbend wheel to neutral.
While note tuning mode is in effect, hold down a key and use the pitch wheel to adjust the note’s pitch. Release the key to remember the note’s pitch.
Control Change messages
LFO and EG control CCs (v2.0+):
|LFO CV||90||0 – none
1 – CV1
2 – CV2
3 – CV3
4 – CV4
|LFO Shape||91||0 – sine
1 – sweep
2 – lump
3 – spike
4 – sine3
5 – sine5
6 – triangle
7 – ramp up
8 – ramp down
9 – square
10 – random S/H
11 – random lines
12 – noise
|LFO Rate||92||0 – 127, 0.1 – 100Hertz|
|LFO Sync||93||(reserved, [TBI])|
|LFO Reset||94||0 – free running
1 – reset on note on
|LFO Delay||95||0 – 127, 0 – 10sec|
|LFO Amplitude||96||0 – 127|
|LFO Bipolar||97||0 – unipolar
1 – bipolar
|LFO Waveshape distortion||98||0 – 127|
|LFO Waveshape steppyness||99||0 – 127|
|EG CV||100||0 – none
1 – CV1
2 – CV2
3 – CV3
4 – CV4
|EG Attack||101||0 – 127, 0 – 15sec|
|EG Hold||102||0 – 127, 0 – 15sec|
|EG Decay||103||0 – 127, 0 – 15sec|
|EG Sustain||104||0 – 127|
|EG Release||105||0 – 127, 0 – 15sec|
|EG Gate||106||0 – 127, 0 – 15sec|
|EG Amplitude||107||0 – 127|
|EG Shape||108||0 – linear
1 – expo
2 – sine
|EG Retrigger||109||0 – don’t retrigger on legato notes
1 – retrigger on every note on
|EG Loop||110||0 – none
1 – loop while note is held down
2 – loop endlessly
|EG Sync||111||Retrigger EG in sync with MIDI Clock
0 – none
1 – 1/32T
2 – 1/32
3 – 1/16T
4 – 1/16
5 – 1/8T
6 – 1/16D
7 – 1/8
8 – 1/4T
9 – 1/8D
10 – 1/4
11 – 1/2T
12 – 1/4D
13 – 1/2
14 – 1T
15 – 1/2D
16 – 1
17 – 2T
18 – 1 1/5
19 – 2
|EG Invert||112||0 – normal
1 – inverted
While in note tuning mode Midi2CV Mk2 recognizes the following control messages:
|115||> 0||Reset all notes tuning|
|116||> 0||Reset last note tuning|
|117||> 0||Increment last note tuning|
|118||> 0||Decrement last note tuning|
|119||> 0||Interpolate last note tuning|
You can also use pitch wheel to quickly get note tuning into required range.
Sysex data format
Sysex message format:
0xf0, // Sysex
0x29, // PPG manufacturer ID
'2','C','V',0x00, // Midi2CV Product ID
// * Command byte (SysexCmd)
// * Argument byte (flags | index)
// * Payload bytes (nibbelized)
0xf7 // Sysex end
Sysex message commands:
0x00, // arg=0 reset device, arg=1 update firmware (v1.14+)
0x01, // set controller cc number or 128=AT, 129=PC
0x02, // set strobe width 0-4: 1-5ms
0x03, // set clock divider 0-19: see intervals.h/cc
0x04, // set tune data 128 x int words of tune data
0x05, // set velocity curve, 0-8: linear, soft1/2/3, hard1/2/3, wide1/2
0x06, // set aftertouch curve, 0-8: linear, soft1/2/3, hard1/2/3, wide1/2
0x07, // set number of poly mode voices, 1-4 (v3.00+)
0x08, // set invert strobe mode: 0 - positive, 1 - negative (v1.11+)
0x09, // set invert gate mode: 0 - positive, 1 - negative (v1.12+)
0x0A, // set strobe gate mode: 0 - off, 1 - on (v1.13+)
0x0B, // set pitch bend range: 0 - disable note pitch bend, 1-12 semitones pitch bend (v3.10+)
0x10, // request firmware version (v1.11+)
0x11, // request SETCONTROLLER
0x12, // request SETSTROBEWIDTH
0x13, // request SETCLOCKDIVIDER
0x14, // request SETTUNEDATA
0x15, // request SETVELOCITYCURVE
0x16, // request SETAFTERTOUCHCURVE
0x17, // request SETNUMVOICES (v3.00+)
0x18, // request SETINVERTEDSTROBE (v1.11+)
0x19, // request SETINVERTEDGATE (v1.12+)
0x1A, // request SETSTROBEGATE (v1.13+)
0x1B, // request SETPITCHBENDRANGE (v3.10+)
Midi2CV firmware update steps:
- Connect your MIDI interface output to Midi2CV MIDI IN
- Power on Midi2CV while holding down LEARN switch. LEDs will blink shortly then MIDI IN LED will stay steadily lit.
- Send firmware update sysex file (*.syx) to your MIDI interface port with 250ms delay between sysex buffers. Elektron’s C6 works great on OS X and Windows. Classic MIDI-OX is also good on Windows. MIDI LED will be blink while firmware sysex is being received. On successful update, LEDs will blink 3 times one after another. On error, both LEDs will blink together 5 times.
Starting with firmware version 1.14 you can request firmware update without using LEARN switch by sending RESET DEVICE sysex with argument byte set to 0x01. This facilitates firmware updates for applications where LEARN switch is not present or is difficult to access.
- Fixed problem with note tuning introduced in previous update, thanks to GregC
- Implemented software pitch bend support with configurable range of 0 to 12 semitones.
- Fixed probelms with MIDI channel number wrap around when base channel is set to 16 in DUAL or 14, 15, 16 in QUAD modes.
- Replaced DRUM mode with POLY mode that provides up to 4 channels of true polyphonic voice allocation.
- Re-worked MIDI I/O implementation eliminating jitter and minimizing soft MIDI Thru delay.
- Implemented MIDI Channel LEARN feature.
- Fixed problem with clock output generating clock at incorrect frequency after receiving MIDI Stop followed by MIDI Continue events. Thanks to Benjamin for reporting.
- Implemented more musical LFO fade in
- Added LFO and EG
- Set note CVs to C4 upon start or reset
- Added ability to request firmware update by sysex
- Added “strobe gate” option and sysex
- Added gate polarity option and sysex
- Fixed problems with All Notes Off handling
- Added strobe polarity option and sysex
- Added firmware version request sysex
- added Drum Mode
- changed Note Tuning mode activation to LEARN+PitchBend
- fixed nasty EEEPROM initialization bug
Bill of Materials: Midi2CV Mk2 BOM
Sysex files: Midi2CV_Mk2_v310_syx
Firmware source code: midi2cv_mk2_300_src
Board outline (1:1 PDF): midi2cv_mk2
To order Midi2CV, please send an email to pete at kvitek c o m specifying how many PCBs and pre-programmed MCUs you need, a country where to ship them, and an email address to send the PayPal invoice to.
Prices (US dollars):
Midi2CV PCB — $25
Pre-programmed ATMega328p — $10
Continental USA — $5 (California residents add 8.75% tax)
Canada – $15
Europe – $20
Australia – $20
Please make sure your PayPal shipping address is correct!