The sigControl set of C++ classes handle timing and events to be played in real-time, primarily throught MIDI input and output. The set of control classes described here are useful especially for real-time interaction between the computer and MIDI devices, such as synthesizers and the radio drum.
MIDI input and output classes are separated into two categories: (1) private classes to control the hardware/operating system independent coding, and (2) public classes for use in writing programs dealing with MIDI.
Each system configuration must define two classes which will be privately inherited by the classes MidiInPort and MidiOutPort:
Additional classes may also be used to support the two required system classes. This is usually the case with UNIX systems which combine the input and output devices into one unit; on the other hand, MIDI in/out devices are handled separately in Microsoft's Visual C++ and so does not need any supporting classes.
Here are the general descriptions of the MIDI public classes:
MidiInPort | provides basic MIDI input and handles the opening/closing of devices on the system. |
MidiOutPort | provides basic MIDI output and handles the opening/closing of devices on the system. |
MidiPort | combines the functionality of MidiInPort and MidiOutPort. |
MidiInput | Stores incoming MIDI data into a circular buffer. Able to record Midi commands and timing information to a file. |
MidiOutput | defines various MIDI commands such as note-on, program-change, etc. Able to record Midi data passing through the class. |
MidiIO | combines the functionality of the classes MidiInput and MidiOutput into one class. Useful for use with MIDI equipment which must have communication in both directions with the computer, for example, the radio drum. |
RadioDrum | handles MIDI I/O communication protocol for the Radio Drum. |
Synthesizer | handles MIDI I/O communication for synthesizer/computer interaction. Places incoming note on/offs into a circular buffer, and also keeps track of continuous controller messages coming from MIDI in. |
Timer | Provides for timing control of MIDI events. |
MidiMessage | Mostly for use with MIDI input. Contains data fields for one MIDI messages and a timestamp. |
CircularBuffer | This class is also primarily used for MIDI input for storing incoming MIDI messages. |