RTMIDI

RTMIDI is a runtime for aiding the creation of real-time MIDI applications, initially developed in the mid 90s by IBM to simplify programming of games, multimedia and music applications but due to its MIDI hardware requirements only really useful for applications that drive MIDI hardware such as sequencers et al. To save programmers from having to create a driver subsystem to interface with hardware RTMIDI takes care of sending and receiving MIDI data in non-real time in addition to offering real-time playback, processing, time-stamping and synchronization of MIDI data.

Not a bad idea in itself and as a concept something that was, and to a degree still is sorely needed for MS Windows and other operating system. However the RTMIDI implementation had some problems and over time they have become more serious, it was never fully finished and does not support the full MIDI specification, stuff like sys-ex is missing altogether and it had no proper mechanism to allow you to extend it yourself. It also had some other problems, although it did not require a full (smart mode) Roland MPU-401 compatibility, i.e. it only required the MIDI/MPU interface to act as a interface and not a processor, it did not support MPU-401 UART mode which was what common sound cards supported, making the library only compatible with a small subset of available MIDI and sound cards. It also had no mechanism for writing your own drivers for MIDI interfaces instead you have to make the drivers for the MIDI interface MPU-401 compatible which for systems like USB interfaces in reality means writing a MPU-401 software emulator.

Furthermore RTMIDI is also only partially documented and only supports low resolution IBM PC/Intel style timers rather than high resolution timers.

For that reason you are advised to stay away from the RTMIDI library and treat it as an historical curiosity, the original author of the software had at one point promised to make the source available to developers (he could not open source it due to IBM ownership of the code), but that never happened so you are better off looking at alternatives.

Not to be confused with the much later RtMidi library for Unix like operating systems.

Version

 * Phase 1.5 included with OS/2 Warp Version 4 and later, but documentation is only available for the older 0.8 version.

Applications and libraries
Applications known to have used RTMIDI include:
 * AudioStation - MIDI sequencer with audio capabilities
 * LBPlay - MIDI player with karaoke capabilities
 * MIDI Station Sequencer - MIDI only sequencer
 * Nota Musica Sequencer - Sequencer with notation capabilities.

Libraries/Bindings that encapsulate RTMIDI:
 * JRTMIDI - Java classes for RTMIDI
 * VisMIDI - IBM VisualAge C++ Open Class interface for RTMIDI

Author

 * IBM
 * Timur Tabi

Links

 * RTMIDI - A copy of Timur Tabi's original RTMIDI information page
 * Partial RTMIDI information from the OS/2 API project