Multiple MIDI I/Os

Hi all,

I hope this will be the right forum for my question:
I want to build a MIDI-Router (3 MIDI-INs / 3 MIDI-OUTs). Perhaps I can use a Mega, but are the serial ports of the Mega buffered?
Is there another solution, perhaps with other Serial-UARTs which have a SPI-Bus (does anyone know which type can handle MIDI)?
Has anyone done such thing already and can give me some hints?

Thanks, Holger

I am going to try the same thing. Franky47 is making updates to his awesome MIDI library that allows multiple instances, one on each serial port.
https://github.com/FortySevenEffects/arduino_midi_library/tree/release/4.0

Ahhh, great! This would be a solution on a Mega. I think I have to buy one to test ist.

Thanks, Holger

Yes, I was going to ask a similar question.

I run a MIDI-shield through Serial1 of a mega, keeping Serial0 for normal use (snip the TX/RX pins and use jumpers to TX1/RX1). I'd like to have two MIDI-ins and was thinking of modifying a copy of the MIDI library so as to run more than one instance with piggy-backed shields or breakout boards.

It isn't so easy for someone of my level to know what to change in the library code, but if anyone could indicate what needs to be done (if it can be done) I could do the work. Obviously, a single multichannel version would be great.

Just one very little thing if Franky47 is still working on it: most MIDI devices send Note Off as a Note On with zero velocity (it's in the standard). At present you have to catch that in your Note On handler; easy, but it would be nice to have it built in to the library. It's always OK to send a proper MIDI off.

Just not tested, but if you check out the code of the Arduino MIDI library from the link mymaestro posted, I think there is already a Multi-MIDI(Serial) class in this library (also it seems there is a software MIDI implemented). If I have more time I will try this.

Regards, Holger

@ crlMidi Obviously I cant speak for Franky but I dont think that will change, for compatibility reasons. I have some devices that dont like velocity=0, and others that dont like note off commands. Having to change a library to overcome this is alot more difficult than adding (or not) a short line of code in you main sketch.

I've been looking at ways to have multiple serial ins for a future project, but would prefer to not use a mega as I etch my own barebones boards. I'm considering using a second mega328 and SPIing serial across. I havent tried it yet but I'm sure it would be possible