Umbrellas - a DIY MIDI interface/router/host add-on for Raspberry Pi 4

Umbrellas is a multi-interface MIDI hat for Raspberry Pi 4.

Some time back I noticed that the pi4 has 5 UARTs and thus could act as a multi-port hardware MIDI and USBMIDI router. Hardware/software hacking ensued :slight_smile:

Thread here for questions and development/hacking ideas.


  • 4 Hardware MIDI Ins - TRS/DIN (2 TRS, 2 are TRS or DIN)
    Auto-sensing - Accepts either TRS Type-A or Type-B

  • 4 Hardware MIDI Outs - TRS/DIN (2 TRS, 2 are TRS or DIN)
    TRS are switchable between Type-A or Type-B

  • 4 USBMIDI ports (and can support USB hubs for more)

  • 1 USB Host adapter (USB-C with QtPy/XAIO add-on)*

  • MIDI activity leds

  • On/Off safe shutdown switch for Pi

  • Web-based configuration tool for managing MIDI connections

  • Uses stock RasPiOS (Desktop or Lite) with some configuration

* The USB Host adapter allows you to connect a “USB Host” like a computer, iPad, norns, organelle, etc. and interface with it the same way you would with other MIDI devices.

Demo video:

Available as a DIY kit


Q: Will this work with a Raspberry Pi 2/3/3b/3b+?
A: It’s designed for Pi4 because we can take advantage ot it’s 5 UARTs for the hardware MIDI I/O. With Pi 2/3/3b/3b+ only 2 of the hardware MIDI ports will work as there’s only 2 uarts.


updated top post with new pictures of 2.0 re-design


This looks great!
Nice work


This looks absolutely fantastic! I’ve been looking for something like this for a while - a single, small standalone device that allows midi interconnections between DIN, TRS, USB client and USB host. My Expert Sleepers FH-2 has both USB host and client connections, which is incredibly useful.

Any idea how much it will cost (even a range)? Plus, any chance of selling assembled versions of this (of course, if it is just a hat with no soldering required, I think I could handle that :grinning:)?

Thanks in advance!

1 Like

Initially it’s a kit that requires Thru-Hole soldering. It’s 2 pcbs stacked up with a header and then there’s the pi header and the DIN jacks - all pretty easy soldering. Cost is to be around $50-75 for the kit (depending on case or not).

Raspberry Pi4 is required and not included (best to use a 1GB or 2GB as it’s not using too much power). Sadly they are in pretty limited supply :frowning:



I do see that most Raspberry Pi 4’s are out of stock :slightly_frowning_face:. Is there any advantage whatsoever to getting the 2 GB model for this purpose?


Maybe RTP midi at some point?

hey, nice work!

is this related to / a replacement for the Fates midi port expansion you mentioned a while ago? :))

1 Like

No real advantage to using the larger RAM models. I’m using 2GBs because that’s what I have.

Yeah probably. It’s all hackable :grin:

I’ve done Bluetooth MIDI in testing which worked with iOS devices - but haven’t tried RTP-MIDI as yet. This - rtpmidi user guide - looks like a possible good option.

Not directly related - two separate things. Creating a little pool of MIDI widgets. :slight_smile:


I’m curious if this could have similar applications to the Midi Hub from Blokas?

Yes. Umbrellas is geared towards hosting both hardware midi and usbmidi devices. (Midihub does not host usbmidi devices I believe)

However at the moment midihub has far more advanced software options/config for filtering.

I’m hoping as it gets out to people umbrellas will have some community dev that expands its capabilities.


This looks great @okyeron! Do you plan on implementing an API (Lua? Python?) for extending functionality?

Who’s going to rewrite the MI MIDIPal apps for it? :slight_smile:

An API would be a nice goal.

I’ve been trying a number of different open source software things trying to find something that fits for extending functionality.

mididings seems like a possible candidate but is kinda a pain to get working on the RasPi and might be overly complex.

I also went down a rabbit hole of trying to find a lightweight host for LV2 plugins. (doing something like mod-host)

A lightweight custom solution would be great, but I’m a very hacky coder so some help in this area would be welcome.

1 Like

Have had my umbrellas for a few days now, and driving home from work today I was thinking about it being a global clock for all connected gear and then the idea of it also being a clock divider.

In the web interface you would set the global bpm, and could assign clock divisions to different outputs.

I’d have no idea where to start with this, but would love to help out if I can.

do you use jackd to do the routing or do you have a custom daemon in between?

for the later use-case, and if using python, i’ve had good success w/ the mido library. it may be the best midi lib i’ve used in any lang.

Just regular alsa

Will look into mido

Take a look into what uses. It might also be a good place to ask about midi and lv2 plugin hosting.

I’m somewhat familiar with zynthian.

I did a bunch of research on lv2 hosting and came up short for something that’s not stupid complicated to install or requires loads of other dependencies. I forget the details right now tho. ;-\

Install bug

It seems there’s a bug in the install script around permissions with regards to the “Save” function in the web interface. I’ll try to get this sorted out soon.

Troubleshooting Tip

If the umbrellas_host (the QTpy) is not showing up on your host device - hit the reset button on the QTpy once - this will reset/reboot the QTpy and should bring the umbrellas_host port back up on your connected computer.

(need to debug this and hopefully find a fix in firmware)

If you have trouble reaching the QTPy reset button - use one of the paper cocktail umbrellas included in your kit. :grin: :parasol_on_ground:


It appears the rp2040 can have 6 (2 dedicated, 4 PIO) :

Considering availability, perhaps more hacking ensuement could be inspired? :innocent: