Creative Commons images are CC BY-NC-SA 3.0

$ 17.96

10% off

Sale ends

added to your
shopping cart

In stock 48 in stock
19.95 retail price
17.96 1+ units
16.96 100+ units
Need larger quantities?
Check out our Volume Sales program

Description: The SparkFun MIDI Shield board gives your Arduino-based device access to the antiquated, but still widely used and well supported MIDI communication protocol, so you can control synthesizers, sequencers, and other musical devices. The MIDI protocol shares many similarities with standard asynchronous serial interfaces, so you can use the UART pins of your Arduino to send and receive MIDI’s event messages.

The SparkFun MIDI Shield provides an opto-isolated MIDI-IN port as well as a MIDI-OUT port. The MIDI Shield can be mounted directly on top of an Arduino, connecting the MIDI-IN to the Arduino’s hardware RX pin and the MIDI-OUT to TX. Potentiometers are connected to analog pins 1 and 2, and can be used to control volume, pitch, tone or anything else you’d like. The shield also comes with three momentary push buttons, a reset button, and green and red stat LEDs. The RUN/PROG switch allows you to program the Arduino over serial without having to remove the shield.

This revision of the SparkFun MIDI Shield also adds several configurable features, such as converting the MIDI output to a MIDI thru, and the option to use a software serial port for MIDI, leaving the hardware serial for programming and debugging. It also buffers the output, making it compatible with the Arduino Pro without needing to circumvent the protection resistors on the serial TX and RX lines.

Note: The MIDI Shield does not come with all parts soldered on. Two MIDI connectors, two trimpots, and three pushbuttons are included with the product and will need to be attached by the end user.


  • SparkFun MIDI Shield PCB
  • 2x 5-pin DIN conectors
  • 2x 10K rotary potentiometer
  • 3x 12mm tactile pushbutton switches


Recommended Products

Customer Comments

  • Curious if this shield will work with an Arduino Mega? Thanks

  • I flashed my Arduino UNO with the MocoLUFA USB-MIDI firmware, making it a class-compliant USB-MIDI interface that can be used with my iPad. I am using the Arduino Midi Library in my sketch.

    When I set the Midi Shield’s RUN/PROG switch to the “RUN” position, midi-in from the shield’s DIN port transfers to the USB-MIDI port, and I can record midi to my iPad, but midi-out from my iPad through the USB port does not get transferred to the midi-out DIN.

    When I set the RUN/PROG switch to “PROG”, the opposite is true. I can send midi-out from iPad USB and it will transfer to the shield’s midi-out DIN port, but midi-in from the shield’s DIN port does not work.

    Is there way to have both? I would like midi-in from the DIN to go to the USB-MIDI out, and midi-in from USB-MIDI to go to the shield’s midi-out DIN port, at the same time, without having to flip a switch and choose between exclusive in or out.

  • I am trying to download the midi library suggested in the hook up guide. When I try to add it I get an arduino error message “specified folder/zip file does not contain a valid library”. Checked some user groups and some say arduino can’t handle the special characters (underscore) and some say it can. Any ideas on what else to try.

    • I don’t know if the 47 Effects library is up to date with the latest automatic Arduino library manager format. You might have to install it manually. I installed it by copying the contents of the /src/ directory into my Arduino library directory: C:\Users\byron.j\Documents\Arduino\libraries\MIDI

      After that, when I start Arduino, MIDI simply shows up in the ‘sketch->include library’ menu. You don’t need to ‘add…’ or ‘manage…’ the library.

      It’s building in Arduino 1.6.5, running under Windows 7.

      Perusing my libraries directory, I see a number of other libraries with underscores in the directory and file names, so I’m not sure that’s the problem.

    • Make sure you’re nesting the library properly. If you manually add it to Arduino but nest in too many directories, it won’t read properly. Your structure should look like the following: arduino>libraries>Midi_Library>src/examples

Customer Reviews

4.8 out of 5

Based on 6 ratings:

5 star
4 star
3 star
2 star
1 star

You are the Best

It worked pretty well. Am so happy with the product. I hope to do more business with sparkfun in Future

Easy arpeggiator

I bought this to create a little standalone MIDI arpeggiator using Brendan Clarke’s code found here: It works great (I used the default jumper settings), and the shield was a very simple build. I have another Arduino that I use as a USB host for USB MIDI controllers (the controller’s USB output is converted to DIN MIDI via a non-Sparkfun MIDI shield). The controls on the Sparkfun could be really useful in that application, too.

Perfect for my MIDI Project

I use it on an Arduino Uno to connect a Roland PC-100 keyboard to a Roland CM-32L sound module. I would advise against changing the default hardware serial configuration. I tried software serial for MIDI but noticed dropped data, plus I almost destroyed the shield trying to desolder and change the jumpers back to hardware serial communications.

Great gift for my son's birthday

I got this for my son’s 15th birthday, he is really into MIDI stuff and python programming for MIDI, and arduino. I was amazed how fast he had this kit soldered up, we barely had finished the cake and ice cream and he had it attached to his m-audio keyboard and making sounds. Thanks for a great product.

Great shield!

I used this for my Halloween project - a sidewalk keyboard. The MIDI shield made the music-making part easy. I didn’t think I’d use the pots and buttons but they came in handy, too, for controlling LED blink rates and MIDI program changes.

Related Tutorials

MIDI Shield Hookup Guide

October 8, 2015

How to assemble the SparkFun MIDI Shield, plus several example projects.

MIDI Tutorial

October 8, 2015

Understanding the Musical Instrument Digital Interface.