In my spare time I’m writing a Midi Console application. This application can manage all the settings of all the midi devices in a studio (Samplers, Sound modules, Drum machines etc.). The onboard user interface of most midi devices are poor (at best) and having an application that allows you to manage settings for multiple devices in a consise way would improve productivity of the mucisian.
Most midi devices support what’s called System Exclusive messages. The content of these messages are not standardized by the MMA but can be freely used by any manufacturer for its own purposes. A typical way to get to all the settings of a midi device is through using these System Exclusive messages.
The way applications dealt with these device specific messages in the past, was to write specific drivers for each device or -at best- have some sort of reference table where each settings was located in the System Exclusive message. This meant that any application targeting System Exclusive message would support a fixed set of midi devices. If your device is not on the list, you could not use the application.
After studying the different binary content layout of System Exclusive message for several manufacturers, it occurred to me that they could be described in a meta language which could than be used to handle the interpretation and compilation of these device specific messages. I decided to use (or abuse most would say) Xml Schema (xsd) to describe the content of these messages.
I’m currently writing a Midi Device Schema Specifications document that describes how one would use Xml Schema for Midi System Exclusive messages. For those who are interested: I post new versions to this thread in the mididev newsgroup and the latest version of the specifications can be found here.
Any feedback is most welcome on any aspect of the specifications or the solution in general.