This class provides a link between applications and RTMIDI. Just like the IDC interface is the bridge between the hardware nodes and the Type A drivers, the IOCtl interface is the link between application nodes and applications. Only Type A drivers can create and destroy hardware nodes, and only applications can create and destroy application nodes.
Applications communicate with application nodes using the MIDISendMessage functiion, which is used to send a block of compound messages. Each compound message has a time stamp telling RTMIDI when the message is to be sent. When the application sends a block of messages, the application node checks the timestamps of all the messages. Each message that has a timestamp equal to or less than the current time is processed immediately. The remaining messages are queued. If the queue is not large enough to hold all messages, the driver places as many messages as it can into the queue and blocks the thread. As time passes, messages are removed from the queue. Eventually, the remaining messages will be queued and at this point the thread is unblocked.
The timestamps of all compound messages in a block must be in chronological order. If a particular message in the block has a timestamp value less than the previous message (msg[n].ulTime < msg[n-1].ulTime), then the timestamp will be treated as if it were equal to the previous message's timestamp. To send a message immediately, set its timestamp to zero.
See the Multimedia Programming Reference for documentation of the RTMIDI application programming interface (API).