Skip to content

USB MIDI interfaces

Dale Whinham edited this page Nov 29, 2020 · 20 revisions

USB MIDI interfaces are commonly used to send and receive MIDI data from a modern PC. You can also use a USB MIDI interface to receive data on mt32-pi.

Compatibility

If you're shopping for a USB MIDI interface, the following devices have been confirmed as working properly by our testers. Feel free to contribute test results with your own MIDI interfaces and we can list known working ones!

Manufacturer Device Send Receive Comments
M-Audio MIDISport 1x1 βœ” βœ” 1 in, 1 out; female DIN sockets. Tested by @nswaldman.
M-Audio Uno βœ” βœ” 1 in, 1 out; male DIN plugs. Tested by @dwhinham.
Roland UM-1EX βœ” ❓ 1 in, 1 out; male DIN plugs. Tested by @Higgy69.
Roland UM-ONE mk2 βœ” βœ” 1 in, 1 out; male DIN plugs. Tested by @nswaldman.

⚠️ Note: The Send column indicates that the device has been tested for sending data to mt32-pi (i.e. the USB connection is made with a PC or other device). The Receive column indicates that the device has been tested for receiving data (the USB connection is with the Raspberry Pi).

Cheap/generic USB interfaces

If you are looking to purchase a USB MIDI interface, it is strongly recommended that you avoid no-name cheap interfaces. Don't be tempted by their cheap price. The device pictured on the right is still widely available from online sellers, and is particularly notorious for its poor quality.

These devices are well known to corrupt System Exclusive data or just not function at all because of crucial missing components [1, 2, 3]. A quick Google search for "Chinese MIDI interface" will reveal several accounts of these devices behaving unreliably.

Some of these devices will appear to work just fine for sending simple Note On/Off commands or Control Change messages, which are only two or three bytes long. The problems occur when longer messages such as SysEx are transmitted.

The reason behind this seems to be that these devices declare that they can support packet sizes of over 4 bytes, but don't actually work with large packets. Operating systems/drivers that are unaware of this (e.g. Windows) will attempt to send large packets, and they will be corrupted in transit by the MIDI interface, which results in the connected MIDI device receiving garbage.

Workarounds

The Linux USB MIDI driver has a list of USB Vendor/Product IDs that are known to suffer from this problem, and implements a workaround/quirk for them [1, 2].

If your only option is one of these devices, try using a Linux computer to send data using your cheap MIDI interface. A user in issue #25 reported successfully being able to send SysEx data after connecting their cheap interface to a Linux machine, confirming that the quirk works.

Otherwise, consider purchasing a MIDI interface from a trusted manufacturer.

Clone this wiki locally