Constants



kMIDIPropertyName


extern const CFStringRef kMIDIPropertyName; 
Discussion

device/entity/endpoint property, string

Devices, entities, and endpoints may all have names. The recommended way to display an endpoint's name is to ask for the endpoint name, and display only that name if it is unique. If it is non-unique, prepend the device name.

A setup editor may allow the user to set the names of both driver-owned and external devices.


kMIDIPropertyManufacturer


extern const CFStringRef kMIDIPropertyManufacturer; 
Discussion

device/endpoint property, string

Drivers should set this property on their devices.

Setup editors may allow the user to set this property on external devices.

Creators of virtual endpoints may set this property on their endpoints.


kMIDIPropertyModel


extern const CFStringRef kMIDIPropertyModel; 
Discussion

device/endpoint property, string

Drivers should set this property on their devices.

Setup editors may allow the user to set this property on external devices.

Creators of virtual endpoints may set this property on their endpoints.


kMIDIPropertyUniqueID


extern const CFStringRef kMIDIPropertyUniqueID; 
Discussion

devices, entities, endpoints all have unique ID's, integer

The system assigns unique ID's to all objects. Creators of virtual endpoints may set this property on their endpoints, though doing so may fail if the chosen ID is not unique.


kMIDIPropertyDeviceID


extern const CFStringRef kMIDIPropertyDeviceID; 
Discussion

device/entity property, integer

The entity's system-exclusive ID, in user-visible form

Drivers may set this property on their devices or entities.

Setup editors may allow the user to set this property on external devices.


kMIDIPropertyReceiveChannels


extern const CFStringRef kMIDIPropertyReceiveChannels; 
Discussion

endpoint property, integer

The value is a bitmap of channels on which the object receives: 1=ch 1, 2=ch 2, 4=ch 3 ... 0x8000=ch 16.

Drivers may set this property on their entities or endpoints.

Setup editors may allow the user to set this property on external endpoints.

Virtual destination may set this property on their endpoints.


kMIDIPropertyTransmitChannels


extern const CFStringRef kMIDIPropertyTransmitChannels; 
Discussion

endpoint property, integer

The value is a bitmap of channels on which the object transmits: 1=ch 1, 2=ch 2, 4=ch 3 ... 0x8000=ch 16.

New for CoreMIDI 1.3.


kMIDIPropertyMaxSysExSpeed


extern const CFStringRef kMIDIPropertyMaxSysExSpeed; 
Discussion

device/entity/endpoint property, integer

Set by the owning driver; should not be touched by other clients. The value is the maximum rate, in bytes/second, at which sysex messages may be sent reliably to this object. (The default value is 3125, as with MIDI 1.0)


kMIDIPropertyAdvanceScheduleTimeMuSec


extern const CFStringRef kMIDIPropertyAdvanceScheduleTimeMuSec; 
Discussion

device/entity/endpoint property, integer

Set by the owning driver; should not be touched by other clients. If it is non-zero, then it is a recommendation of how many microseconds in advance clients should schedule output. Clients should treat this value as a minimum. For devices with a non-zero advance schedule time, drivers will receive outgoing messages to the device at the time they are sent by the client, via MIDISend, and the driver is responsible for scheduling events to be played at the right times according to their timestamps.

As of CoreMIDI 1.3, this property may also be set on virtual destinations (but only the creator of the destination should do so). When a client sends to a virtual destination with an advance schedule time of 0, the virtual destination receives its messages at their scheduled delivery time. If a virtual destination has a non-zero advance schedule time, it receives timestamped messages as soon as they are sent, and must do its own internal scheduling of received events.


kMIDIPropertyIsEmbeddedEntity


extern const CFStringRef kMIDIPropertyIsEmbeddedEntity; 
Discussion

entity/endpoint property, integer

0 if there are external MIDI connectors, 1 if not. New for CoreMIDI 1.1 (Mac OS X 10.1)


kMIDIPropertyIsBroadcast


extern const CFStringRef kMIDIPropertyIsBroadcast; 
Discussion

entity/endpoint property, integer

1 if the endpoint broadcasts messages to all of the other endpoints in the device, 0 if not. Set by the owning driver; should not be touched by other clients. New for CoreMIDI 1.3.


kMIDIPropertySingleRealtimeEntity


extern const CFStringRef kMIDIPropertySingleRealtimeEntity; 
Discussion

device property, integer

Some MIDI interfaces cannot route MIDI realtime messages to individual outputs; they are broadcast. On such devices the inverse is usually also true -- incoming realtime messages cannot be identified as originating from any particular source.

When this property is set on a driver device, it signifies the 0-based index of the entity on which incoming realtime messages from the device will appear to have originated from.

New for CoreMIDI 1.3.


kMIDIPropertyConnectionUniqueID


extern const CFStringRef kMIDIPropertyConnectionUniqueID; 
Discussion

device/entity/endpoint property, integer or CFDataRef

UniqueID of an external device/entity/endpoint attached to this one. As of Mac OS X 10.3, Audio MIDI Setup maintains endpoint-to-external endpoint connections (in 10.2, it connected devices to devices). The property is non-existant or 0 if there is no connection.

New for CoreMIDI 1.1 (Mac OS X 10.1)

Beginning with CoreMIDI 1.3, this property may also be a CFDataRef containing an array of big-endian SInt32's, to allow specifying that a driver object connects to multiple external objects (via MIDI thru-ing or splitting).

This property may also exist for external devices/entities/endpoints, in which case it signifies a MIDI Thru connection to another external device/entity/endpoint (again, it is strongly recommended that it be an endpoint).


kMIDIPropertyOffline


extern const CFStringRef kMIDIPropertyOffline; 
Discussion

device/entity/endpoint property, integer

1 = device is offline (is temporarily absent), 0 = present. Set by the owning driver, on the device; should not be touched by other clients. Property is inherited from the device by its entities and endpoints. New for CoreMIDI 1.1 (Mac OS X 10.1)


kMIDIPropertyPrivate


extern const CFStringRef kMIDIPropertyPrivate; 
Discussion

device/entity/endpoint property, integer

1 = endpoint is private, hidden from other clients. May be set on a device or entity, but they will still appear in the API; only affects whether the owned endpoints are hidden. New for CoreMIDI 1.3.


kMIDIPropertyDriverOwner


extern const CFStringRef kMIDIPropertyDriverOwner; 
Discussion

device/entity/endpoint property, string

Name of the driver that owns a device. Set by the owning driver, on the device; should not be touched by other clients. Property is inherited from the device by its entities and endpoints.

New for CoreMIDI 1.1 (Mac OS X 10.1)


kMIDIPropertyFactoryPatchNameFile


extern const CFStringRef kMIDIPropertyFactoryPatchNameFile; 
Discussion

device/entity/endpoint property, CFData containing AliasHandle.

An alias to the device's current factory patch name file.

Added in CoreMIDI 1.1 (Mac OS X 10.1). DEPRECATED as of CoreMIDI 1.3. Use kMIDIPropertyNameConfiguration instead.


kMIDIPropertyUserPatchNameFile


extern const CFStringRef kMIDIPropertyUserPatchNameFile; 
Discussion

device/entity/endpoint property, CFData containing AliasHandle

An alias to the device's current user patch name file.

Added in CoreMIDI 1.1 (Mac OS X 10.1). DEPRECATED as of CoreMIDI 1.3. Use kMIDIPropertyNameConfiguration instead.


kMIDIPropertyNameConfiguration


extern const CFStringRef kMIDIPropertyNameConfiguration; 
Discussion

device/entity/endpoint property, CFDictionary

This specifies the device's current patch, note and control name values using the MIDINameDocument XML format. This specification requires the use of higher-level, OS-specific constructs outside of the specification, to fully define the current names for a device.

The MIDINameConfiguration property is implementated as a CFDictionary:

key "master" maps to a CFDataRef containing an AliasHandle referring to the device's master name document.

key "banks" maps to a CFDictionaryRef. This dictionary's keys are CFStringRef names of patchBank elements in the master document, and its values are each a CFDictionaryRef: key "file" maps to a CFDataRef containing an AliasHandle to a document containing patches that override those in the master document, and key "patchNameList" maps to a CFStringRef which is the name of the patchNameList element in the overriding document.

key "currentChannelNameSets" maps to a 16-element CFArrayRef, each element of which is a CFStringRef of the name of the current mode for each of the 16 MIDI channels.

key "currentDeviceMode" maps to a CFStringRef containing the name of the device's mode.

Clients setting this property must take particular care to preserve dictionary values other than the ones they are interested in changing, and to properly structure the dictionary.

New for CoreMIDI 1.3.


kMIDIPropertyImage


extern const CFStringRef kMIDIPropertyImage; 
Discussion

device property, CFStringRef which is a full POSIX path to a device or external device's icon, stored in any standard graphic file format such as JPEG, GIF, PNG and TIFF are all acceptable. (See CFURL for functions to convert between POSIX paths and other ways of specifying files.) The image's maximum size should be 128x128.

Drivers should set the icon on the devices they add.

A studio setup editor should allow the user to choose icons for external devices.

New for CoreMIDI 1.3.


kMIDIPropertyDriverVersion


extern const CFStringRef kMIDIPropertyDriverVersion; 
Discussion

device/entity/endpoint property, integer, returns the driver version API of the owning driver (only for driver- owned devices). Drivers need not set this property; applications should not write to it.

New for CoreMIDI 1.3.


kMIDIPropertySupportsGeneralMIDI


extern const CFStringRef kMIDIPropertySupportsGeneralMIDI; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity implements the General MIDI specification.

New for CoreMIDI 1.3.


kMIDIPropertySupportsMMC


extern const CFStringRef kMIDIPropertySupportsMMC; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity implements the MIDI Machine Control portion of the MIDI specification.

New for CoreMIDI 1.3.


kMIDIPropertyCanRoute


extern const CFStringRef kMIDIPropertyCanRoute; // e.g. is patch bay 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity can route MIDI messages to or from other external MIDI devices (as with MIDI patch bays). This should NOT be set on devices which are controlled by drivers.

New for CoreMIDI 1.3.


kMIDIPropertyReceivesClock


extern const CFStringRef kMIDIPropertyReceivesClock; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI beat clock messages.

New for CoreMIDI 1.3.


kMIDIPropertyReceivesMTC


extern const CFStringRef kMIDIPropertyReceivesMTC; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI Time Code messages.

New for CoreMIDI 1.3.


kMIDIPropertyReceivesNotes


extern const CFStringRef kMIDIPropertyReceivesNotes; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI Note On messages.

New for CoreMIDI 1.3.


kMIDIPropertyReceivesProgramChanges


extern const CFStringRef kMIDIPropertyReceivesProgramChanges; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI program change messages.

New for CoreMIDI 1.3.


kMIDIPropertyReceivesBankSelectMSB


extern const CFStringRef kMIDIPropertyReceivesBankSelectMSB; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI bank select MSB messages (control 0).

New for CoreMIDI 1.3.


kMIDIPropertyReceivesBankSelectLSB


extern const CFStringRef kMIDIPropertyReceivesBankSelectLSB; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI bank select LSB messages (control 32).

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsClock


extern const CFStringRef kMIDIPropertyTransmitsClock; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI beat clock messages.

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsMTC


extern const CFStringRef kMIDIPropertyTransmitsMTC; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI Time Code messages.

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsNotes


extern const CFStringRef kMIDIPropertyTransmitsNotes; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI note messages.

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsProgramChanges


extern const CFStringRef kMIDIPropertyTransmitsProgramChanges; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI program change messages.

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsBankSelectMSB


extern const CFStringRef kMIDIPropertyTransmitsBankSelectMSB; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI bank select MSB messages (control 0).

New for CoreMIDI 1.3.


kMIDIPropertyTransmitsBankSelectLSB


extern const CFStringRef kMIDIPropertyTransmitsBankSelectLSB; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI bank select LSB messages (control 32).

New for CoreMIDI 1.3.


kMIDIPropertyPanDisruptsStereo


extern const CFStringRef kMIDIPropertyPanDisruptsStereo; 
Discussion

device/entity property, integer (0/1). Indicates whether the MIDI pan messages (control 10), when sent to the device or entity, cause undesirable effects when playing stereo sounds (e.g. converting the signal to mono). New for CoreMIDI 1.3.


kMIDIPropertyIsSampler


extern const CFStringRef kMIDIPropertyIsSampler; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity plays audio samples in response to MIDI note messages.

New for CoreMIDI 1.3.


kMIDIPropertyIsDrumMachine


extern const CFStringRef kMIDIPropertyIsDrumMachine; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity's sound presets tend to be collections of non-transposable samples (e.g. drum kits).

New for CoreMIDI 1.3.


kMIDIPropertyIsMixer


extern const CFStringRef kMIDIPropertyIsMixer; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity mixes external audio signals, controlled by MIDI messages.

New for CoreMIDI 1.3.


kMIDIPropertyIsEffectUnit


extern const CFStringRef kMIDIPropertyIsEffectUnit; 
Discussion

device/entity property, integer (0/1). Indicates whether the device or entity is primarily a MIDI-controlled audio effect unit (i.e. does not generate sound on its own).

New for CoreMIDI 1.3.


kMIDIPropertyMaxReceiveChannels


extern const CFStringRef kMIDIPropertyMaxReceiveChannels; 
Discussion

device/entity property, integer (0-16). Indicates the maximum number of MIDI channels on which a device may simultaneously receive MIDI Channel Messages. Common values are 0 (devices which only respond to System Messages), 1 (non-multitimbral devices), and 16 (fully multitimbral devices). Other values are possible, for example devices which are multi-timbral but have fewer than 16 "parts".

New for CoreMIDI 1.3.


kMIDIPropertyMaxTransmitChannels


extern const CFStringRef kMIDIPropertyMaxTransmitChannels; 
Discussion

device/entity property, integer (0/1). Indicates the maximum number of MIDI channels on which a device may simultaneously transmit MIDI Channel Messages. Common values are 0, 1 and 16.

New for CoreMIDI 1.3.


kMIDIPropertyDriverDeviceEditorApp


extern const CFStringRef kMIDIPropertyDriverDeviceEditorApp; 
Discussion

device property, string, contains the full path to an application which knows how to configure this driver-owned devices. Drivers may set this property on their owned devices. Applications must not write to it.

New for CoreMIDI 1.4.


kMIDIPropertySupportsShowControl


extern const CFStringRef kMIDIPropertySupportsShowControl; 
Discussion

device/entity property, integer (0/1). Indicates whether the device implements the MIDI Show Control specification.

New for CoreMIDI 1.5.


kMIDIPropertyDisplayName


extern const CFStringRef kMIDIPropertyDisplayName; 
Discussion

device/entity/endpoint property, string.

Provides the Apple-recommended user-visible name for an endpoint, by combining the device and endpoint names.

For objects other than endpoints, the display name is the same as the name.

New for CoreMIDI 1.5.

(Last Updated February 25, 2005)