GithubHelp home page GithubHelp logo

gdsports / rpi-usb-host-midi-hub Goto Github PK

View Code? Open in Web Editor NEW
42.0 12.0 3.0 103 KB

Raspberry Pi USB host MIDI hub

License: MIT License

Shell 56.56% Python 43.44%
raspberry-pi midi multimidicast ipmidi usb-host extender

rpi-usb-host-midi-hub's Introduction

Raspberry Pi USB Host MIDI hub

USB MIDI hub diagrams

This project turns any Raspberry Pi into a USB host MIDI hub. The simplest case is to plug two USB MIDI devices into the MIDI hub. The Pi hub automatically routes MIDI IN to MIDI OUT of the two USB MIDI devices. No user intervention is required. Once setup, the MIDI hub is as easy to use as an Ethernet hub/switch. For example, plug in a guitar amp/effects box and a MIDI stompbox controller. If DIN interfaces are needed, there are many USB MIDI to DIN cables.

Linux supports USB MIDI devices but user intervention is required to patch MIDI IN to MIDI OUT. This project automatically detects and cross connects MIDI IN to MIDI OUT for all MIDI devices it finds.

In addition, ipMIDI is supported for all USB MIDI devices so MIDI devices may be connected to other computers or other MIDI hubs. To run ipMIDI on Mac or Windows see https://www.nerds.de/en/ipmidi.html.

Two Raspberry Pi boards running the this project, communicate over Ethernet so MIDI devices on both boards are connected. A simple case is to plug a MIDI keyboard into midihub-A and a MIDI synth into midihub-B. Connect the midihubs to a Ethernet hub or switch. multimidicast moves MIDI over UDP multicast over Ethernet. Ethernet cables may be much longer than USB or MIDI cables so two or more midi hubs may be used a MIDI over Ethernet extenders.

Do not using using WiFi because it adds delays and packet loss.

Inspired by the following projects

https://github.com/schuyberg/rpi-midi-hub

https://m635j520.blogspot.com/2017/01/using-raspberry-pi-as-midi-usb5-pin.html

https://llg.cubic.org/tools/multimidicast/

Installation

The easiest way to install is to download midihub.run to the Raspberry Pi then run it.

$ sudo sh midihub.run

This will extract and install all the required files. The other files are only required if you want to change the default behavior or settings.

rpi-usb-host-midi-hub's People

Contributors

gdsports avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpi-usb-host-midi-hub's Issues

Error on running script

I'm getting this error:

`Verifying archive integrity... 100% All good.
Uncompressing midihub 100%
creating directory in /etc/, moving midiconnect scripts there, setting permissio ns...
create udev rule to run script on USB add/remove
running multimidicast
running midiconnect!
Traceback (most recent call last):
File "/etc/rpi-midi-hub/midiconnect.py", line 18, in
client=re.search("client (\d*):", line)
File "/usr/lib/python3.9/re.py", line 201, in search
return _compile(pattern, flags).search(string)
TypeError: cannot use a string pattern on a bytes-like object
setup complete.

I can manually connect midi devices using aconnect.
Incidentally I get the same error trying to use the schuyberg script which I tried after.
I'm using a fresh install raspberry pi with bullseye

USB hub

Hey, the readme does not state if a USB hub can be used for the raspberry pi. As far as i know (i am a Pi beginner) it only has one USB port on the board. Thanks for your library

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.