public final class CoreMIDI
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static interface |
CoreMIDI.Block_MIDIClientCreateWithBlock |
static interface |
CoreMIDI.Block_MIDIDestinationCreateWithBlock |
static interface |
CoreMIDI.Block_MIDIDestinationCreateWithProtocol |
static interface |
CoreMIDI.Block_MIDIInputPortCreateWithBlock |
static interface |
CoreMIDI.Block_MIDIInputPortCreateWithProtocol |
static interface |
CoreMIDI.Function_MIDIClientCreate |
static interface |
CoreMIDI.Function_MIDIDestinationCreate |
static interface |
CoreMIDI.Function_MIDIEventListForEachEvent |
static interface |
CoreMIDI.Function_MIDIInputPortCreate |
| Modifier and Type | Field and Description |
|---|---|
static int |
kMIDIObjectType_ExternalMask |
static byte |
MIDIChannelsWholePort
All MIDI-CI methods involving a channel number use 0x7f to mean "the whole port", i.e.
|
| Modifier and Type | Method and Description |
|---|---|
static CFStringRef |
kMIDIPropertyAdvanceScheduleTimeMuSec()
[@constant] kMIDIPropertyAdvanceScheduleTimeMuSec
|
static CFStringRef |
kMIDIPropertyCanRoute()
[@constant] kMIDIPropertyCanRoute
|
static CFStringRef |
kMIDIPropertyConnectionUniqueID()
[@constant] kMIDIPropertyConnectionUniqueID
|
static CFStringRef |
kMIDIPropertyDeviceID()
[@constant] kMIDIPropertyDeviceID
|
static CFStringRef |
kMIDIPropertyDisplayName()
[@constant] kMIDIPropertyDisplayName
|
static CFStringRef |
kMIDIPropertyDriverDeviceEditorApp()
[@constant] kMIDIPropertyDriverDeviceEditorApp
|
static CFStringRef |
kMIDIPropertyDriverOwner()
[@constant] kMIDIPropertyDriverOwner
|
static CFStringRef |
kMIDIPropertyDriverVersion()
[@constant] kMIDIPropertyDriverVersion
|
static CFStringRef |
kMIDIPropertyImage()
[@constant] kMIDIPropertyImage
|
static CFStringRef |
kMIDIPropertyIsBroadcast()
[@constant] kMIDIPropertyIsBroadcast
|
static CFStringRef |
kMIDIPropertyIsDrumMachine()
[@constant] kMIDIPropertyIsDrumMachine
|
static CFStringRef |
kMIDIPropertyIsEffectUnit()
[@constant] kMIDIPropertyIsEffectUnit
|
static CFStringRef |
kMIDIPropertyIsEmbeddedEntity()
[@constant] kMIDIPropertyIsEmbeddedEntity
|
static CFStringRef |
kMIDIPropertyIsMixer()
[@constant] kMIDIPropertyIsMixer
|
static CFStringRef |
kMIDIPropertyIsSampler()
[@constant] kMIDIPropertyIsSampler
|
static CFStringRef |
kMIDIPropertyManufacturer()
[@constant] kMIDIPropertyManufacturer
|
static CFStringRef |
kMIDIPropertyMaxReceiveChannels()
[@constant] kMIDIPropertyMaxReceiveChannels
|
static CFStringRef |
kMIDIPropertyMaxSysExSpeed()
[@constant] kMIDIPropertyMaxSysExSpeed
|
static CFStringRef |
kMIDIPropertyMaxTransmitChannels()
[@constant] kMIDIPropertyMaxTransmitChannels
|
static CFStringRef |
kMIDIPropertyModel()
[@constant] kMIDIPropertyModel
|
static CFStringRef |
kMIDIPropertyName()
[@constant] kMIDIPropertyName
|
static CFStringRef |
kMIDIPropertyNameConfiguration()
[@constant] kMIDIPropertyNameConfiguration
|
static CFStringRef |
kMIDIPropertyNameConfigurationDictionary()
[@constant] kMIDIPropertyNameConfigurationDictionary
|
static CFStringRef |
kMIDIPropertyOffline()
[@constant] kMIDIPropertyOffline
|
static CFStringRef |
kMIDIPropertyPanDisruptsStereo()
[@constant] kMIDIPropertyPanDisruptsStereo
|
static CFStringRef |
kMIDIPropertyPrivate()
[@constant] kMIDIPropertyPrivate
|
static CFStringRef |
kMIDIPropertyProtocolID()
constant kMIDIPropertyProtocolID
|
static CFStringRef |
kMIDIPropertyReceiveChannels()
[@constant] kMIDIPropertyReceiveChannels
|
static CFStringRef |
kMIDIPropertyReceivesBankSelectLSB()
[@constant] kMIDIPropertyReceivesBankSelectLSB
|
static CFStringRef |
kMIDIPropertyReceivesBankSelectMSB()
[@constant] kMIDIPropertyReceivesBankSelectMSB
|
static CFStringRef |
kMIDIPropertyReceivesClock()
[@constant] kMIDIPropertyReceivesClock
|
static CFStringRef |
kMIDIPropertyReceivesMTC()
[@constant] kMIDIPropertyReceivesMTC
|
static CFStringRef |
kMIDIPropertyReceivesNotes()
[@constant] kMIDIPropertyReceivesNotes
|
static CFStringRef |
kMIDIPropertyReceivesProgramChanges()
[@constant] kMIDIPropertyReceivesProgramChanges
|
static CFStringRef |
kMIDIPropertySingleRealtimeEntity()
[@constant] kMIDIPropertySingleRealtimeEntity
|
static CFStringRef |
kMIDIPropertySupportsGeneralMIDI()
[@constant] kMIDIPropertySupportsGeneralMIDI
|
static CFStringRef |
kMIDIPropertySupportsMMC()
[@constant] kMIDIPropertySupportsMMC
|
static CFStringRef |
kMIDIPropertySupportsShowControl()
[@constant] kMIDIPropertySupportsShowControl
|
static CFStringRef |
kMIDIPropertyTransmitChannels()
[@constant] kMIDIPropertyTransmitChannels
|
static CFStringRef |
kMIDIPropertyTransmitsBankSelectLSB()
[@constant] kMIDIPropertyTransmitsBankSelectLSB
|
static CFStringRef |
kMIDIPropertyTransmitsBankSelectMSB()
[@constant] kMIDIPropertyTransmitsBankSelectMSB
|
static CFStringRef |
kMIDIPropertyTransmitsClock()
[@constant] kMIDIPropertyTransmitsClock
|
static CFStringRef |
kMIDIPropertyTransmitsMTC()
[@constant] kMIDIPropertyTransmitsMTC
|
static CFStringRef |
kMIDIPropertyTransmitsNotes()
[@constant] kMIDIPropertyTransmitsNotes
|
static CFStringRef |
kMIDIPropertyTransmitsProgramChanges()
[@constant] kMIDIPropertyTransmitsProgramChanges
|
static CFStringRef |
kMIDIPropertyUniqueID()
[@constant] kMIDIPropertyUniqueID
|
static int |
MIDI1UPChannelVoiceMessage(byte group,
byte status,
byte channel,
byte data1,
byte data2)
MIDI 1.0 Universal MIDI Packet (MIDI-1UP) Channel Voice Message generalized structure
|
static int |
MIDI1UPControlChange(byte group,
byte channel,
byte index,
byte data) |
static int |
MIDI1UPNoteOff(byte group,
byte channel,
byte noteNumber,
byte velocity) |
static int |
MIDI1UPNoteOn(byte group,
byte channel,
byte noteNumber,
byte velocity) |
static int |
MIDI1UPPitchBend(byte group,
byte channel,
byte lsb,
byte msb) |
static MIDIMessage_64 |
MIDI1UPSysEx(byte group,
byte status,
byte bytesUsed,
byte byte1,
byte byte2,
byte byte3,
byte byte4,
byte byte5,
byte byte6) |
static MIDIMessage_64 |
MIDI1UPSysExArray(byte group,
byte status,
java.lang.String begin,
java.lang.String end) |
static int |
MIDI1UPSystemCommon(byte group,
byte status,
byte byte1,
byte byte2) |
static MIDIMessage_64 |
MIDI2AssignableControl(byte group,
byte channel,
byte bank,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2AssignablePNC(byte group,
byte channel,
byte noteNumber,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2ChannelPressure(byte group,
byte channel,
int value) |
static MIDIMessage_64 |
MIDI2ChannelVoiceMessage(byte group,
byte status,
byte channel,
char index,
int value)
MIDI 2.0 Channel Voice Message generalized structure
|
static MIDIMessage_64 |
MIDI2ControlChange(byte group,
byte channel,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2NoteOff(byte group,
byte channel,
byte noteNumber,
byte attributeType,
char attributeData,
char velocity) |
static MIDIMessage_64 |
MIDI2NoteOn(byte group,
byte channel,
byte noteNumber,
byte attributeType,
char attributeData,
char velocity) |
static MIDIMessage_64 |
MIDI2PerNoteManagment(byte group,
byte channel,
byte noteNumber,
boolean detachPNCs,
boolean resetPNCsToDefault) |
static MIDIMessage_64 |
MIDI2PerNotePitchBend(byte group,
byte channel,
byte noteNumber,
int value) |
static MIDIMessage_64 |
MIDI2PitchBend(byte group,
byte channel,
int value) |
static MIDIMessage_64 |
MIDI2PolyPressure(byte group,
byte channel,
byte noteNumber,
int value) |
static MIDIMessage_64 |
MIDI2ProgramChange(byte group,
byte channel,
boolean bankIsValid,
byte program,
byte bank_msb,
byte bank_lsb) |
static MIDIMessage_64 |
MIDI2RegisteredControl(byte group,
byte channel,
byte bank,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2RegisteredPNC(byte group,
byte channel,
byte noteNumber,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2RelAssignableControl(byte group,
byte channel,
byte bank,
byte index,
int value) |
static MIDIMessage_64 |
MIDI2RelRegisteredControl(byte group,
byte channel,
byte bank,
byte index,
int value) |
static int |
MIDIClientCreate(CFStringRef name,
CoreMIDI.Function_MIDIClientCreate notifyProc,
org.moe.natj.general.ptr.VoidPtr notifyRefCon,
org.moe.natj.general.ptr.IntPtr outClient)
[@function] MIDIClientCreate
|
static int |
MIDIClientCreateWithBlock(CFStringRef name,
org.moe.natj.general.ptr.IntPtr outClient,
CoreMIDI.Block_MIDIClientCreateWithBlock notifyBlock)
[@function] MIDIClientCreateWithBlock
|
static int |
MIDIClientDispose(int client)
[@function] MIDIClientDispose
|
static int |
MIDIDestinationCreate(int client,
CFStringRef name,
CoreMIDI.Function_MIDIDestinationCreate readProc,
org.moe.natj.general.ptr.VoidPtr refCon,
org.moe.natj.general.ptr.IntPtr outDest)
[@function] MIDIDestinationCreate
|
static int |
MIDIDestinationCreateWithBlock(int client,
CFStringRef name,
org.moe.natj.general.ptr.IntPtr outDest,
CoreMIDI.Block_MIDIDestinationCreateWithBlock readBlock)
[@function] MIDIDestinationCreateWithBlock
|
static int |
MIDIDestinationCreateWithProtocol(int client,
CFStringRef name,
int protocol,
org.moe.natj.general.ptr.IntPtr outDest,
CoreMIDI.Block_MIDIDestinationCreateWithProtocol readBlock)
[@function] MIDIDestinationCreateWithProtocol
|
static int |
MIDIDeviceAddEntity(int device,
CFStringRef name,
byte embedded,
long numSourceEndpoints,
long numDestinationEndpoints,
org.moe.natj.general.ptr.IntPtr newEntity)
-----------------------------------------------------------------------------
[@function] MIDIDeviceAddEntity
|
static int |
MIDIDeviceCreate(org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.Ptr<MIDIDriverInterface>> owner,
CFStringRef name,
CFStringRef manufacturer,
CFStringRef model,
org.moe.natj.general.ptr.IntPtr outDevice)
-----------------------------------------------------------------------------
[@function] MIDIDeviceCreate
|
static int |
MIDIDeviceDispose(int device)
[@function] MIDIDeviceDispose
|
static int |
MIDIDeviceGetEntity(int device,
long entityIndex0)
[@function] MIDIDeviceGetEntity
|
static long |
MIDIDeviceGetNumberOfEntities(int device)
[@function] MIDIDeviceGetNumberOfEntities
|
static int |
MIDIDeviceListAddDevice(int devList,
int dev)
-----------------------------------------------------------------------------
[@function] MIDIDeviceListAddDevice
|
static int |
MIDIDeviceListDispose(int devList)
-----------------------------------------------------------------------------
[@function] MIDIDeviceListDispose
|
static int |
MIDIDeviceListGetDevice(int devList,
long index0)
-----------------------------------------------------------------------------
[@function] MIDIDeviceListGetDevice
|
static long |
MIDIDeviceListGetNumberOfDevices(int devList)
-----------------------------------------------------------------------------
[@function] MIDIDeviceListGetNumberOfDevices
|
static int |
MIDIDeviceNewEntity(int device,
CFStringRef name,
int protocol,
byte embedded,
long numSourceEndpoints,
long numDestinationEndpoints,
org.moe.natj.general.ptr.IntPtr newEntity)
-----------------------------------------------------------------------------
[@function] MIDIDeviceNewEntity
|
static int |
MIDIDeviceRemoveEntity(int device,
int entity)
-----------------------------------------------------------------------------
[@function] MIDIDeviceRemoveEntity
|
static int |
MIDIEndpointDispose(int endpt)
[@function] MIDIEndpointDispose
|
static int |
MIDIEndpointGetEntity(int inEndpoint,
org.moe.natj.general.ptr.IntPtr outEntity)
[@function] MIDIEndpointGetEntity
|
static int |
MIDIEndpointGetRefCons(int endpt,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.VoidPtr> ref1,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.VoidPtr> ref2)
-----------------------------------------------------------------------------
[@function] MIDIEndpointGetRefCons
|
static int |
MIDIEndpointSetRefCons(int endpt,
org.moe.natj.general.ptr.VoidPtr ref1,
org.moe.natj.general.ptr.VoidPtr ref2)
-----------------------------------------------------------------------------
[@function] MIDIEndpointSetRefCons
|
static int |
MIDIEntityAddOrRemoveEndpoints(int entity,
long numSourceEndpoints,
long numDestinationEndpoints)
-----------------------------------------------------------------------------
[@function] MIDIEntityAddOrRemoveEndpoints
|
static int |
MIDIEntityGetDestination(int entity,
long destIndex0)
[@function] MIDIEntityGetDestination
|
static int |
MIDIEntityGetDevice(int inEntity,
org.moe.natj.general.ptr.IntPtr outDevice)
[@function] MIDIEntityGetDevice
|
static long |
MIDIEntityGetNumberOfDestinations(int entity)
[@function] MIDIEntityGetNumberOfDestinations
|
static long |
MIDIEntityGetNumberOfSources(int entity)
[@function] MIDIEntityGetNumberOfSources
|
static int |
MIDIEntityGetSource(int entity,
long sourceIndex0)
[@function] MIDIEntityGetSource
|
static MIDIEventPacket |
MIDIEventListAdd(MIDIEventList evtlist,
long listSize,
MIDIEventPacket curPacket,
long time,
long wordCount,
org.moe.natj.general.ptr.ConstIntPtr words)
[@function] MIDIEventListAdd
|
static void |
MIDIEventListForEachEvent(MIDIEventList evtlist,
CoreMIDI.Function_MIDIEventListForEachEvent visitor,
org.moe.natj.general.ptr.VoidPtr visitorContext)
[@typedef] MIDIEventListForEachEvent
|
static MIDIEventPacket |
MIDIEventListInit(MIDIEventList evtlist,
int protocol)
[@function] MIDIEventListInit
|
static MIDIEventPacket |
MIDIEventPacketNext(MIDIEventPacket pkt)
[@function] MIDIEventPacketNext
|
static int |
MIDIExternalDeviceCreate(CFStringRef name,
CFStringRef manufacturer,
CFStringRef model,
org.moe.natj.general.ptr.IntPtr outDevice)
-----------------------------------------------------------------------------
[@function] MIDIExternalDeviceCreate
|
static int |
MIDIFlushOutput(int dest)
[@function] MIDIFlushOutput
|
static int |
MIDIGetDestination(long destIndex0)
[@function] MIDIGetDestination
|
static int |
MIDIGetDevice(long deviceIndex0)
[@function] MIDIGetDevice
|
static int |
MIDIGetDriverDeviceList(org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.Ptr<MIDIDriverInterface>> driver)
-----------------------------------------------------------------------------
[@function] MIDIGetDriverDeviceList
|
static CFRunLoopRef |
MIDIGetDriverIORunLoop()
-----------------------------------------------------------------------------
[@function] MIDIGetDriverIORunLoop
|
static int |
MIDIGetExternalDevice(long deviceIndex0)
[@function] MIDIGetExternalDevice
|
static long |
MIDIGetNumberOfDestinations()
[@function] MIDIGetNumberOfDestinations
|
static long |
MIDIGetNumberOfDevices()
[@function] MIDIGetNumberOfDevices
|
static long |
MIDIGetNumberOfExternalDevices()
[@function] MIDIGetNumberOfExternalDevices
|
static long |
MIDIGetNumberOfSources()
[@function] MIDIGetNumberOfSources
|
static int |
MIDIGetSource(long sourceIndex0)
[@function] MIDIGetSource
|
static int |
MIDIInputPortCreate(int client,
CFStringRef portName,
CoreMIDI.Function_MIDIInputPortCreate readProc,
org.moe.natj.general.ptr.VoidPtr refCon,
org.moe.natj.general.ptr.IntPtr outPort)
[@function] MIDIInputPortCreate
|
static int |
MIDIInputPortCreateWithBlock(int client,
CFStringRef portName,
org.moe.natj.general.ptr.IntPtr outPort,
CoreMIDI.Block_MIDIInputPortCreateWithBlock readBlock)
[@function] MIDIInputPortCreateWithBlock
|
static int |
MIDIInputPortCreateWithProtocol(int client,
CFStringRef portName,
int protocol,
org.moe.natj.general.ptr.IntPtr outPort,
CoreMIDI.Block_MIDIInputPortCreateWithProtocol receiveBlock)
[@function] MIDIInputPortCreateWithProtocol
|
static int |
MIDIMessageTypeForUPWord(int word) |
static java.lang.String |
MIDINetworkBonjourServiceType()
This is the Bonjour service type.
|
static java.lang.String |
MIDINetworkNotificationContactsDidChange()
These are NSNotifications posted by MIDINetworkSession objects.
|
static java.lang.String |
MIDINetworkNotificationSessionDidChange() |
static int |
MIDIObjectFindByUniqueID(int inUniqueID,
org.moe.natj.general.ptr.IntPtr outObject,
org.moe.natj.general.ptr.IntPtr outObjectType)
[@function] MIDIObjectFindByUniqueID
|
static int |
MIDIObjectGetDataProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFDataRef> outData)
[@function] MIDIObjectGetDataProperty
|
static int |
MIDIObjectGetDictionaryProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFDictionaryRef> outDict)
[@function] MIDIObjectGetDictionaryProperty
|
static int |
MIDIObjectGetIntegerProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.IntPtr outValue)
[@function] MIDIObjectGetIntegerProperty
|
static int |
MIDIObjectGetProperties(int obj,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.ConstVoidPtr> outProperties,
byte deep)
[@function] MIDIObjectGetProperties
|
static int |
MIDIObjectGetStringProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFStringRef> str)
[@function] MIDIObjectGetStringProperty
|
static int |
MIDIObjectRemoveProperty(int obj,
CFStringRef propertyID)
[@function] MIDIObjectRemoveProperty
|
static int |
MIDIObjectSetDataProperty(int obj,
CFStringRef propertyID,
CFDataRef data)
[@function] MIDIObjectSetDataProperty
|
static int |
MIDIObjectSetDictionaryProperty(int obj,
CFStringRef propertyID,
CFDictionaryRef dict)
[@function] MIDIObjectSetDictionaryProperty
|
static int |
MIDIObjectSetIntegerProperty(int obj,
CFStringRef propertyID,
int value)
[@function] MIDIObjectSetIntegerProperty
|
static int |
MIDIObjectSetStringProperty(int obj,
CFStringRef propertyID,
CFStringRef str)
[@function] MIDIObjectSetStringProperty
|
static int |
MIDIOutputPortCreate(int client,
CFStringRef portName,
org.moe.natj.general.ptr.IntPtr outPort)
[@function] MIDIOutputPortCreate
|
static MIDIPacket |
MIDIPacketListAdd(MIDIPacketList pktlist,
long listSize,
MIDIPacket curPacket,
long time,
long nData,
java.lang.String data)
[@function] MIDIPacketListAdd
|
static MIDIPacket |
MIDIPacketListInit(MIDIPacketList pktlist)
[@function] MIDIPacketListInit
|
static MIDIPacket |
MIDIPacketNext(MIDIPacket pkt)
[@function] MIDIPacketNext
|
static int |
MIDIPortConnectSource(int port,
int source,
org.moe.natj.general.ptr.VoidPtr connRefCon)
[@function] MIDIPortConnectSource
|
static int |
MIDIPortDisconnectSource(int port,
int source)
[@function] MIDIPortDisconnectSource
|
static int |
MIDIPortDispose(int port)
[@function] MIDIPortDispose
|
static int |
MIDIReceived(int src,
MIDIPacketList pktlist)
[@function] MIDIReceived
|
static int |
MIDIReceivedEventList(int src,
MIDIEventList evtlist)
[@function] MIDIReceivedEventList
|
static int |
MIDIRestart()
[@function] MIDIRestart
|
static int |
MIDISend(int port,
int dest,
MIDIPacketList pktlist)
[@function] MIDISend
|
static int |
MIDISendEventList(int port,
int dest,
MIDIEventList evtlist)
[@function] MIDISendEventList
|
static int |
MIDISendSysex(MIDISysexSendRequest request)
[@function] MIDISendSysex
|
static int |
MIDISetupAddDevice(int device)
-----------------------------------------------------------------------------
[@function] MIDISetupAddDevice
|
static int |
MIDISetupAddExternalDevice(int device)
-----------------------------------------------------------------------------
[@function] MIDISetupAddExternalDevice
|
static int |
MIDISetupRemoveDevice(int device)
-----------------------------------------------------------------------------
[@function] MIDISetupRemoveDevice
|
static int |
MIDISetupRemoveExternalDevice(int device)
-----------------------------------------------------------------------------
[@function] MIDISetupRemoveExternalDevice
|
static int |
MIDISourceCreate(int client,
CFStringRef name,
org.moe.natj.general.ptr.IntPtr outSrc)
[@function] MIDISourceCreate
|
static int |
MIDISourceCreateWithProtocol(int client,
CFStringRef name,
int protocol,
org.moe.natj.general.ptr.IntPtr outSrc)
[@function] MIDISourceCreateWithProtocol
|
static int |
MIDIThruConnectionCreate(CFStringRef inPersistentOwnerID,
CFDataRef inConnectionParams,
org.moe.natj.general.ptr.IntPtr outConnection)
[@function] MIDIThruConnectionCreate
|
static int |
MIDIThruConnectionDispose(int connection)
[@function] MIDIThruConnectionDispose
|
static int |
MIDIThruConnectionFind(CFStringRef inPersistentOwnerID,
org.moe.natj.general.ptr.Ptr<CFDataRef> outConnectionList)
[@function] MIDIThruConnectionFind
|
static int |
MIDIThruConnectionGetParams(int connection,
org.moe.natj.general.ptr.Ptr<CFDataRef> outConnectionParams)
[@function] MIDIThruConnectionGetParams
|
static void |
MIDIThruConnectionParamsInitialize(MIDIThruConnectionParams inConnectionParams)
[@function] MIDIThruConnectionParamsInitialize
|
static long |
MIDIThruConnectionParamsSize(MIDIThruConnectionParams ptr)
[@defined] MIDIThruConnectionParamsSize
|
static int |
MIDIThruConnectionSetParams(int connection,
CFDataRef inConnectionParams)
[@function] MIDIThruConnectionSetParams
|
public static final int kMIDIObjectType_ExternalMask
public static final byte MIDIChannelsWholePort
public static int MIDIClientCreate(CFStringRef name, CoreMIDI.Function_MIDIClientCreate notifyProc, org.moe.natj.general.ptr.VoidPtr notifyRefCon, org.moe.natj.general.ptr.IntPtr outClient)
Creates a MIDIClient object.
Note that notifyProc will always be called on the run loop which was current when MIDIClientCreate was first called.
name - The client's name.notifyProc - An optional (may be NULL) callback function through which the client
will receive notifications of changes to the system.notifyRefCon - A refCon passed back to notifyRefConoutClient - On successful return, points to the newly-created MIDIClientRef.public static int MIDIClientCreateWithBlock(CFStringRef name, org.moe.natj.general.ptr.IntPtr outClient, CoreMIDI.Block_MIDIClientCreateWithBlock notifyBlock)
Creates a MIDIClient object.
Note that notifyBlock is called on a thread chosen by the implementation. Thread-safety is the block's responsibility.
name - The client's name.outClient - On successful return, points to the newly-created MIDIClientRef.notifyBlock - An optional (may be NULL) block via which the client
will receive notifications of changes to the system.public static int MIDIClientDispose(int client)
Disposes a MIDIClient object.
It is not essential to call this function; the CoreMIDI framework will automatically dispose all MIDIClients when an application terminates. However, if this method is called to dispose the last/only MIDIClient owned by an application, the MIDI server may exit if there are no other MIDIClients remaining in the system, causing all subsequent calls to MIDIClientCreate and MIDIClientCreateWithBlock by that application to fail. For this reason, disposing all of an application's MIDIClients is strongly discouraged.
client - The client to dispose.public static int MIDIInputPortCreate(int client,
CFStringRef portName,
CoreMIDI.Function_MIDIInputPortCreate readProc,
org.moe.natj.general.ptr.VoidPtr refCon,
org.moe.natj.general.ptr.IntPtr outPort)
Creates an input port through which the client may receive incoming MIDI messages from any MIDI source.
After creating a port, use MIDIPortConnectSource to establish an input connection from any number of sources to your port.
readProc will be called on a separate high-priority thread owned by CoreMIDI.
client - The client to own the newly-created port.portName - The name of the port.readProc - The MIDIReadProc which will be called with incoming MIDI,
from sources connected to this port.refCon - The refCon passed to readHook.outPort - On successful return, points to the newly-created
MIDIPort.public static int MIDIInputPortCreateWithBlock(int client,
CFStringRef portName,
org.moe.natj.general.ptr.IntPtr outPort,
CoreMIDI.Block_MIDIInputPortCreateWithBlock readBlock)
Creates an input port through which the client may receive incoming MIDI messages from any MIDI source.
After creating a port, use MIDIPortConnectSource to establish an input connection from any number of sources to your port.
readBlock will be called on a separate high-priority thread owned by CoreMIDI.
client - The client to own the newly-created port.portName - The name of the port.outPort - On successful return, points to the newly-created
MIDIPort.readBlock - The MIDIReadBlock which will be called with incoming MIDI, from sources
connected to this port.public static int MIDIOutputPortCreate(int client,
CFStringRef portName,
org.moe.natj.general.ptr.IntPtr outPort)
Creates an output port through which the client may send outgoing MIDI messages to any MIDI destination.
Output ports provide a mechanism for MIDI merging. CoreMIDI assumes that each output port will be responsible for sending only a single MIDI stream to each destination, although a single port may address all of the destinations in the system.
Multiple output ports are only necessary when an application is capable of directing multiple simultaneous MIDI streams to the same destination.
client - The client to own the newly-created portportName - The name of the port.outPort - On successful return, points to the newly-created
MIDIPort.public static int MIDIPortDispose(int port)
Disposes a MIDIPort object.
It is not usually necessary to call this function; when an application's MIDIClient's are automatically disposed at termination, or explicitly, via MIDIClientDispose, the client's ports are automatically disposed at that time.
port - The port to dispose.public static int MIDIPortConnectSource(int port,
int source,
org.moe.natj.general.ptr.VoidPtr connRefCon)
Establishes a connection from a source to a client's input port.
port - The port to which to create the connection. This port's
readProc is called with incoming MIDI from the source.source - The source from which to create the connection.connRefCon - This refCon is passed to the port's MIDIReadProc or MIDIReadBlock, as a way to
identify the source.public static int MIDIPortDisconnectSource(int port,
int source)
Closes a previously-established source-to-input port connection.
port - The port whose connection is being closed.source - The source from which to close a connection to the
specified port.public static long MIDIGetNumberOfDevices()
Returns the number of devices in the system.
public static int MIDIGetDevice(long deviceIndex0)
Returns one of the devices in the system.
Use this to enumerate the devices in the system.
To enumerate the entities in the system, you can walk through the devices, then walk through the devices' entities.
Note: If a client iterates through the devices and entities in the system, it will not ever visit any virtual sources and destinations created by other clients. Also, a device iteration will return devices which are "offline" (were present in the past but are not currently present), while iterations through the system's sources and destinations will not include the endpoints of offline devices.
Thus clients should usually use MIDIGetNumberOfSources, MIDIGetSource, MIDIGetNumberOfDestinations and MIDIGetDestination, rather iterating through devices and entities to locate endpoints.
deviceIndex0 - The index (0...MIDIGetNumberOfDevices()-1) of the device
to return.public static long MIDIDeviceGetNumberOfEntities(int device)
Returns the number of entities in a given device.
device - The device being queried.public static int MIDIDeviceGetEntity(int device,
long entityIndex0)
Returns one of a given device's entities.
device - The device being queried.entityIndex0 - The index (0...MIDIDeviceGetNumberOfEntities(device)-1)
of the entity to returnpublic static long MIDIEntityGetNumberOfSources(int entity)
Returns the number of sources in a given entity.
entity - The entity being queriedpublic static int MIDIEntityGetSource(int entity,
long sourceIndex0)
Returns one of a given entity's sources.
entity - The entity being queried.sourceIndex0 - The index (0...MIDIEntityGetNumberOfSources(entity)-1) of
the source to returnpublic static long MIDIEntityGetNumberOfDestinations(int entity)
Returns the number of destinations in a given entity.
entity - The entity being queriedpublic static int MIDIEntityGetDestination(int entity,
long destIndex0)
Returns one of a given entity's destinations.
entity - The entity being queried.destIndex0 - The index (0...MIDIEntityGetNumberOfDestinations(entity)
- 1) of the destination to returnpublic static int MIDIEntityGetDevice(int inEntity,
org.moe.natj.general.ptr.IntPtr outDevice)
Returns an entity's device.
inEntity - The entity being queried.outDevice - On successful return, the entity's owning device.public static long MIDIGetNumberOfSources()
Returns the number of sources in the system.
public static int MIDIGetSource(long sourceIndex0)
Returns one of the sources in the system.
sourceIndex0 - The index (0...MIDIGetNumberOfSources()-1) of the source
to returnpublic static long MIDIGetNumberOfDestinations()
Returns the number of destinations in the system.
public static int MIDIGetDestination(long destIndex0)
Returns one of the destinations in the system.
destIndex0 - The index (0...MIDIGetNumberOfDestinations()-1) of the
destination to returnpublic static int MIDIEndpointGetEntity(int inEndpoint,
org.moe.natj.general.ptr.IntPtr outEntity)
Returns an endpoint's entity.
Virtual sources and destinations don't have entities.
inEndpoint - The endpoint being queried.outEntity - On exit, the endpoint's owning entity, or NULL if none.public static int MIDIDestinationCreate(int client,
CFStringRef name,
CoreMIDI.Function_MIDIDestinationCreate readProc,
org.moe.natj.general.ptr.VoidPtr refCon,
org.moe.natj.general.ptr.IntPtr outDest)
Creates a virtual destination in a client.
The specified readProc gets called when clients send MIDI to your virtual destination.
Drivers need not call this; when they create devices and entities, sources and destinations are created at that time.
After creating a virtual destination, it's a good idea to assign it the same unique ID it had the last time your application created it. (Although you should be prepared for this to fail in the unlikely event of a collision.) This will permit other clients to retain persistent references to your virtual destination more easily.
See the discussion of kMIDIPropertyAdvanceScheduleTimeMuSec for notes about the relationship between when a sender sends MIDI to the destination and when it is received.
client - The client owning the virtual destination.name - The name of the virtual destination.readProc - The MIDIReadProc to be called when a client sends MIDI to
the virtual destination.refCon - The refCon to be passed to the readProc.outDest - On successful return, a pointer to the newly-created
destination.public static int MIDIDestinationCreateWithBlock(int client,
CFStringRef name,
org.moe.natj.general.ptr.IntPtr outDest,
CoreMIDI.Block_MIDIDestinationCreateWithBlock readBlock)
Creates a virtual destination in a client.
The specified readBlock gets called when clients send MIDI to your virtual destination.
Drivers need not call this; when they create devices and entities, sources and destinations are created at that time.
After creating a virtual destination, it's a good idea to assign it the same unique ID it had the last time your application created it. (Although you should be prepared for this to fail in the unlikely event of a collision.) This will permit other clients to retain persistent references to your virtual destination more easily.
See the discussion of kMIDIPropertyAdvanceScheduleTimeMuSec for notes about the relationship between when a sender sends MIDI to the destination and when it is received.
client - The client owning the virtual destination.name - The name of the virtual destination.outDest - On successful return, a pointer to the newly-created
destination.readBlock - The MIDIReadBlock to be called when a client sends MIDI to the virtual
destination.public static int MIDISourceCreate(int client,
CFStringRef name,
org.moe.natj.general.ptr.IntPtr outSrc)
Creates a virtual source in a client.
Drivers need not call this; when they create devices and entities, sources and destinations are created at that time.
After creating a virtual source, use MIDIReceived to transmit MIDI messages from your virtual source to any clients connected to the virtual source.
After creating a virtual source, it's a good idea to assign it the same unique ID it had the last time your application created it. (Although you should be prepared for this to fail in the unlikely event of a collision.) This will permit other clients to retain persistent references to your virtual source more easily.
client - The client owning the virtual source.name - The name of the virtual source.outSrc - On successful return, a pointer to the newly-created
source.public static int MIDIEndpointDispose(int endpt)
Disposes a virtual source or destination your client created.
endpt - The endpoint to be disposed.public static long MIDIGetNumberOfExternalDevices()
Returns the number of external MIDI devices in the system.
External MIDI devices are MIDI devices connected to driver endpoints via a standard MIDI cable. Their presence is completely optional, only when a UI (such as Audio MIDI Setup) adds them.
public static int MIDIGetExternalDevice(long deviceIndex0)
Returns one of the external devices in the system.
Use this to enumerate the external devices in the system.
deviceIndex0 - The index (0...MIDIGetNumberOfDevices()-1) of the device
to return.public static int MIDIObjectGetIntegerProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.IntPtr outValue)
Gets an object's integer-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be returned.propertyID - Name of the property to return.outValue - On successful return, the value of the property.public static int MIDIObjectSetIntegerProperty(int obj,
CFStringRef propertyID,
int value)
Sets an object's integer-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be altered.propertyID - Name of the property to set.value - New value of the property.public static int MIDIObjectGetStringProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFStringRef> str)
Gets an object's string-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be returned.propertyID - Name of the property to return.str - On successful return, the value of the property.public static int MIDIObjectSetStringProperty(int obj,
CFStringRef propertyID,
CFStringRef str)
Sets an object's string-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be altered.propertyID - Name of the property to set.str - New value of the property.public static int MIDIObjectGetDataProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFDataRef> outData)
Gets an object's data-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be returned.propertyID - Name of the property to return.outData - On successful return, the value of the property.public static int MIDIObjectSetDataProperty(int obj,
CFStringRef propertyID,
CFDataRef data)
Sets an object's data-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be altered.propertyID - Name of the property to set.data - New value of the property.public static int MIDIObjectGetDictionaryProperty(int obj,
CFStringRef propertyID,
org.moe.natj.general.ptr.Ptr<CFDictionaryRef> outDict)
Gets an object's dictionary-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be returned.propertyID - Name of the property to return.outDict - On successful return, the value of the property.public static int MIDIObjectSetDictionaryProperty(int obj,
CFStringRef propertyID,
CFDictionaryRef dict)
Sets an object's dictionary-type property.
(See the MIDIObjectRef documentation for information about properties.)
obj - The object whose property is to be altered.propertyID - Name of the property to set.dict - New value of the property.public static int MIDIObjectGetProperties(int obj,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.ConstVoidPtr> outProperties,
byte deep)
Gets all of an object's properties.
Returns a CFPropertyList of all of an object's properties. The property list may be a dictionary or an array. Dictionaries map property names (CFString) to values, which may be CFNumber, CFString, or CFData. Arrays are arrays of such values.
Properties which an object inherits from its owning object (if any) are not included.
obj - The object whose properties are to be returned.outProperties - On successful return, the object's properties.deep - true if the object's child objects are to be included
(e.g. a device's entities, or an entity's endpoints).public static int MIDIObjectRemoveProperty(int obj,
CFStringRef propertyID)
Removes an object's property.
obj - The object whose property is to be removed.propertyID - The property to be removed.public static int MIDIObjectFindByUniqueID(int inUniqueID,
org.moe.natj.general.ptr.IntPtr outObject,
org.moe.natj.general.ptr.IntPtr outObjectType)
Locates a device, external device, entity, or endpoint by its uniqueID.
inUniqueID - The uniqueID of the object to search for. (This should
be the result of an earlier call to MIDIObjectGetIntegerProperty
for the property kMIDIPropertyUniqueID).outObject - The returned object, or 0 if the object was not found or
an error occurred. This should be cast to the appropriate
type (MIDIDeviceRef, MIDIEntityRef, MIDIEndpointRef),
according to *outObjectType.outObjectType - On exit, the type of object which was found; undefined
if none found.public static int MIDISend(int port,
int dest,
MIDIPacketList pktlist)
Sends MIDI to a destination.
Events with future timestamps are scheduled for future delivery. CoreMIDI performs any needed MIDI merging.
port - The output port through which the MIDI is to be sent.dest - The destination to receive the events.pktlist - The MIDI events to be sent.public static int MIDISendSysex(MIDISysexSendRequest request)
Sends a single system-exclusive event, asynchronously.
request->data must point to a single MIDI system-exclusive message, or portion thereof.
request - Contains the destination, and a pointer to the MIDI data to be sent.public static int MIDIReceived(int src,
MIDIPacketList pktlist)
Distributes incoming MIDI from a source to the client input ports which are connected to that source.
Drivers should call this function when receiving MIDI from a source.
Clients which have created virtual sources, using MIDISourceCreate, should call this function when the source is generating MIDI.
Unlike MIDISend(), a timestamp of 0 is not equivalent to "now"; the driver or virtual source is responsible for putting proper timestamps in the packets.
src - The source which is transmitting MIDI.pktlist - The MIDI events to be transmitted.public static int MIDIFlushOutput(int dest)
Unschedules previously-sent packets.
Clients may use MIDIFlushOutput to cancel the sending of packets that were previously scheduled for future delivery.
dest - All pending events scheduled to be sent to this destination
are unscheduled. If NULL, the operation applies to
all destinations.public static int MIDIRestart()
Stops and restarts MIDI I/O.
This is useful for forcing CoreMIDI to ask its drivers to rescan for hardware.
public static MIDIPacket MIDIPacketNext(MIDIPacket pkt)
Advances a MIDIPacket pointer to the MIDIPacket which immediately follows it in memory if it is part of a MIDIPacketList.
pkt - A pointer to a MIDIPacket in a MIDIPacketList.public static MIDIPacket MIDIPacketListInit(MIDIPacketList pktlist)
Prepares a MIDIPacketList to be built up dynamically.
pktlist - The packet list to be initialized.public static MIDIPacket MIDIPacketListAdd(MIDIPacketList pktlist, long listSize, MIDIPacket curPacket, long time, long nData, java.lang.String data)
Adds a MIDI event to a MIDIPacketList.
The maximum size of a packet list is 65536 bytes. Large sysex messages must be sent in smaller packet lists.
pktlist - The packet list to which the event is to be added.listSize - The size, in bytes, of the packet list.curPacket - A packet pointer returned by a previous call to
MIDIPacketListInit or MIDIPacketListAdd for this packet
list.time - The new event's time.nData - The length of the new event, in bytes.data - The new event. May be a single MIDI event, or a partial
sys-ex event. Running status is not permitted.public static int MIDIDeviceAddEntity(int device,
CFStringRef name,
byte embedded,
long numSourceEndpoints,
long numDestinationEndpoints,
org.moe.natj.general.ptr.IntPtr newEntity)
Drivers call this function to specify one of the entities that comprise a device.
Non-drivers may call this function as of CoreMIDI 1.1 to add entities to external devices.
device - The device to which an entity is to be added.name - The name of the new entity.embedded - True if this entity is inside the device, false if the
entity simply consists of external connectors to which
other devices can be attached.numSourceEndpoints - The number of source endpoints the entity has.numDestinationEndpoints - The number of destination endpoints the entity has.newEntity - On successful return, points to the newly-created entity.public static int MIDIDeviceRemoveEntity(int device,
int entity)
Drivers may call this function to remove one of a device's entities.
New for CoreMIDI 1.1.
device - The device from which an entity is to be removed.entity - The entity to be removed.public static int MIDIEntityAddOrRemoveEndpoints(int entity,
long numSourceEndpoints,
long numDestinationEndpoints)
Drivers and configuration editors may call this function to add to or remove an entity's endpoints.
New for CoreMIDI 1.3.
The MIDIProtocolID of new endpoints is initially the same as that of the entity.
entity - The entity whose endpoints are to be manipulated.numSourceEndpoints - The desired new number of source endpoints.numDestinationEndpoints - The desired new number of destination endpoints.public static int MIDISetupAddDevice(int device)
Adds a driver-owner MIDI device to the current MIDISetup
Only MIDI drivers may make this call; it is in this header file only for consistency with MIDISetupRemoveDevice.
New for CoreMIDI 1.1.
device - The device to be added.public static int MIDISetupRemoveDevice(int device)
Removes a driver-owned MIDI device from the current MIDISetup
Generally this should only be called from a studio configuration editor, to remove a device which is offline and which the user has specified as being permanently missing.
Instead of removing devices from the setup, drivers should set the device's kMIDIPropertyOffline to 1 so that if the device reappears later, none of its properties are lost.
New for CoreMIDI 1.1.
device - The device to be added.public static int MIDISetupAddExternalDevice(int device)
Adds an external MIDI device to the current MIDISetup
Useful for a studio configuration editor. New for CoreMIDI 1.1.
device - The device to be added.public static int MIDISetupRemoveExternalDevice(int device)
Removes an external MIDI device from the current MIDISetup
Useful for a studio configuration editor. New for CoreMIDI 1.1.
device - The device to be removed.public static int MIDIExternalDeviceCreate(CFStringRef name, CFStringRef manufacturer, CFStringRef model, org.moe.natj.general.ptr.IntPtr outDevice)
Create a new external MIDI device.
Non-drivers may call this function as of CoreMIDI 1.1, to create external devices.
The new device is not added to the current MIDISetupRef; to do this, use MIDISetupAddExternalDevice.
name - The name of the new device.manufacturer - The name of the device's manufacturer.model - The device's model name.outDevice - On successful return, points to the newly-created device.public static long MIDIThruConnectionParamsSize(MIDIThruConnectionParams ptr)
Returns the size of a MIDIThruConnectionParams.
Accounts for the variable-length elements in the structure and returns its true size in bytes.
public static void MIDIThruConnectionParamsInitialize(MIDIThruConnectionParams inConnectionParams)
Fills a MIDIThruConnectionParams with default values.
inConnectionParams - The struct to be initialized.
This convenience function fills the connection structure with default values: no endpoints, no transformations (mostly zeroes except for the channel map). Then, just filling in the source and adding one destination will create a simple, unmodified thru connection.
public static int MIDIThruConnectionCreate(CFStringRef inPersistentOwnerID, CFDataRef inConnectionParams, org.moe.natj.general.ptr.IntPtr outConnection)
Creates a thru connection.
inPersistentOwnerID - If null, then the connection is marked as owned by the client
and will be automatically disposed with the client. if it is non-null, then it
should be a unique identifier, e.g. "com.mycompany.MyCoolProgram".inConnectionParams - A MIDIThruConnectionParams contained in a CFDataRef.outConnection - On successful return, a reference to the newly-created connection.public static int MIDIThruConnectionDispose(int connection)
Disposes a thru connection.
connection - The connection to be disposedpublic static int MIDIThruConnectionGetParams(int connection,
org.moe.natj.general.ptr.Ptr<CFDataRef> outConnectionParams)
Obtains a thru connection's MIDIThruConnectionParams.
connection - The connection to be disposed.outConnectionParams - On successful return, the connection's MIDIThruConnectionParams in a CFDataRefThe returned CFDataRef contains a MIDIThruConnectionParams structure. The caller is responsible for releasing it.
public static int MIDIThruConnectionSetParams(int connection,
CFDataRef inConnectionParams)
Alters a thru connection's MIDIThruConnectionParams.
connection - The connection to be modified.inConnectionParams - The connection's new MIDIThruConnectionParams in a CFDataRefpublic static int MIDIThruConnectionFind(CFStringRef inPersistentOwnerID, org.moe.natj.general.ptr.Ptr<CFDataRef> outConnectionList)
Returns all of the persistent thru connections created by a client.
inPersistentOwnerID - The ID of the owner whose connections are to be returned.outConnectionList - On successful return, a CFDataRef containing an array of MIDIThruConnectionRef's.public static int MIDIDeviceCreate(org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.Ptr<MIDIDriverInterface>> owner, CFStringRef name, CFStringRef manufacturer, CFStringRef model, org.moe.natj.general.ptr.IntPtr outDevice)
Drivers call this function to create new MIDIDevice objects corresponding to the hardware that is present.
Non-drivers may call this function as of CoreMIDI 1.1, to create external devices.
owner - The driver creating the device. NULL if a non-driver.name - The name of the new device.manufacturer - The name of the device's manufacturer.model - The device's model name.outDevice - On successful return, points to the newly-created device.public static int MIDIDeviceDispose(int device)
Drivers may call this function to dispose MIDIDevice objects which have not yet been added to the system via MIDISetupAddDevice. Once a device has been added to the system with MIDISetupAddDevice, the driver must not use this call to destroy it; it must use MIDISetupRemoveDevice to do so.
Non-drivers do not have access to this function; they must call MIDISetupAddDevice and MIDISetupRemoveDevice.
device - The device to be disposed.public static long MIDIDeviceListGetNumberOfDevices(int devList)
Returns the number of devices in a device list.
devList - The device list.public static int MIDIDeviceListGetDevice(int devList,
long index0)
Return one of the devices in a device list.
devList - The device list.index0 - The index (0...MIDIDeviceListGetNumberOfDevices()-1) of the device
to return.public static int MIDIDeviceListAddDevice(int devList,
int dev)
Add a device to a device list.
devList - The device list.dev - The device to add to the list.public static int MIDIDeviceListDispose(int devList)
Dispose a device list, but not the contained devices.
devList - The device list to be disposed.public static int MIDIEndpointSetRefCons(int endpt,
org.moe.natj.general.ptr.VoidPtr ref1,
org.moe.natj.general.ptr.VoidPtr ref2)
Drivers need an efficient way to translate from a MIDIEndpoint (source or destination) to their own internal data structures corresponding to that endpoint. This function provides a way for the driver to assign its own refCons to endpoints.
These refCons are passed back to the driver in its Send() and Flush() methods.
RefCons are not persistent (i.e. they are not saved as part of a MIDISetup). They need to be re-initialized in each call to Start().
A typical use is to use one refCon to refer to a device, and a second to refer to a port on the device.
endpt - The endpoint whose refCons are to be setref1 - The first refCon.ref2 - The second refCon.public static int MIDIEndpointGetRefCons(int endpt,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.VoidPtr> ref1,
org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.VoidPtr> ref2)
Obtain the refCons assigned to the endpoints
endpt - The endpoint whose refCons are to be returnref1 - On exit, the first refCon.ref2 - On exit, the second refCon.public static CFRunLoopRef MIDIGetDriverIORunLoop()
Drivers typically need to receive asynchronous I/O completion callbacks on a high-priority thread. To save drivers from the trouble of creating their own threads for this purpose, and to make efficient use of system resources, the MIDIServer provides a thread which drivers may use.
Drivers should do as little work as possible in this thread; typically, just dequeueing and encoding output packets, and decoding input packets into MIDIPacketLists to be passed to MIDIReceived.
This is a realtime-priority thread and shouldn't be used for anything other than I/O. For lower-priority tasks, drivers can use the runloop which was current when they were constructed.
public static int MIDIGetDriverDeviceList(org.moe.natj.general.ptr.Ptr<org.moe.natj.general.ptr.Ptr<MIDIDriverInterface>> driver)
Returns the list of devices which are in the current MIDISetup and which were created/owned by the specified driver.
The returned device list should be disposed (using MIDIDeviceListDispose) by the caller.
driver - The driver whose devices are to be returned.public static CFStringRef kMIDIPropertyName()
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.
public static CFStringRef kMIDIPropertyManufacturer()
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.
public static CFStringRef kMIDIPropertyModel()
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.
public static CFStringRef kMIDIPropertyUniqueID()
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.
public static CFStringRef kMIDIPropertyDeviceID()
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.
public static CFStringRef kMIDIPropertyReceiveChannels()
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.
public static CFStringRef kMIDIPropertyTransmitChannels()
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.
public static CFStringRef kMIDIPropertyMaxSysExSpeed()
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)
public static CFStringRef kMIDIPropertyAdvanceScheduleTimeMuSec()
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.
public static CFStringRef kMIDIPropertyIsEmbeddedEntity()
entity/endpoint property, integer
0 if there are external MIDI connectors, 1 if not.
public static CFStringRef kMIDIPropertyIsBroadcast()
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.
public static CFStringRef kMIDIPropertySingleRealtimeEntity()
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.
public static CFStringRef kMIDIPropertyConnectionUniqueID()
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.
Beginning with CoreMIDI 1.3 (Mac OS X 10.2), 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).
public static CFStringRef kMIDIPropertyOffline()
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.
public static CFStringRef kMIDIPropertyPrivate()
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.
public static CFStringRef kMIDIPropertyDriverOwner()
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.
public static CFStringRef kMIDIPropertyNameConfiguration()
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. This is deprecated as of Mac OS X 10.10.
key "masterDocumentPath" maps to a CFStringRef containing the filesystem path to the device's master name document. (This is new as of Mac OS X 10.10, but since the CoreMIDI implementation does not parse this dictionary, the convention can be safely ported to earlier versions of Mac OS X.)
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.
public static CFStringRef kMIDIPropertyImage()
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.
public static CFStringRef kMIDIPropertyDriverVersion()
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.
public static CFStringRef kMIDIPropertySupportsGeneralMIDI()
device/entity property, integer (0/1). Indicates whether the device or entity implements the General MIDI specification.
public static CFStringRef kMIDIPropertySupportsMMC()
device/entity property, integer (0/1). Indicates whether the device or entity implements the MIDI Machine Control portion of the MIDI specification.
public static CFStringRef kMIDIPropertyCanRoute()
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.
public static CFStringRef kMIDIPropertyReceivesClock()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI beat clock messages.
public static CFStringRef kMIDIPropertyReceivesMTC()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI Time Code messages.
public static CFStringRef kMIDIPropertyReceivesNotes()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI Note On messages.
public static CFStringRef kMIDIPropertyReceivesProgramChanges()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI program change messages.
public static CFStringRef kMIDIPropertyReceivesBankSelectMSB()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI bank select MSB messages (control 0).
public static CFStringRef kMIDIPropertyReceivesBankSelectLSB()
device/entity property, integer (0/1). Indicates whether the device or entity responds to MIDI bank select LSB messages (control 32).
public static CFStringRef kMIDIPropertyTransmitsClock()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI beat clock messages.
public static CFStringRef kMIDIPropertyTransmitsMTC()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI Time Code messages.
public static CFStringRef kMIDIPropertyTransmitsNotes()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI note messages.
public static CFStringRef kMIDIPropertyTransmitsProgramChanges()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI program change messages.
public static CFStringRef kMIDIPropertyTransmitsBankSelectMSB()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI bank select MSB messages (control 0).
public static CFStringRef kMIDIPropertyTransmitsBankSelectLSB()
device/entity property, integer (0/1). Indicates whether the device or entity transmits MIDI bank select LSB messages (control 32).
public static CFStringRef kMIDIPropertyPanDisruptsStereo()
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).
public static CFStringRef kMIDIPropertyIsSampler()
device/entity property, integer (0/1). Indicates whether the device or entity plays audio samples in response to MIDI note messages.
public static CFStringRef kMIDIPropertyIsDrumMachine()
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).
public static CFStringRef kMIDIPropertyIsMixer()
device/entity property, integer (0/1). Indicates whether the device or entity mixes external audio signals, controlled by MIDI messages.
public static CFStringRef kMIDIPropertyIsEffectUnit()
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).
public static CFStringRef kMIDIPropertyMaxReceiveChannels()
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".
public static CFStringRef kMIDIPropertyMaxTransmitChannels()
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.
public static CFStringRef kMIDIPropertyDriverDeviceEditorApp()
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.
public static CFStringRef kMIDIPropertySupportsShowControl()
device/entity property, integer (0/1). Indicates whether the device implements the MIDI Show Control specification.
public static CFStringRef kMIDIPropertyDisplayName()
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.
public static java.lang.String MIDINetworkBonjourServiceType()
public static java.lang.String MIDINetworkNotificationContactsDidChange()
MIDINetworkNotificationContactsDidChange signifies that the list of contacts changed. MIDINetworkNotificationSessionDidChange signifies that other aspects of the session changed, such as the connection list, connection policy, etc.
public static java.lang.String MIDINetworkNotificationSessionDidChange()
public static CFStringRef kMIDIPropertyNameConfigurationDictionary()
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 "masterDocumentPath" maps to a CFStringRef containing the filesystem path 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 URL bookmark data 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.
public static int MIDIInputPortCreateWithProtocol(int client,
CFStringRef portName,
int protocol,
org.moe.natj.general.ptr.IntPtr outPort,
CoreMIDI.Block_MIDIInputPortCreateWithProtocol receiveBlock)
Creates an input port through which the client may receive incoming MIDI messages from any MIDI source.
After creating a port, use MIDIPortConnectSource to establish an input connection from any number of sources to your port.
readBlock will be called on a separate high-priority thread owned by CoreMIDI.
client - The client to own the newly-created port.portName - The name of the port.protocol - The MIDI protocol variant to be delivered to this port. The system
will automatically convert to this protocol as needed.outPort - On successful return, points to the newly-created
MIDIPort.receiveBlock - The MIDIReceiveBlock which will be called with incoming MIDI, from sources
connected to this port.public static int MIDIDestinationCreateWithProtocol(int client,
CFStringRef name,
int protocol,
org.moe.natj.general.ptr.IntPtr outDest,
CoreMIDI.Block_MIDIDestinationCreateWithProtocol readBlock)
Creates a virtual destination in a client.
The specified readBlock gets called when clients send MIDI to your virtual destination.
Drivers need not call this; when they create devices and entities, sources and destinations are created at that time.
After creating a virtual destination, it's a good idea to assign it the same unique ID it had the last time your application created it. (Although you should be prepared for this to fail in the unlikely event of a collision.) This will permit other clients to retain persistent references to your virtual destination more easily.
See the discussion of kMIDIPropertyAdvanceScheduleTimeMuSec for notes about the relationship between when a sender sends MIDI to the destination and when it is received.
client - The client owning the virtual destination.name - The name of the virtual destination.protocol - The MIDI protocol variant to be delivered to this destination. The system
will automatically convert to this protocol as needed.outDest - On successful return, a pointer to the newly-created
destination.readBlock - The MIDIReceiveBlock to be called when a client sends MIDI to the virtual
destination.public static int MIDISourceCreateWithProtocol(int client,
CFStringRef name,
int protocol,
org.moe.natj.general.ptr.IntPtr outSrc)
Creates a virtual source in a client.
Drivers need not call this; when they create devices and entities, sources and destinations are created at that time.
After creating a virtual source, use MIDIReceivedEventList to transmit MIDI messages from your virtual source to any clients connected to the virtual source.
After creating a virtual source, it's a good idea to assign it the same unique ID it had the last time your application created it. (Although you should be prepared for this to fail in the unlikely event of a collision.) This will permit other clients to retain persistent references to your virtual source more easily.
client - The client owning the virtual source.name - The name of the virtual source.protocol - The MIDI protocol variant to be sent from this source. The system
will automatically convert from this protocol to the protocol of
the destination as needed.outSrc - On successful return, a pointer to the newly-created
source.public static int MIDISendEventList(int port,
int dest,
MIDIEventList evtlist)
Sends MIDI to a destination.
Events with future timestamps are scheduled for future delivery. CoreMIDI performs any needed MIDI merging.
port - The output port through which the MIDI is to be sent.dest - The destination to receive the events.evtlist - The MIDI events to be sent.public static int MIDIReceivedEventList(int src,
MIDIEventList evtlist)
Distributes incoming MIDI from a source to the client input ports which are connected to that source.
Drivers should call this function when receiving MIDI from a source.
Clients which have created virtual sources, using MIDISourceCreateWithProtocol, should call this function when the source is generating MIDI.
Unlike MIDISendEventList(), a timestamp of 0 is not equivalent to "now"; the driver or virtual source is responsible for putting proper timestamps in the packets.
src - The source which is transmitting MIDI.evtlist - The MIDI events to be transmitted.public static MIDIEventPacket MIDIEventPacketNext(MIDIEventPacket pkt)
Advances a MIDIEventPacket pointer to the MIDIEventPacket which immediately follows it in memory if it is part of a MIDIEventList.
pkt - A pointer to a MIDIEventPacket in a MIDIEventList.public static MIDIEventPacket MIDIEventListInit(MIDIEventList evtlist, int protocol)
Prepares a MIDIEventList to be built up dynamically.
evtlist - The event list to be initialized.public static MIDIEventPacket MIDIEventListAdd(MIDIEventList evtlist, long listSize, MIDIEventPacket curPacket, long time, long wordCount, org.moe.natj.general.ptr.ConstIntPtr words)
Adds a MIDI event to a MIDIEventList.
The maximum size of a event list is 65536 bytes. Large sysex messages must be sent in smaller event lists.
Note that events must use the same protocol as was passed to MIDIEventListInit().
evtlist - The event list to which the event is to be added.listSize - The capacity, in bytes, of the event list.curPacket - A packet pointer returned by a previous call to
MIDIEventListInit or MIDIEventListAdd for this packet
list.time - The new event's time.wordCount - The number of valid MIDI 32-bit words which follow, in data.words - The new event. May be a single MIDI event, or a partial
sys-ex event. Running status is not permitted.public static int MIDIDeviceNewEntity(int device,
CFStringRef name,
int protocol,
byte embedded,
long numSourceEndpoints,
long numDestinationEndpoints,
org.moe.natj.general.ptr.IntPtr newEntity)
Drivers call this function to specify one of the entities that comprise a device.
Non-drivers may call this function as of macOS 10.16 & iOS 14 to add entities to external devices.
device - The device to which an entity is to be added.name - The name of the new entity.protocol - The MIDI protocol variant used by the sources and
destinations that comprise this entity.embedded - True if this entity is inside the device, false if the
entity simply consists of external connectors to which
other devices can be attached.numSourceEndpoints - The number of source endpoints the entity has.numDestinationEndpoints - The number of destination endpoints the entity has.newEntity - On successful return, points to the newly-created entity.public static int MIDIMessageTypeForUPWord(int word)
public static int MIDI1UPChannelVoiceMessage(byte group,
byte status,
byte channel,
byte data1,
byte data2)
Word0: [aaaa][bbbb][cccc][dddd][0eeeeeee][0fffffff]
a: Universal MIDI Packet Message Type (0x2 for all voice messages) b: Channel group number c: MIDI status d: MIDI channel e: MIDI note number f: Velocity
The following set of functions will correctly construct voice channel messages as MIDI-1UP.
public static int MIDI1UPNoteOff(byte group,
byte channel,
byte noteNumber,
byte velocity)
public static int MIDI1UPNoteOn(byte group,
byte channel,
byte noteNumber,
byte velocity)
public static int MIDI1UPControlChange(byte group,
byte channel,
byte index,
byte data)
public static int MIDI1UPPitchBend(byte group,
byte channel,
byte lsb,
byte msb)
public static int MIDI1UPSystemCommon(byte group,
byte status,
byte byte1,
byte byte2)
public static MIDIMessage_64 MIDI2ChannelVoiceMessage(byte group, byte status, byte channel, char index, int value)
Word0: [aaaa][bbbb][cccc][dddd][eeeeeeeeeeeeeeee] Word1: [nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn]
a: Message Type (type 1 for all voice messages) b: Channel group number c: MIDI status d: MIDI channel e: "Index" -- the contents of this field vary based on message type n: Data payload
The following set of functions will correctly construct voice channel messages as two 32-bit words.
public static MIDIMessage_64 MIDI2NoteOn(byte group, byte channel, byte noteNumber, byte attributeType, char attributeData, char velocity)
public static MIDIMessage_64 MIDI2NoteOff(byte group, byte channel, byte noteNumber, byte attributeType, char attributeData, char velocity)
public static MIDIMessage_64 MIDI2PolyPressure(byte group, byte channel, byte noteNumber, int value)
public static MIDIMessage_64 MIDI2RegisteredPNC(byte group, byte channel, byte noteNumber, byte index, int value)
public static MIDIMessage_64 MIDI2AssignablePNC(byte group, byte channel, byte noteNumber, byte index, int value)
public static MIDIMessage_64 MIDI2PerNoteManagment(byte group, byte channel, byte noteNumber, boolean detachPNCs, boolean resetPNCsToDefault)
public static MIDIMessage_64 MIDI2ControlChange(byte group, byte channel, byte index, int value)
public static MIDIMessage_64 MIDI2RegisteredControl(byte group, byte channel, byte bank, byte index, int value)
public static MIDIMessage_64 MIDI2AssignableControl(byte group, byte channel, byte bank, byte index, int value)
public static MIDIMessage_64 MIDI2RelRegisteredControl(byte group, byte channel, byte bank, byte index, int value)
public static MIDIMessage_64 MIDI2RelAssignableControl(byte group, byte channel, byte bank, byte index, int value)
public static MIDIMessage_64 MIDI2ProgramChange(byte group, byte channel, boolean bankIsValid, byte program, byte bank_msb, byte bank_lsb)
public static MIDIMessage_64 MIDI2ChannelPressure(byte group, byte channel, int value)
public static MIDIMessage_64 MIDI2PitchBend(byte group, byte channel, int value)
public static MIDIMessage_64 MIDI2PerNotePitchBend(byte group, byte channel, byte noteNumber, int value)
public static CFStringRef kMIDIPropertyProtocolID()
device/entity/endpoint property, MIDIProtocolID. Indicates the native protocol in which the endpoint communicates. The value is set by the system on endpoints, when they are created. Drivers may dynamically change the protocol of an endpoint as a result of a MIDI-CI negotiation, by setting this property on the endpoint. Clients can observe changes to this property.
public static MIDIMessage_64 MIDI1UPSysEx(byte group, byte status, byte bytesUsed, byte byte1, byte byte2, byte byte3, byte byte4, byte byte5, byte byte6)
public static MIDIMessage_64 MIDI1UPSysExArray(byte group, byte status, java.lang.String begin, java.lang.String end)
public static void MIDIEventListForEachEvent(MIDIEventList evtlist, CoreMIDI.Function_MIDIEventListForEachEvent visitor, org.moe.natj.general.ptr.VoidPtr visitorContext)
Parses UMPs from a MIDIEventList.
MIDIEventListForEachEvent iterates over all UMPs in the provided MIDIEventList. It parses each UMP and fills a MIDIUniversalMessage struct. It calls the provided visitor on each of these UMPs. In case of an unknown UMP the raw UMP words will be provided.
evtlist - The MIDIEventList which is to be parsed.visitor - The visitor that is called on each UMP in evtlist.visitorContext - A context for the visitor that is passed to it when being called.