Picture of Arduino MIDI-in shield
This instructable shows how to build a shield to connect devices that send MIDI signals (e.g. a masterkeyboard) to an Arduino.
The basic schematic is derived from:
Remove these adsRemove these ads by Signing Up

Step 1: The schematic

Picture of The schematic
Basically the schematic is just an optocoupler with some resistors to decouple the MIDI device from the Arduino.
Note that the DIN connector on the left side is seen from the back (solder pin-side).

Step 2: Board layout, parts list, etc.

Picture of Board layout, parts list, etc.
Part list:

Resistors (1 piece each): 220 Ohms, 100 kOhms, 3.3 kOhms
Diode: 1N4148
Optocoupler: 4N28
5 PIN DIN connector (MIDI connector)
2 pinheads 1x8
1 pinhead 1x4
1 pinhead 1x6

It will also work with other Optocouplers (e.g. a 4N35, I used a 4N29)

Attached are the necessary files for etching the board and the eagle-files if you want to make modifications.

Step 3: Production

Picture of Production
Just a few hints for making the shield:

A very good how-to (that actually worked form me unlike many others) for etching the board can be found here:

If you are a noob like me and want to modify the board in eagle then try these instructables:

Soldering the pinheads upwards down on the board so you can directly put it on the arduino is a real pain in the ass. I rasped a head of my soldering iron so that it became small enough to do that job. let me know if you have a better solution.

For this board I used a DIN connector that can be soldered directly to it. If you want to use another one be sure to connect the pins with the numbers on the board to the according pins on the connector. In the pic here the pins are seen from the back (where you solder).

Step 4: Programming

The first thing I did was to erase the microcontroller on my Arduino by uploading a sketch without disconnecting the board before. SO BE CAREFUL NOT TO DO THAT!
Newer versions of the Arduino should be smart enough to avoid this by themselves, but it's not that much work to disconnect the shield before uploading....

To test your board I would recommend to use the sketch from here:
sspence2 years ago
According to the spec sheet for the 4N28 chip, the diagram above is wrong. Starting from the top on the right hand side, you should have pin 6 as N/C, pin5 as out to Arduino (with a 270 ohm to +5v), and pin 4 on the bottom as ground. A better chip would be the 6n138, and follow this schematic.
carkat (author)  sspence2 years ago
sorry, but i don't see the difference. the schematic is exactly as you explained. the only difference is that i use a 3k3 instead of 270R to +5V, which should not make a difference in means of working/not working.
sspence carkat2 years ago
You are grounding the base of the photo transistor through a 100k resistor. why?
carkat (author)  sspence2 years ago
as sid in the instructable in step 1 this is not my schematic, i got it from somewhere else. but from my (limited) understading of electronics this should not make any difference if there are 100k or no resistor.
sspence carkat2 years ago
Apparently, from the comments of others, it does make a difference. They could not get your schematic to work unless that connection was clipped. I can't see a reason for it in the first place, according the the datasheet for the part.
Thanks for the schematic! I have a bit of trouble, too, until I ditched the 100k resistor. It's working like a charm.
nevvkid2 years ago
Is there anybody who got this schematic working? In the Arduino Forum (,22447.0.html ) somebody was telling that the midi connector is reversed is this true? The Sparkfun MidiShield has it reversed
But they are using a different optocopler.
Here some other guy is telling that the schematic is wrong -

In the end i want to use it with the Arduino MIDI Lib it would be helpful to have Schematic with an LED or Servo to check if it's working and the related sketch for it.

Anybody out there who could help?


carkat (author)  nevvkid2 years ago
sorry for the late reply - i was offline for a few days. all i can say is that this shield worked well, though i used a quite old arduino (arduino ng), but that should not pose a problem. the midi connector in the schematic of the forum is reversed, but the schematic in step 1 of this instructable is correct (read the remarkt on step 1 for details). also the schematic in general should not be wrong - the same one is shown on the midi - homepage at
pluseinn4 years ago
If you are having a problem with this schematic then this might help. Don't connect anything to the pin with the 100k resistor on the drawing. This took me a week to figure out.
gel.5 years ago
Would you know where to buy a MIDI connector? I've been having problems finding a source besides SparkFun.
carkat (author)  gel.5 years ago
hm - i could recommend some place but don't know if they would be helpful since i'm based in austria/europe. mabe someone else has an idea?
RPisces5 years ago
I made this circuit, debugged it, asked in forums, and it STILL does not work!!! What could be wrong? I am using the 4N28 as above
carkat (author)  RPisces5 years ago
uh... hard to say from a distance... maybe a few hints:
- is it really the circuit or is something wrong with the arduino (i had that problem, see above) or is the MIDI-signal not coming through properly?
- are there any solder bridges or something that looks strange?
- did you solder the DIN connector to the circuit in  the right way
- try to change the optocoupler, i once had a broken one
... anyone more suggestions?

RPisces carkat5 years ago
Ok I fixed it. It seems that it does not operate with the 100K resistor on pin 6 connected to ground. I removed the resistor, and left pin 6 connected to nnothing, and I am now registering serial data. Now I just have to verify the operation will be reliable...
daulef5 years ago
I'm going to try and use this with the Auduino Synth, maybe use a proto-shield instead of etching my own though..
carkat (author)  daulef5 years ago
this sounds great! would be cool if you could write an Instructable when you figured it out... i would definitely like to build one! best, carlos
daulef carkat5 years ago
I've got a couple of instructables in the works atm, but the midi auduino is on the cards!
ReCreate5 years ago
Wait..Arduino's can play midi's?
carkat (author)  ReCreate5 years ago
well, at least it can recognise the MIDI signals. what you are doing with the signals then is up to you: assigning frequencies to it and sending it to an amp/speaker (=a simple synth) or driving relays (like i am going to do) are just two of a lot of possibilities :-)
ReCreate carkat5 years ago
Oh i get it now ;)
uCHobby6 years ago
I recently posted about some Breadboard adapters at uCHobby including a MIDI In and MIDI Out adapters. These could be used the Arduino and feature an enable that allow for safe use along with the boot loader. I will try to have a more detailed write up on the MIDI adapters soon.