Small USB midi host

Years ago, I got one of these for my Arduino:
(actually I got a cheap clone) and it works like a charm. Use it ever since.

There is a really good MIDI library (which also works well on the Teensy - tested by me). I have also written a small MIDI monitor sketch, which passes all commands to a serial console. If anyone is interested, I can put it on my GitHub page, but it really is very simple to write!

However, instead of using a Shield, shiftr sketch is easy to implement, and the standard. This basically is the circuit that is implemented on virtually every shield. The MIDI Dins are used like a normal serial line, so they get connected to the TX/RX pins. MIDI out can be directly connected, MIDI in requires an opto-coupler to filter noise etc.

What is on my list to build this summer is actually an absolutely versatile MIDI router. What I have in mind are 4-5 MIDI ins (to reduce latency by avoiding serial Through connection), 4-5 MIDI outs (to connect several devices of course), and a USB (for USB-DIN routing), a small display and some pots (to dynamically change routing). Perfectly, all DINs can be dynamically switched between input and output. It is not high on my priority list, but like I said: my plan for summer. I can keep you updated on my progress.

mr_sibs: I can build one for you, but I don’t think it is worth the trouble.
PM me if you are interested anyway…

Thanks @Karg the shield looks like an interesting idea, if it’s just a matter of sitting it on the arduino then that should be simple. It’s the sketch I’d struggle with, does yours cover the USB midi host part sending MIDI information from the USB device to the MIDI out? That’s all I need this gadget to do

"I like the idea of the RPi but can’t seem to find a midi expander/board anywhere, " <- you would just use a (class-compliant) USB-MIDI-Interface with RPi, so you won’t need to know about electronics (but perhaps a little bit about linux).

I’m using RPi for multimidicast (sending MIDI over LAN), too, so I can easily jam in another room.

Yes, all the shields typically have this functionality. As long as you have a MIDI Din connected to an Arduino, the rest is a software issue.
However, if you are only interested in passing data from USB to the MIDI out, and not the other way around, a shield is not necessary. You can focus on the “Out”-Part in the above diagram. Or putting is even simpler, just do what is described on this single page and igonore all other steps in this instructional:

With an Arduino, you are really flexible in these things, can use any digital pin, and can even do stuff like transpose all midi notes, etc.
After telling me which pin on the Arduino you want/have used for what in the instructable is D1, I can write a small sketch for you. Do not worry about that.

Just make sure you get an Arduino with a 8U2 or 16U2 chip for the USB stuff (i.e. an Uno, Due or MEGA), and things will be very easy and convenient to use afterwards.

FYI, the Raspberry Pi option doesn’t need a MIDI shield, just a $5 USB MIDI cable and one aconnect line in the startup script. Admittedly, for those not familiar with Linux, there’s a little tweaking you need to do for the initial setup that can be frustrating, but once you’ve got it all set it’ll just work on startup without having to do anything and without the need for a keyboard or display hooked up.

Thanks @bleo that sounds very easy! I still might try the arduino or USB Host option above simply because they will be much smaller (size is key here otherwise I’d just get a proper keyboard!)

I agree with bleo, Raspberry is also a valid option.
However, the Raspberry will typically give you more power for the buck, and better options for end-user periphery, while the Arduino will be cheaper, smaller, and typically better for hardware tweaks (more in outs, direct hardware access, real-time system, etc).
For a midi converter, I would go for the Arduino.

I would always prefer a Arduino solution if it’s only about converting USB<->MIDI.

Raspberry Pi is nice when you have several uses for it (mine acts as a HTPC until I insert a MIDI-device), but it is much more complex and therefore much more fault-prone. An Arduino will boot in one second or so, while you may wait a minute for the RPi to come up. An Arduino will probably always boot, while you may have to deal with SD-Card corruptions on RPi, and so on.

The new raspberry pi model a is TINY and comes with one usb port. It was smaller than my cheaper midi interface at least!

Also running arch linux the pi boots in under 10secs fwiw.

@herrprof won’t it need two USB inputs, one for the midi device (keyboard), one for the USB/MIDI socket converter?

whoops yea! But youll need a powered hub for most things anyways. Plus it can power the pi itself!

Ah I see, so get a powered hub, that powers the Pi and other devices I can use with it

When backpowering the Pi with a powered hub you should a) make sure that the hub is delivering enough power on one port, since from the USB specification it should be never more than 500mA (what maybe would be enough for Type A, but definitely not for Type B) and b) be aware that you are bypassing the fuse protection from the Pi. You can read more about backpowering at

Maybe this one is next candidate :slight_smile:

CHIP 9$ Computer especially pocket version might be usefull

this one is £15 and by itself, in a 5cm by 10cm box with a 5v regulator, worked great.

I tested it with the shruthi and every parameter seem to work!
make sure you get the midi host option!

Nice Find! Is it true it can only do midi channel 1-8 though?

I normally have my master keyboard on ch10 and seems fine!
I velcroed the usb thingy to the shruthi and they seem happy together.

Nice. I’m wondering if you could just power this hobbytronics board off the Shruthi’s spare 5v connector, in the ‘input expansion’ bit?