Now hosted by Finnegan Software, Inc. - since March 15, 2007
All references to "me, myself, and I" are those of the original author,
Timur Tabi, except where noted (and at the moment, there are no
notes... :) )
Last Updated: November 19, 1999
The OS/2 Real-Time MIDI Subsystem, or
RTMIDI, provides support for sending and receiving
MIDI messages and processing them in real-time. For more information on
check out my new
on the OS/2 Supersite.
Why does OS/2 need RTMIDI?
OS/2 is a protected, non real-time operating system. This means that
don't have direct hardware access, nor are they real-time. Applications
run in what
is called "user space" or "application space". Device drivers,
which run in "kernel space", do have access to the hardware and are
(to an extent).
The advantage of this is that applications can't hurt
the rest of
the system. If an application crashes, nothing else will be affected.
This is what
the trademark "Crash Protection" means. The drawback is that in order
to do any real-time processing, a device driver is required.
Windows 3.1 is not a protected OS. Applications can do
but they can also take down the entire computer if they crash. Windows
running only true 32-bit Windows 95 applications (and there are a lot
applications then there are true Windows 95 applications) is also
16-bit Windows 3.1 apps can still take down Windows 95.
Therefore, OS/2 applications cannot process MIDI data
This is the main reason why there haven't been any real OS/2 MIDI
date. And this is where RTMIDI comes in.
So you say, "Well, I'll just use a 32-bit Windows MIDI
Good luck. Such appliations have incredibly bad latency problems. Even
OS/2 is nowhere near as bad as Windows. Don't believe me? Check out
from Microsoft on "Overcoming
Timer-Latency Problems in MIDI Sequencers" (you may need to register
with MSDN before you can view it). So what's their solution? Put
timing-sensitive code into a 16-bit DLL. In other words, Microsoft has
the problem, and there is no indication that they will. So if you
want a true
32-bit real-time MIDI solution, OS/2 Warp 4 is a better choice than
How does RTMIDI work?
The core of RTMIDI is a ring-0 physical device driver (PDD) called
is also a dynamical link library (DLL) called RTMIDI.DLL which provides
an API for
applications. For most functions, RTMIDI.DLL just acts like a front-end
but in some cases it actually does some real work.
RTMIDI's primary function is to perform the real-time
needs that an OS/2 application cannot perform, such as:
Sending and receiving MIDI data to/from the hardware.
Timestamping of MIDI data with millisecond accuracy
Providing real-time playback of MIDI data
Providing real-time synchronization
Providing the ability to process MIDI data in real-time
What other information on RTMIDI is
The DevCon 8 documentation, in INF format is available here.
OS/2 API Project
is slowly being updated to include all of the RTMIDI API's, including
calls in OS/2 Warp 4. If you don't find what you need, email
Also on the DevCon
you can find JRTMIDI,
a Java interface to RTMIDI.
If you're a Pascal programmer, you might be interested in this header
The RTMIDI architecture was presented at the following
OS/2 Warp Game Developer Conference in San Mateo, California on
August 15, 1995.
IBM Technical Interchange in Paris, France from October 2 to
October 6, 1995.
ColoradOS/2 - from October
14, 1996 to October 18, 1996.
Click here to download the latest version of
Graphics overheads that I use for presentations on RTMIDI. This file
with Freelance Graphics 2.1 for OS/2, but it should work on all
versions of FLG.
What are the RTMIDI release dates?
The first release, dubbed Phase I, was made available on DevCon
8 as part of the Entertainment Toolkit.
Phase I provides real-time playback and high-resolution
A much improved version, called Phase 1.5, was released
in OS/2 Warp
4. However, all of the enhancements are officially undocumented. Look
on this page and on the The
API Project. Currently, the documentation isn't up to date, so email
me if you want to know more.
There is an update to RTMIDI available from IBM
that you should
download. It is available on the DD
Here are some web sites and articles
that reference RTMIDI. If you know of a MIDI
programming site that doesn't have an entry on RTMIDI, send a note to
and to me (so I can bug him/her too!).
A generic driver for sound cards with true hardware MPU-401
compatability (e.g. not the AWE-32). It only uses UART (dumb)
mode. This driver is also an MMPM/2 driver. The source code is
available on the DevCon
A generic driver for sound cards with true hardware Yamaha OPL-3 FM
chips. This driver is also an MMPM/2 driver.
The latest drivers for Warp 4 support RTMIDI, but not MIDI input
The Manley Gravis
Drivers - Excellent drivers for your Advanced Gravis soundcard,
RTMIDI support will be added soon.
- This drivers supports the WaveFront MIDI synthesizer on the Turtle
Beach Classic. It comes with an updated MPU401.SYS as well.