I2c2midi – a DIY module that translates I2C to MIDI

I’m a big fan of Teletype and the I2C protocol. Lately, I have been experimenting with the idea of using I2C to control external devices outside of the Eurorack case.
Here’s a little prototype module that I’ve built – and which I would like to share with you.

There are two reasons for me to post it here on lines:

First – Maybe someone else finds this module helpful and would like to build it or modify it. The schematic, BOM, firmware code and more details are all in the Github Repo.

Second – I am definitely no expert in electronics nor circuitry design … But I’m sure some of you here in this great community are! So I’m very much looking for input on how to improve it or even correct some mistakes I made. Ideas, recommendations and tips are greatly appreciated and I am happy about everyone who wants to contribute.

Thanks!


i2c2midi

i2c2midi is a simple DIY 3 hp eurorack module that speaks I2C and MIDI. It’s primarily build to be used together with monome Teletype. It receives I2C messages from Teletype and converts them to either MIDI notes or MIDI CC messages to control external devices like synths and effects.

Currently in prototype status: The first prototype was built using a horizontal protoboard and a LEGO 2x16 plate as front panel.

Todo: Create a PCB and proper front panel.


Details

  • DIY eurorack module (prototype)
  • 3 hp (LEGO front panel)
  • Inputs: I2C
  • Outputs: 1 x MIDI TRS (Type A)
  • Based on Teensy 3.2


Usage

The firmware is written specifically for I2C messages sent from Teletype using the disting Ex MIDI OPs by scanner-darkly. The module “poses” as a second disting.

Send MIDI notes

EX 2
EX.M.CH channel
EX.M.N note velocity

Send MIDI CCs

EX 2 
EX.M.CH channel
EX.M.N controller value

Note off messages

The firmware takes care of Note off messages automatically, but is currently monophonic per channel. Note off messages are sent when a new Note on message arrives or after 500 ms.

Todo: Make the note duration of 500 ms editable via I2C as well.
Todo: Make it handle polyphony.

Example

I am using the module together with a MIDI splitter, having Elektron Analog Four on channels 1-4, Nord Lead on channels 5-8, and OTO Bim and Bam on channels 15 and 16.
Here’s an example patch, sending MIDI notes and CCs to Elektron Analog Four and Nord Lead from Teletype: https://www.instagram.com/p/CKH3Jq5KxIk/
The main script is:

EX 2                     // following code is for the "second" disting
EX.M.CH + 1 * 4 TOSS     // select A4 or Nord Lead randomly
EX.M.N PN.NEXT 0 127     // send a note
EX.M.CH 5                // select Nord Lead
EX.M.CC 74 RRND 50 127   // control Filter Frequency via CC 

Github Repo

51 Likes

This is awesome, would be excited to use this with teletype.

1 Like

I’ve been following your posts on IG for awhile with this and am super fascinated! I don’t have a lot to contribute at this stage unfortunately but I am super looking forward to seeing how this works out! Great work as always!

1 Like

Amazing! Congratulations! Is there any chance you commercialize this module in the future?

1 Like

Awesome info. A quick question - I use Ansible a lot. If Ansible is connected to Teletype could I get Kria / Meadowphysics / Earthsea to output midi using this?

1 Like

yep, since it uses the disting ops you can use the existing disting modes 3 (all notes sent on MIDI channel 1) and 4 (notes are sent on MIDI channels 1-4).

4 Likes

Thanks @Whatwetalkabout! The build is very very easy – I can only encourage you to build one for yourself :slight_smile:

Thank you @SMesquida. Glad to hear you like it.
I probably won’t be able to commercialize it … but I would like to make it a more “professional” DIY module.

There are three main things I would like to develop further and need help for:

  • Create a proper PCB
  • Create a proper front panel
  • Add polyphony per channel to the firmware
5 Likes

As I recently got a teletype Im very excited to see this type of module being developed. This could very easily be connected internally to the intellijel Performance case or palette and it would give you a dedicated midi DIN output!

5 Likes

Awesome.
You can build the module yourself, the build is very easy!

I will try to find the time soon to update the power supply on the module with voltage regulator.

1 Like

I ordered the parts to build one - primarily so I can use Ansible as well as Teletype with 200e midi. Would be interested in the layout with power regulator.

Im a bit confused by the 2 firmwares to install - i2c_t3 Library and Arduino MIDI library. Once both are installed do you need to change the setting in both these programs or is there additional firmware / settings? I see both libraries but don’t see your settings / code in the GitHub

1 Like

@mlogger
I am really hyped that you are planning to build it. :+1:
Regarding the firmware: You find the code for the Teensy in this file: i2c2midi_firmware.ino. The code uses the two mentioned libraries. You don’t need to make changes to them, only to import them to your Arduino Libraries.

I’ve just uploaded a new version of the circuit and schematic to the Github Repository which includes a voltage regulator, so one can power it from the Eurorack bus board with a standard ribbon cable.

2 Likes

Ok thanks - got you :slight_smile: So the .ino is loaded up in Teensyduino Arduino program (with the 2 libraries included) and compiled to make a .ino.hex file. That .hex is then loaded up using the Teensy uploader program to the Teensy 3,2. I forgot all this since messing with compiling the 16n a few years ago but think it’s something like that.

Thanks for adding the power regulator - I found 2 in my cupboard of spares!

I think also what would be handy is some sort of LED to show incoming I2c / outgoing Midi data / power light or maybe you would see those lights on the midi dongle attached? It is more a troubleshooting thing tbh.

1 Like

ahhh does this mean midi into the er-301?

Just midi to external gear, not to er301. I use regular i2c for er301. The light was more to see you had good data coming from Teletype to the module and data leaving the module, but you would see that on the midi interface dongle attached - so not such a big deal, more of an afterthought.

That’s exactly right. The uploader comes with Teensyduino and works automatically. Uploading works just like with regular Arduino boards by just clicking the Upload button.

LED: Great idea! I was thinking about this, too, but kept it simple for my first build. I have the module running in my case since January and it works really stable and reliable, so I don’t really miss an LED. But it would be great to have one nonetheless. I will try to add one with the next iteration.

Quick note: You only need a digital midi dongle/interface if you want MIDI USB. Otherwise, you can just use a simple “analog” MIDI cable with DIN plugs and connect it directly to MIDI IN of your gear.

1 Like

Disclaimer: I have only tested the voltage regulator very quickly, so please be careful and test everything in a separate case. :+1::innocent:

1 Like

ok - i managed to get this working thanks to @attowatt :slight_smile:

here’s a clip https://www.instagram.com/p/CNCK94gh6WN/?utm_source=ig_web_copy_link

I had a couple of issues on my build. I switched to a different part number stereo out TRS jack. If switching parts make sure to follow the pin out on the stereo jack. The jack i used had a different pin out not aligned to the midi dongle. The second issue was the midi type A dongle. I only had a type B so i also had to flip wires going to the stereo jack also. This was all my own fault. A multimeter really helped trouble shooting :wink:

If you follow the exact instructions and buy the same stereo jack part and type A midi dongle you should have no problems.

@scanner_darkly Would you have an example script for Ansible Kria? of notes sent on Midi channels 1-4. I changed the script to EX mode 4 but not understanding the extra code and hookup. Would you have to physically connect 4 x Ansible gate out’s to 4 trigger in’s on 4 pages of a script or does Teletype read internally using midi ops on the i2c? I saw the example code for er301 and Just Friends setting in the midi in ops. Also not sure of the setting to choose inside Ansible settings

3 Likes

i meant the disting modes in the ansible leader setup - you don’t need to use a teletype to grab notes from ansible and send them to disting midi, you can just send them direct from ansible. if you have the latest ansible beta, when you open the ansible leader setup there should be a forth button in the column where you select which follower to send to, press that to enable the disting follower, then open the disting follower config page and select mode 4 there. here is the detailed description:

1 Like

This is great man :black_heart::+1:

1 Like