I'm looking at creating a "specialized" MIDI over USB device for a project I'm working on and my requirements have gone beyond that of the Arduino/Pi/etc, due to limited I/O. I am very much a beginner in the world of MIDI, microcontrollers, etc. and would appreciate a jump-off point to get started.

For my project I need a MIDI Receive box that transmits the signal over USB, but I need it to be able to receive from 16 separate input devices. The Arduino Mega and Teensy 3.5/6 have the most UARTs to support this (I've decided against software serial options due to limitations), but the Teensy still only has 6 UART channels. I've come to the conclusion that building my own box would end up working best to allow me to accomplish what I need while avoiding what I don't.

I've found some UART chips from different manufacturers such as Exar and NXP that have 8 channels and also specify that they are built for PCI/PCIe applications, while the ones under the USB category list 2-4 channels. Would that mean I need to hook these 8-channels up to some sort of USB-PCIe adapter? And is it possible to combine two of these to obtain those 16 channels I mentioned? How would I get these to talk to my computer over USB? I read about using a FPGA; would this be the most straight-forward/easiest/most versatile option? Is there also some completely different approach to this which would be better suited?

  • \$\begingroup\$ why do you need to have a single USB device? .... why not 16 USB devices? .... what are some of the 16 input devices that you are connecting? \$\endgroup\$
    – jsotola
    May 15, 2018 at 2:28
  • \$\begingroup\$ Have you considered using "classic" UARTs (e.g. 16650A) via MMIO? \$\endgroup\$ May 15, 2018 at 2:47
  • \$\begingroup\$ @IgnacioVazquez-Abrams I will do some research on this (and MMIO, as I honestly have no idea what that is), but what do you mean by "classic UART"? \$\endgroup\$
    – som3oneMw
    May 15, 2018 at 2:56
  • \$\begingroup\$ Older UARTs that have fallen out of favor, or more modern renditions. \$\endgroup\$ May 15, 2018 at 3:00
  • \$\begingroup\$ nxp.com/products/analog/interfaces/uarts/… \$\endgroup\$ May 15, 2018 at 3:02

1 Answer 1


What's wrong with 16 commercial USB-MIDI interfaces and some USB hubs?

Sure, you can do this with an FPGA, but I'm not sure it makes sense to reinvent the wheel. The problem, at least in my mind, is not so much bringing in 16 different MIDI streams so much as the interface to get that onto a PC and in to whatever software sits at the other end. If you are doing something totally custom then maybe this isn't a major issue. However, if you want to bring the MIDI data into a complex piece of software that someone else wrote, it makes sense to use an interface that the software supports "out of the box". In the case of a commercial software program, this is likely your only option. This means that you have to pick some existing protocol/interface, and build something that can interface with that. Which is probably much easier said than done.

  • \$\begingroup\$ I was hoping to be able to use a single USB device, but to be honest, I got a bit caught up with doing things in a certain way that I hadn't considered using basically a large USB hub. Thanks! \$\endgroup\$
    – som3oneMw
    May 15, 2018 at 2:53
  • \$\begingroup\$ I just realised why I had ignored this to begin with. A few of the MIDI devices are using an Arduino Nano as the "brain", which does not support MIDI over USB unless using software like the LoopBe1 (unless I'm mistaken and things have changed). I know I'm being picky, but my hope is to have all my MIDI devices going into one box with only a single USB cable into the PC. \$\endgroup\$
    – som3oneMw
    May 15, 2018 at 18:19
  • \$\begingroup\$ @som3oneMw The Arduino Nano has a USB-to-serial chip with a hardcoded protocol; it cannot support USB MIDI. If you wanted to build such a device yourself, you needed to use a microcontroller with a programmable USB interface. (And there are MIDI interfaces with more than one port; see my comment above.) \$\endgroup\$
    – CL.
    May 15, 2018 at 18:55
  • \$\begingroup\$ @CL. I had looked at this. Is there any way to get 16 plugged into it? maybe circuitry built in some way to switch the 8 outs to 8 ins? \$\endgroup\$
    – som3oneMw
    May 15, 2018 at 18:59
  • \$\begingroup\$ No, the in/out hardware is completely different. You cannot avoid using at least two devices. \$\endgroup\$
    – CL.
    May 15, 2018 at 19:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.