MIDI stands for: Musical Instrument Digital Interface.

Although most users don't have a Midi device connected to their computer, there should be a pre-installed software device named "Microsoft GS Wavetable Synth" which acts like a Midi device connected to a Midi output port.
In other words, most PC's and Notebooks should be able to play Midi notes and can use:
Application <--> Midi_IO <--> Winmm --> [Microsoft GS Wavetable Synth]

This solution contains the Midi_IO library, a Test Midi_IO application and a Test Minimum application.

The test application allows the user to select / open Midi ports (if available), play voice notes, try different voices, play different drum sounds, send long (sysx) Midi messages and monitor outgoing short- and long- Midi messages in raw hex format, like:
90 32 64
90 32 00
C0 00 00
F0 7F 7F 04 01 00 7F F7

If an external Midi device is connected to the computer through Midi-Interface, USB (Midi over USB), FireWire or otherwise,
then the test aplication can also receive and monitor incoming short- and long- Midi messages.

Midi_IO simplifies the calls to the C++ style functions in Winmm and handles the required buffers in unmanaged memory.

Midi_IO provides functions and raises events for
- Enumerating Input and Output ports
- Opening and closing Input and Output ports
- Sending and receiving short and long (sysx) Midi messages
- Receiving informative Midi messages

There is
- NO support for midiStreamOut
- NO support for other Winmm audio functions


VBForums Midi_IO 1_0_1.zip


The repository can also be found on