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).
Specifications
POWER SUPPLY
- +-12V or +-15V, Euro or MOTM power connector
- 50mA@+15V, 10mA@-15V
OUTPUT
- 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
GATE LED
- optional GATE LED, lit when a note is on
MIDI IN
- MIDI IN connector
MIDI OUT
- optional MIDI OUT connector, mirrors MIDI IN
LEARN SWITCH
- 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 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
- hold down and release in less than 5 seconds to reboot the device
WebMIDI configuration and firmware updates (v3.50+)
Navigate your browser to the Midi2CV Mk2 configuration page and select MIDI port names your Midi2CV Mk2 is connected to. Note that you need the two way connection: computer MIDI interface MIDI OUT port should be connected to Midi2CV MIDI IN, and Midi2CV MIDI OUT port should be connected to computer’s MIDI IN port.
Using Midi2CV Mk2 configuration you can do the following:
- query currently installed firmware version
- update firmware to the latest version
- view and change all the device configuration settings
- send and receive device not pitch tuning data
Important: at this time only Chrome and Edge are known to support WebMIDI reliably. Firefox and Opera may work too.
On-board switches
SW1-4 specify default base MIDI channel
- MONO, DUO and POLY modes use the base channel
- 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:
- MONO — classic monophonic mode with last note priority
CV: note, velocity, after touch, control
Gate: gate, strobe, start, clock - DUO — classic duophonic mode
CV: note1, note2, velocity, aftertouch
Gate: gate, strobe, start, clock - QUAD — four pitch CVs on adjacent 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. duo .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 a 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:
After touch CV: linear by default, however, you can choose to adjust the after touch response curve making it softer, harder or wider, similar to velocity CV above.
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. Control change number can be “learned” on the fly: hold down the LEARN switch and turn/click the desired control knob/button.
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.
MIDI Channel
On-board switches SW1-4 specify the 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 the 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.
LFO specifications:
- 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
EG specifications:
- 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.
Polyphonic port mapping
When polyphonic port mapping is enabled and the device is in MONO mode, all CV/Gate outputs will have the same note info. This enables a unison mode in polyphonic setups where each CV/Gate is permanently connected to a voice circuitry. In DUO mode polyphonic port mapping allows duophonic unison mode: single note info is sent to all CV/Gate outputs but when two notes are played, there are two pairs of different CV/Gate outputs.
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.
You can also use Control Change messages to reset, increment/decrement and interpolate note tuning, see the CC table below.
Control Change messages
LFO and EG control CCs (v2.0+):
Parameter | CC | Description |
---|---|---|
LFO CV | 90 | 0 – none 1 – CV1 2 – CV2 3 – CV3 4 – CV4 |
LFO Shape | 91 |
0 – sine |
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 Fade in | 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:
CC | Value | Action |
---|---|---|
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)
// * Modifier byte (SysexMod)
// * Payload bytes (nibbelized)
0xf7 // Sysex end
Sysex commands:
0x00, // request action, mod=action, see SysexMod (v3.50)
0x01, // set continuous controller number 0-119
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, 1-12 semitones (v3.10+)
0x0C, // set poly port mapping: 0 - disable, 1 - enable (v3.50+)
0x0D, // set software MIDI THRU: 0 - disable, 1 - enable (v3.51+)
0x7F, // set all device settings at once
Sysex modifiers:
0x00, // reset device, only for SYSEXCMD_REQUESTACTION (0x00)
0x01, // update firmware, only for SYSEXCMD_REQUESTACTION (0x00)
0x7e, // request state reply SysEx
0x7F, // request state that is set by the command
Firmware update
Midi2CV firmware update steps:
- Connect your MIDI interface output to Midi2CV MIDI IN
- Power on Midi2CV while holding down the LEARN switch. LEDs will blink shortly then MIDI IN LED will stay steadily lit. Alternatively, you can request firmware update by sending ‘request_firmware_update.syx’ file to MIDI IN.
- 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 blinking 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 REQUEST ACTION sysex 0x00 with modifier byte set to 0x01. This facilitates firmware updates for applications where LEARN switch is not present or is difficult to access.
Revision history
v.3.57 11/02/2023
- Optimized LFO/EG CC handling to prevent choking, thanks to Ben A.M.
- Reordered LFO shapes for convenience (most popular go first)
- Changed LFO fade in curve to be more gradual
v.3.55 09/16/2023
- Implemented damper pedal support (CC 64)
- Implemented UNISON4 and UNISON2 options for polyphonic setups
- Implemented Enable Soft MIDI THRU option
- Improved DAC precision at high notes
- If LEARN switch is pressed and released in less than 5 secs with no MIDI input reboot the device
- Revamped SysEx handling, added SYSEXCMD_DEVICESTATE and command modifiers in order to enable web page settings management.
- Fixed problem with note tuning wrapping up to the top when pitch bend is moved all the way down
- Optimized LFO and EG control change handling to prevent device choking on fast MIDI streams
v.3.42 10/27/2022
- Fixed subtle stability issue with gate output, thanks to Chris G.
- Fixed problem with release key retrigger that would retrigger just triggered note.
v.3.40 01/30/2022
- Replaced DUAL mode with classic DUOphonic mode. If you need old DUAL mode please consider using QUAD mode and strobe gates.
v.3.30 01/27/2022
- Replaced PitchBend CV with AfterTouch CV.
v.3.20 08/05/2021
- Fixed problem with note tuning introduced in previous update, thanks to GregC.
v3.10 05/19/2021
- 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.
v3.00 11/30/2020
- 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.
v2.03 6/24/2017
- Implemented MIDI Channel LEARN feature.
v2.02 5/23/2017
- Fixed problem with clock output generating clock at incorrect frequency after receiving MIDI Stop followed by MIDI Continue events. Thanks to Benjamin for reporting.
v2.01 3/8/2017
- Implemented more musical LFO fade in
v2.00 3/7/2017
- Added LFO and EG
v1.14 1/10/2017
- Set note CVs to C4 upon start or reset
- Added ability to request firmware update by sysex
v1.13 11/3/2016
- Added “strobe gate” option and sysex
v1.12 07/02/2015
- Added gate polarity option and sysex
v1.11 06/17/2015
- Fixed problems with All Notes Off handling
- Added strobe polarity option and sysex
- Added firmware version request sysex
v1.10 02/14/2015
- added Drum Mode
- changed Note Tuning mode activation to LEARN+PitchBend
- fixed nasty EEEPROM initialization bug
DIY Resources
Bill of Materials: Midi2CV Mk2 BOM
Firmware: Midi2CV_Mk2_v357
Sysex files: Midi2CV_Mk2_v355_syx
Schematics: midi2cv_mk2
Firmware source code: midi2cv_mk2_300_src
Board outline (1:1 PDF): midi2cv_mk2
Ordering Midi2CV
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
2 x MCP4922 DAC ICs — $10
Shipping:
Continental USA — $5 (California residents add 8.75% tax)
Canada – $15
Europe – $20
Australia – $20
Please make sure your PayPal shipping address is correct!
Midi2CV in 5U format
Parts
MIDI LEARN switch: E-Switch PV2S240NN — DigiKey, Mouser
DIN MIDI connectors: CUI Devices SD-50SN — DigiKey, Mouser
1/4″ connectors: Switchcraft 112AX — DigiKey, Mouser
MOTM
FrontPanel Express panel: 1U_MIDI2CV
MU
Vector format panel: Midi2CV_MU_panel
I have a few of these available for sale, please email me at the address specified on the ordering page.
Hey Peter,
Everything is working with my new build except in DUAL Mode every note higher than the middle F# are that same middle F# note. Everything below that works perfect. I’ve tested on different midi keyboards, and if I transpose down the full keyboard works normally.
Thanks!
That sounds strange. Could you please provide more detail on your setup so I can repro the problem?
Playing on remote Novation Remote SL 37 with either split keyboard on midi channel 1/2. Also tried with Yamaha cbx-k1 and routing through the SL37. I have two modules connected with gate/note/velocity. On both channels this same problems occurs. In every midi setting I try. On all keyboards the problem is solved if I transpose down.
OK, i’ll check it out.
Hello, Peter!
What do I need to know about flashing the Atmega with your hex-es? I use USB TL866 Programmer. What file do I need to upload: midi2cv.hex, midi2cv_eeprom.hex, muboot.hex? And what are the fuses values? Thanks!
You’ll need to know how to use your AVR ISP programmer.
Fuses are:
LFUSE = ff
HFUSE = d4
EFUSE = fd
LOCK = 2f
The core firmware file is midi2cv.hex, the device should work after you flahs it. muboot.hex is the bootloader, you need it only if you want to update firmware by MIDI. If you decide to use it, erase the device, flash bootloader, then main firmware w/o earsing the device. _eeprom.hex is not relevant, just make sure to reset the device if it had some junk in the eeprom.
Thanks Peter! Got it working now!
Hi, I would like to use this to control a Korg Volca Modular. Now I don’t know much about modular, or electronics, but the Volca uses tiny patch cables that are only 1-lead. It has a pre-routed, internal signal path which simplifies its use to ignoramuses like me. Should I connect the Volca’s and Midi2CV’s grounds to prevent dirty voltage signals going across?
Yes, connecting ground is what allows signals to travel over the single wires — they all share the same ground for current return.
Sounds obvious enough. But it really means I should route a ground lead out through the Volca case and connect it to Midi2CV ground, right?
Okay I just tested this and, indeed, I’ve decided to drill a hole in the back of the Volca case to route a ground lead through to the Midi2CV. It works really well! I love the LFO’s Random Lines mode! The AHDSR envelope controls and options are great too. Thanks.
Maybe a silly question, but is it possible to play polyphonically with this midi-to-cv converter?
Not with the standard firmware. However, I have a prototype firmware that implements 4 voice polyphony on 4 x CV / Gate outputs. It was never released it officially.
Thank you, that sounds promising. Is this prototype firmware available somewhere? Will you continue on it or is it (theoretically) possible for others to continue on it (I am programmer myself)?
I never published it formally, and added an item to my ToDo list to review and publish it. This would probably be worked on within next month, if the weather cooperates 😉
Hi, just wondering if you are still considering releasing your polyphonic firmware. This is something I would be very interested in!
Definitely yes, it’ actually in progress, just got distracted by all that corona mess.
Hi, just wonderinf ig you are still considering releasing the polyphonic firmware as this is something I would be very interested in!
Definitely yes, it’ actually in progress, just got distracted by all that corona mess.
Please email me directly for details.
If you can confirm true 4 note polyphonic is an option, then I’ll be ordering one for delivery all the way to Tasmania.
Yeah, there is an unofficial firmware that implements 4 note polyphonic MIDI2CV conversion 4 x (Note CV + Gate)… the core functionality works, i’m in process of figuring out the options.
Pingback: Major MIDI2CV Mk2 upgrade | MidiSizer
Hi Peter, please help me 🙂 How can I reach duophonic mode? Not Dual, because it takes midi from two different channels, and converter works as two independent converters, but I need mode that converter will take midi messages from one channel, for example, to drive a duophonic synth with keyboard.
Make sure you have the latest firmware, select POLY mode, then limit the number of voices to 2 using 0x07 sysex, see the table here: https://midisizer.com/midi2cv-mk2/
Hey Sergey, please update to v3.40 — it has got the classic DUOphonic mode.
Thank you!
Hi, I have an older Midi2CV I built around 2015 (I think?). I was trying to update the firmware, but I’m a little confused. I’ve started up the midi2cv in the firmware update mode by holding down the learn switch and turning it on. I get the the blinking lights and then the stable midi light. In the Midiox sysex window, I configured for 250 ms in between buffers and I loaded in the midi2cv.syx from the latest firmware download. Then I used send/receive sysex. I see the midi and gate lights blinking in groups of 5 while the data is being sent over but then nothing. This sounds like a bunch errors? If I send/receive the request_firmware_version.syx, I get nothing but have gotten responses with other request sysex files. I’m wondering if I’m doing anything wrong here?
What you are doing sounds correct, so the problem may be the MIDI interface you are using. Some of them are not able transfer larger sysexes. Those cheapo MIDI interfaces integrated into a MIDI cable are the known ones that don’t work for firmware updates.
So try a different MIDI interface.
Hello Peter. I am interested in purchasing Midi2CV Mk2 with preprogrammed ATMega328p from Italy. Can you give me more information on how to buy it? My email is: info@novaelectronics.it
Thanks for the attention.
Federico Gavioli
Hello Federico, sure, no problem, please contact me at the email address specified at the ordering page.
Does anyone have a recommended case for a standalone unit? I’m looking to put this in a box with panel mounted din for midi and 3.5mm (7mm ok) TS for CV.
Not that I know of, I only have MOTM and MU panel that I use in my modular.
hi, what is the size (depth) of this module?
Midi2CV PCB is 94x71mm
Hi.
Have you still got the following
Midi2CV PCB — $25
Pre-programmed ATMega328p — $10
2 x MCP4922 DAC ICs — $10
I live in UK
I am right in thinking , once soldered and
assembled and calibrated it will just work , I will build in 5U stand alone
Yes, everything you ask for is in stock. Yes, the device just works, assuming the build is correct.
hey,
i recently got an arp 2600 with midi2cv.. even without any midi in or cv in or anything external to trigger, the arp will just shut off and burst on and off what might be a midi pattern (maybe?)? or might something else be going on? it was run through my power conditioner and on different outlets, so i don’t think it’s a power thing…
here are some vids that might make it more clear…
https://drive.google.com/file/d/1Rettj-WBftKlYXjw9qHvzOLC0rybkfjY/view?usp=sharing, https://drive.google.com/file/d/1f0vkOYqdIc7MY1G2TfMz-NH84ZJzXGnD/view?usp=sharing, https://drive.google.com/file/d/1i34yeTwBSi8EFILIt_53WDs_Va4zeVUA/view?usp=sharing
Well, this certainly does not look like a MIDI problem to me — it most probably something to do with the power supply as it seems to shut down due to overload or for some other reason.
However, you may want to look inside and see if you can disconnect the power connector on the MIDI2CV board to make sure it’s not part of the problem.
Hi Peter, I am interested in purchasing Midi2CV Mk2 for a Minimoog Model D 1srt generation. But I’m wondering if it accept the keyboard.
Do you think the Midi2CV Mk2 can do the job ?
Laurent
I’m not sure what you mean by “accept the keyboard”. Midi2CV Mk2 works with any MIDI keyboard.
I plan to use a FATAR keybed for the Minimoog + MKE card from Doepfer to make a midi keyboard.
Can I connect the MKE to the Midi2CV Mk2 with the Midi in and out connectors to obtain the CV and Gate ? Does it will works ?
Yes, this will work, Midi2CV Mk2 works with any MIDI keboard. BTW, you’ll also have 3 more CVs which can be used for velocity, coontroller, and/or extra LFO or EG.
Hi,
Looking to install this for MIDI IN to a Moog Taurus 1. It’s basically a V/Hz format, but I would want to program the exact voltages for each key for four octaves over 0 – +10v. Could/would I just use the WebMidi Configurator program to do that?
Thanks!
Yes you can. Midi2CV Mk2 allows you to set the voltage for each note if you want.