MIDI To CV The DIY Way

MIDI has been a remarkably popular interface since its inception way back in 1983. Based on existing serial interfaces, and with a broad enough set of features, it remains the defacto standard for communication between musical gear. However, older gear and many modular synths simply don’t grok digital data, instead using analog control voltages to get the job done. Never fear, though – you can convert from one to the other with the goMIDI2CV.

It’s a simple device, hewn from an ATTINY microcontroller. MIDI signals are received at TTL voltage levels, and converted to output voltages by the ATTINY via use of the PWM hardware. A lowpass filter is added to remove the high-frequency content from the output signal.  A 6N138 optocoupler completes the project, to comply with the MIDI standard and ensure the device is not subject to any dangerous voltages from the hardware plugged in.

It’s a simple way to control older non-MIDI compliant hardware, and might make an old modular rig just that much more useful in the studio of today. We’ve seen similar builds before, like this combined CV and Gate converter. 

16 thoughts on “MIDI To CV The DIY Way

  1. Careful with the dspsynth seller, I’ve only received two out of four orders to Jan, he never sends tracking, and communication is about 0 once your money clears PayPal. Sorry, I think his projects are cool, but the designs at not robust, and his business practices are highly questionable.

      1. Hey, I’m not trying to disparage his work so please take my criticisms as advice by my experience. The circuits he produces are very minimal, containing no polarity protection, and rarely with decoupling capacitors … And that isn’t really surprising as many diy kits exclude those types of parts (even my own kits).

        I’ve had trouble with the items I have received, where board layout was a bit cramped for some parts but spacious for others, in the end feeling like some designs are unrefined prior to production/sale.

        So now that I’ve been critical, I can say that the code hasn’t failed me yet, and I fixed one board that I fried due to polarity. And it must be respected that he posts some of his design and code as open source, which is very important in our maker community.

        I always get excited by the designs, and each time I see updates on his site I get inspired to order stuff … But …

        The biggest gap here is communication with customers and a very low delivery success rate (in my experience). I would love for Jan to get his process together and deliver his products and designs. But with my experience i gotta warn yall. (Gosh I feel like a jerk for saying anything)

    1. Yeah I ordered from him a few months ago and still haven’t received my order, even though it was marked shipped. Multiple emails no response. I’d absolutely avoid buying anything from dsp, unless you like getting robbed…Especially with multiple people saying the same happened to them. Just my two cents.

  2. Ignoring any potential bad business practices (I’ve never ordered from him), I find it a step backward to go from midi digital to analog voltages. Analog is only effective locally, right? I remember the early days of current loops to control ancient teletypes that achieved blinding speed of 110 bps. I thought modern designs would use RS-435 for high noise immunity and something like SPI or I2C at the transport protocol. I haven’t been retired that long have I? What am I missing?

    1. You’re missing that voltage can do _anything_ in a modular synth. Output of an envelope follower? A voltage. Input to a VCA? A voltage. Sidechaining! Output of a sequencer or two? Voltage. Input to a VCO? Voltage. Set one sequencer fast to run arpeggios, and the other slow, add the voltages up, and you’ve got chord changes. Etc.

      With MIDI/data, there’s always an attempt on the part of the designer to tell you what any number is for, and that limits what you can do with it. So you’re stuck with whatever the synth designers thought were a good idea, or which they thought they could get through without overloading the interface.

      With voltage control, because there’s just one format for all information, anything can be piped anywhere, and added or modulated, etc. It’s the easiest path to total flexibility, still. And if you’re using signals in the 0 V to 5 V or -5 V to 5 V range, and cables are short and shielded (they are), noise is a tiny problem.

      That said, it might be cool to make a (digital) modular system, but with numbers floating down the tubes instead of voltages. Or you could do a pulse-density modulation thing at a very high frequency to get good bit depth…

  3. I had the same experience. Never shipped the product. That was about a year ago. I was so damn excited too. I bought like one of everything. Waited about 2 months after nothing. No response. After the third time he finally responded. Claimed he sent it and if it came to let him know. Lame!

  4. Hmm. tried the code on a bare tiny85 and it works, but i cannot get the bend portion to work. I placed the declarations under the pinmode (2, OUTPUT); and the GTCCR line in stead of the GTCCR=0
    the rest of the extra code directly above the return on the end of the USI_OVF_vect part.
    I think there is something missing, but as direct register manipulation is not my strongest point, I’m not sure where to look.
    as there is no way to communicate with the author, I’ve decided to ask here

  5. i ordered a dspGsynth, and it never arrived, and he never replied to my emails. he has a load of cool stuff on his website and at least some of it is opensource. but if you can’t be sure you’ll get it….

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.