Background of the project
For my studies of Media Technologies at the Technical University of Ilmenau it was mandatory to have a so called "Medienprojekt". This translates to a project, which is somehow based around a media topic.
The studio of the university needed a way to communicate via MIDI over a long distance. Much longer, than the 10m MIDI is allowed or can be stretched. This was a good chance for a friend of mine, who is the software guy, and me, who is the hardware guy, to get our media project done and to have another bit solved on the long way to our engineer degree. The whole project was done in 2005.
First Thoughts
If you are confronted with projects like these the first thing to think is: Has anyone done this yes? Are there any ideas? Our task was to transmit and receive MIDI over long distances. So we decided to use the university LAN.
Some implementations existed alreade, but weren't suitable
- You may use two Macs and use the internal MIDI-Ports of OSX, but this is a little bit overpowered and expensive
- There exist other ideas, like MLAN, which can transmit hundreds of audiochannels as well. This is overpowered too.
- dmidi was at the time of the project only available as a webarchive
- A promising approach was RTPMIDI. This is a protocol based on the RTP. A lot of controldata was used to make sure, that the packets reach the destination. After studying the implementation, we decided not to rely on RTPMIDI, because the hardware requirements were to big for an embedded system.
Software
We went for a own solution: The MIDI-Data were collectet from the MIDI-IN-Port and routet instantly to the ethernet. No interpration was done, in fact, if you send garbage in, garbage will be transmitted. The transmission was done via TCP.
Hardware
Ethernut was the weapon of choice. It consists of a hardware platform, which is completely open source. We added a small PCB and connected a Keypad and an LC-Display. We used the EtherNut Kit V1.3 from Egnite.
There is also a RTOS, the Nut/OS and an TCP-Stack, the Nut.net. After a while, we called our babys MidiNut.
Pictures

On the first picture you can see the two housings. Not nice, but it works. De display shows status information, via the keypad you can enter IP-adresses and make configurations.

The second picture shows the inside of the device. It consists of a Ethernut-Board and the IO-Module. This module connects the keypad and the display to the GPIOs on the Ethernut. You may see all of my pictures on my Flickr-Account.
Tests
The most demanding test was programming a Clavia MicroModular via the Midinuts. It worked. This device transmits and receives large amounts of sysex-data and has problems even with some commercial MID-Interfaces.
PS
At the time I am writing this, four years have gone since I have mastered this project (2005-2009). Some details are not as exact as the should be, sorry for that. If you want any information, contact me, I can provide you with anything regarding this project. |