I’ve been plugging away slowly on my Raspberry Pi project of the moment: a MIDI sequencer/controller that doesn’t quite know what it wants to be yet (think I’ll grace it with its own post).
After getting rid of my hardware synth a few years back, I don’t want to buy a new one just to test a project in its early stages. As i’d previously used TiMidity++ as a MIDI server, I decided to install that on the Pi. It installed with no issue, and I quickly got the Pi producing sound with some Java code I appropriated from somewhere on the Internet. Alas, a problem arose when I tried to play a MIDI file; the Pi struggled under the load and shrieked with pain as it dragged out a single note over the space of what seemed like hours. It was at this point I gave up with TiMidity on the Pi.
A week or two later, on feeling compelled to move the project along, I decided to send MIDI over the network to a server running on the desktop. After failing to use netjack2 over wifi, I decided to get a cheap ethernet hub for more efficient data transfer. At the same time, I happened upon a great little program which ended up doing exactly what I needed.
After stumbling on QmidiNet, I quickly found its inspiration multimidicast. This neat little tool allows you to send/receive MIDI on ALSA sequencers on your network. After using aconnect to route midish to multimidicast on the Pi, and multimidicast to TiMidity on the desktop, I was good to go.
When I started playing the MIDI file on the Pi, the desktop churned out the sound delightfully. I was most pleased! After my brief rejoice, I soon careered into a new obstacle - midish doesn’t support real time editing of MIDI tracks, which I intend to be a feature of my project. I’m not quite sure what my next steps are yet, but I’ll hack through it somehow! If anybody’s interested in a more step-by-step guide, let me know. I’ll try and whip something together when I’ve got some spare time.