00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef _MKMD_
00050 #define _MKMD_
00051
00052 #import <Foundation/Foundation.h>
00053 #import <mach/kern_return.h>
00054
00055
00056 #define PERFORM_API
00057
00058
00059 typedef int msg_header_t;
00060
00061 #define MKMD_RECEPTION_USING_PORTS 0
00062 #define MKMD_PORT_NULL 0
00063
00064 #define MKMDPort int
00065 #define MKMDOwnerPort int
00066 #define MKMDReplyPort int
00067 typedef int MKMDReturn;
00068
00069
00070 typedef struct {
00071 int time;
00072 unsigned char byte;
00073 } MKMDRawEvent, *MKMDRawEventPtr;
00074
00075
00076
00077
00078 #define MKMD_MAX_EVENT 100
00079
00080
00081
00082
00083 #define MKMD_MAX_MSG_SIZE 1024 // More than enough
00084
00085
00086 #define MKMD_CLOCK_MODE_INTERNAL 0
00087 #define MKMD_CLOCK_MODE_MTC_SYNC 1
00088
00089
00090 #define MKMD_SUCCESS KERN_SUCCESS // use this until all the MKMidi checks have been converted to MKMD_SUCCESS.
00091
00092 #define MKMD_ERROR_BUSY 100
00093 #define MKMD_ERROR_NOT_OWNER 101
00094 #define MKMD_ERROR_QUEUE_FULL 102
00095 #define MKMD_ERROR_BAD_MODE 103
00096 #define MKMD_ERROR_UNIT_UNAVAILABLE 104
00097 #define MKMD_ERROR_ILLEGAL_OPERATION 105
00098 #define MKMD_ERROR_UNKNOWN_ERROR 106
00099
00100
00101 #define MKMD_EXCEPTION_MTC_STOPPED 1
00102 #define MKMD_EXCEPTION_MTC_STARTED_FORWARD 2
00103 #define MKMD_EXCEPTION_MTC_STARTED_REVERSE 3
00104
00105
00106 #define MKMD_IGNORE_CLOCK 0x0100
00107 #define MKMD_IGNORE_START 0x0400
00108 #define MKMD_IGNORE_CONTINUE 0x0800
00109 #define MKMD_IGNORE_STOP 0x1000
00110 #define MKMD_IGNORE_ACTIVE 0x4000
00111 #define MKMD_IGNORE_RESET 0x8000
00112 #define MKMD_IGNORE_REAL_TIME 0xdd00
00113
00114
00115 #define MKMD_PORT_A_UNIT 0
00116 #define MKMD_PORT_B_UNIT 1
00117
00118
00119 typedef void (*MKMDDataReplyFunction)
00120 (port_t replyPort, short unit, MKMDRawEvent *events, unsigned int count);
00121 typedef void (*MKMDAlarmReplyFunction)
00122 (port_t replyPort, int requestedTime, int actualTime);
00123 typedef void (*MKMDExceptionReplyFunction)
00124 (port_t replyPort, int exception);
00125 typedef void (*MKMDQueueReplyFunction)
00126 (port_t replyPort, short unit);
00127
00128
00129 typedef struct _MKMDReplyFunctions {
00130 MKMDDataReplyFunction dataReply;
00131 MKMDAlarmReplyFunction alarmReply;
00132 MKMDExceptionReplyFunction exceptionReply;
00133 MKMDQueueReplyFunction queueReply;
00134 } MKMDReplyFunctions;
00135
00136
00137
00138
00139 PERFORM_API MKMDPort
00140 MKMDGetMIDIDeviceOnHost(const char *hostname);
00141
00142
00143
00144 PERFORM_API MKMDReturn
00145 MKMDBecomeOwner(MKMDPort mididriver_port, MKMDOwnerPort owner_port);
00146
00147 PERFORM_API MKMDReturn
00148 MKMDReleaseOwnership(MKMDPort mididriver_port, MKMDOwnerPort owner_port);
00149
00150
00151 PERFORM_API MKMDReturn
00152 MKMDClaimUnit(MKMDPort driver, MKMDOwnerPort owner, short unit);
00153 PERFORM_API MKMDReturn
00154 MKMDReleaseUnit(MKMDPort driver, MKMDOwnerPort owner, short unit);
00155
00156
00157 PERFORM_API MKMDReturn
00158 MKMDSetClockMode(MKMDPort driver, MKMDOwnerPort owner, short synchUnit, int mode);
00159
00160 PERFORM_API MKMDReturn
00161 MKMDSetClockQuantum(MKMDPort driver, MKMDOwnerPort owner, int microseconds);
00162 PERFORM_API MKMDReturn
00163 MKMDSetClockTime(MKMDPort driver, MKMDOwnerPort owner, int time);
00164 PERFORM_API MKMDReturn
00165 MKMDGetClockTime(MKMDPort driver, MKMDOwnerPort owner, int *time);
00166 PERFORM_API MKMDReturn
00167 MKMDGetMTCTime(MKMDPort driver, MKMDOwnerPort owner, short *format, short *hours, short *minutes, short *seconds, short *frames);
00168 PERFORM_API MKMDReturn
00169 MKMDStartClock(MKMDPort driver, MKMDOwnerPort owner);
00170 PERFORM_API MKMDReturn
00171 MKMDStopClock(MKMDPort driver, MKMDOwnerPort owner);
00172
00173
00174 PERFORM_API MKMDReturn
00175 MKMDRequestData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort replyPort);
00176 PERFORM_API MKMDReturn
00177 MKMDRequestAlarm(MKMDPort driver, MKMDOwnerPort owner, MKMDReplyPort replyPort, int time);
00178 PERFORM_API MKMDReturn
00179 MKMDRequestExceptions(MKMDPort driver, MKMDOwnerPort owner, port_t exceptionPort);
00180 PERFORM_API MKMDReturn
00181 MKMDRequestQueueNotification(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort notificationPort, int size);
00182
00183
00184
00185 PERFORM_API MKMDReturn
00186 MKMDAwaitReply(MKMDReplyPort ports, MKMDReplyFunctions *funcs, int timeout);
00187
00188 #define MKMD_NO_TIMEOUT (-1)
00189
00190 PERFORM_API MKMDReturn
00191 MKMDHandleReply(msg_header_t *msg, MKMDReplyFunctions *funcs);
00192
00193
00194
00195 PERFORM_API MKMDReturn MKMDSetReplyCallback (
00196 MKMDPort mididriver_port,
00197 MKMDOwnerPort owner_port,
00198 short unit,
00199 void (*newCallbackFn)(void *),
00200 void *newCallbackParam);
00201
00202
00203 PERFORM_API MKMDReturn
00204 MKMDSendData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDRawEvent *data, unsigned int count);
00205 PERFORM_API MKMDReturn
00206 MKMDGetAvailableQueueSize(MKMDPort driver, MKMDOwnerPort owner, short unit, int *size);
00207 PERFORM_API MKMDReturn
00208 MKMDClearQueue(MKMDPort driver, MKMDOwnerPort owner, short unit);
00209 PERFORM_API MKMDReturn
00210 MKMDFlushQueue(MKMDPort device_port, MKMDOwnerPort owner_port, short unit);
00211
00212 PERFORM_API MKMDReturn
00213 MKMDDownloadDLSInstruments(unsigned int *patches, int patchCount);
00214
00215 PERFORM_API const char **
00216 MKMDGetAvailableDrivers(unsigned int *selectedDriver);
00217
00218
00219 PERFORM_API MKMDReturn
00220 MKMDFilterMessage(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned char statusByte, boolean_t filterIt);
00221 PERFORM_API MKMDReturn
00222 MKMDParseInput(MKMDPort driver, MKMDOwnerPort owner, short unit, boolean_t parseIt);
00223
00224
00225 PERFORM_API MKMDReturn
00226 MKMDSetSystemIgnores(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned int ignoreBits);
00227
00228 #endif _MKMD_
00229