OpenTasks/Audio/XMIDI Parser
Open Task | |
Task Name | XMIDI Parser |
Technical Contact(s) | Max Horn |
Subsystem | Audio |
Background:
Several of our games make use of the XMIDI format. We already have a parser for it (see sound/midiparser_xmidi.cpp), which was based on code from the Exult project, but it is incomplete.
The Task:
Specifically, we require support for XMIDI_CONTROLLER_FOR_LOOP and XMIDI_CONTROLLER_NEXT_BREAK. There are many more XMIDI controllers, however, and ideally support for all of them would be great. Some references:
- The XMIDI code from the Exult project (see Exult's audio/midi_drivers/XMidiSequence.cpp) could be used as a reference again.
- In addition, Pentagram has XMidi code based on the Exult code, but may be cleaner (see here).
- Another good reference for this task is the AIL library which has been recently open-sourced by its author. This is in fact where XMIDI comes from, and it even contains specs. To find them, unzip AIL2.ZIP; in there you find A214_D2.ZIP, which when unzipped contains a directory DOC, which in turn contains ASCIIDOC.ZIP, which then contains XMIDI.TXT and some other files which might be of use (e.g. NOTES.TXT).
It may be desirable to combine this with the Accolade MIDI Parser task.