MIDIValueMap |
struct MIDIValueMap { UInt8 value[128]; };
A custom mapping function to transform MIDI 7-bit values, as contained in note numbers, velocities, control values, etc. y = value[x], where x is the input MIDI value, y the output.
MIDITransform |
Describes how a single type of MIDI event is transformed.
struct MIDITransform { MIDITransformType transform; SInt16 param; };
transform
- The type of transformation to be applied to the event values.
param
- An argument to the transformation method (see description of MIDITransformType).
This structure controls the transformation of various MIDI events other than control changes.
MIDIControlTransform |
Describes a transformation of MIDI control change events.
struct MIDIControlTransform { MIDITransformControlType controlType; MIDITransformControlType remappedControlType; UInt16 controlNumber; MIDITransformType transform; SInt16 param; };
controlType
- The type of control specified by controlNumber
remappedControlType
- If transform is kMIDITransform_MapControl, the output control type
controlNumber
- The control number to be affected.
transform
- The type of transformation to be applied to the event values.
param
- An argument to the transformation method (see description of MIDITransformType).
A single MIDIThruConnectionParams may describe any number of transformations to control
events. It is important that multiple transformations are ordered correctly: filter out,
remap, then alter values.
All transformations are done internally using 14-bit values, so for example, when doing
an add/min/max transform on a 7-bit control value, the parameter must be a 14-bit value.
For example, to add 10 to a control value, param must be (10
MIDIThruConnectionEndpoint |
Describes a source or destination in a MIDIThruConnection.
struct MIDIThruConnectionEndpoint { MIDIEndpointRef endpointRef; MIDIUniqueID uniqueID; };
endpointRef
- The endpoint specified as a MIDIEndpointRef.
uniqueID
- The endpoint specified by its uniqueID.
When creating one of these, you can leave uniqueID 0 if the endpoint exists and you are passing
its MIDIEndpointRef.
When obtaining one of these from CoreMIDI, endpointRef may be NULL if it doesn't exist, but the
uniqueID will always be non-zero.
MIDIThruConnectionParams |
Describes a set of MIDI routings and transformations.
struct MIDIThruConnectionParams { UInt32 version; UInt32 numSources; MIDIThruConnectionEndpoint sources[ kMIDIThruConnection_MaxEndpoints]; UInt32 numDestinations; MIDIThruConnectionEndpoint destinations[ kMIDIThruConnection_MaxEndpoints]; // UInt8 channelMap[16]; UInt8 lowVelocity, highVelocity; UInt8 lowNote, highNote; MIDITransform noteNumber; MIDITransform velocity; MIDITransform keyPressure; MIDITransform channelPressure; MIDITransform programChange; MIDITransform pitchBend; UInt8 filterOutSysEx; UInt8 filterOutMTC; UInt8 filterOutBeatClock; UInt8 filterOutTuneRequest; UInt8 reserved2[3]; UInt8 filterOutAllControls; UInt16 numControlTransforms; UInt16 numMaps; UInt16 reserved3[4]; // remainder of structure is variable-length: // MIDIControlTransform controls[;] // MIDIValueMap maps[;] };
version
- Version of this structure; must be 0.
numSources
- The number of valid sources in the following array.
sources
- All MIDI generated by these sources is routed into this connection for processing and distribution to destinations.
numDestinations
- The number of valid destinations in the following array.
destinations
- All MIDI output from the connection is routed to these destinations.
channelMap
- Maps each of the source 16 MIDI channels to channel 0-15 (1-16) or 0xFF when MIDI from a channel is to be filtered out.
lowVelocity
- Note events with a velocity less than this value are filtered out.
highVelocity
- Note events with a velocity greater than this, if it is not 0, are filtered out.
lowNote
- See highNote.
highNote
- If highNote >= lowNote, then notes outside this range are filtered out. If lowNote > highNote, then notes inside this range are filtered out. This applies to note and polyphonic key pressure events. These fields are ignored if a there is a MIDIValueMap applying to noteNumber.
noteNumber
- Specifies how MIDI note numbers are transformed.
velocity
- Specifies how MIDI note velocities are transformed.
keyPressure
- Specifies how MIDI polyphonic key pressure events are transformed.
channelPressure
- Specifies how MIDI monophonic (channel) pressure events are transformed.
programChange
- Specifies how MIDI program change events are transformed.
pitchBend
- Specifies how MIDI pitch bend events are transformed.
filterOutSysEx
- If 1, specifies that system-exclusive messages are to be filtered out.
filterOutMTC
- If 1, specifies that MIDI Time Code messages are to be filtered out.
filterOutBeatClock
- If 1, specifies the MIDI clock, play, stop, and resume messages are to be filtered out.
filterOutTuneRequest
- If 1, specifies that MIDI Tune Request messages are to be filtered out.
reserved2
- Must be 0.
filterOutAllControls
- If 1, specifies that all MIDI continuous control messages are to be filtered out.
numControlTransforms
- The number of control transformations in the variable-length portion of the struct.
numMaps
- The number of MIDIValueMaps in the variable-length portion of the struct.
reserved3
- Must be 0.
The remainder of the structure is variably-sized. It contains numControlTransform instances of MIDIControlTransform, followed by numMaps instances of MIDIValueMap.
(Last Updated February 25, 2005)