Building a MIDI to CV converter with the RP2040 (part 1)
[music
electronics
pico
analog
synth
]
Goal: I have a few MIDI keyboards mouldering in the house and a newly built (by me) Erica/MKI modular synthesizer, but no way to get them to talk to one another. You could buy a gadget to do it, but where’s the fun in that? So let’s build a device which will generate output control voltages. The premise is to read in MIDI signals, use a RP2040 microcontroller to interpret the commands, and then use a D2A converter to output the relevant control voltages. Discussion of precedent, parts, and design goals…
Precedent/previous work
AxWax has a two-part series describing a build like this. In his first episode he generates a control voltage (CV) (and uses the direct output from a RP2040 GPIO pin as the trigger). In the second episode he expands this to generate two CV outputs and reads from some sensors. This is a good starting point for our project
Like me, he uses an RP2040 and has a python-based code posted online. It uses the SimpleMIDIDecoder.py library.
Areas where I want to do things differently: (i) use a pre-build MIDI interface (with the optocoupler already incorporated); (ii) use a Quad D2A rather than use a dual…because…why not! But otherwise, this is a solid starting point
Some areas to pursue for the future
- Software-defined LFO (just shape the control voltage)
- Interesting software-defined sequencers
- Get power from a Eurorack? For now just run it off the USB serial power.
- Act as a USB Host and accept USB keyboard/mouse input like the Northcoast Synthesis Gracious Host Module
Bill of materials
- Adafruit MIDI featherwing includes optoisolator and jacks. $6.95
- Adafruit MCP4728 Quad DAC $7.50
- Breadboard-friend 3.5mm audio jacks $0.95/each
- Raspberry Pi Pico
- Breadboard
To be continued…
Parerga and Paralipomena
- (06/2024) A very nicely polished (DIY-able) Pico MIDI pack—a more pico-friendly alternative to the featherwing format.