00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00037 #ifndef _MKMD_
00038 #define _MKMD_
00039
00040
00041
00042
00043
00044
00045 #include "MKPerformSndMIDIConfig.h"
00046 #include <objc/objc.h>
00047
00048
00049 typedef int kern_return_t;
00050 typedef int msg_header_t;
00051 typedef int boolean_t;
00052
00061 #define MKMDPort int
00062
00071 #define MKMDOwnerPort int
00072
00082 #define MKMDReplyPort int
00083
00090 typedef int MKMDReturn;
00091
00103 #define MKMD_RECEPTION_USING_PORTS 0
00104
00109 #define MKMD_PORT_NULL 0
00110
00111
00115 typedef struct {
00117 int time;
00119 unsigned char byte;
00120 } MKMDRawEvent;
00121
00126 typedef MKMDRawEvent *MKMDRawEventPtr;
00127
00134 #define MKMD_MAX_EVENT 100
00135
00142 #define MKMD_MAX_MSG_SIZE 1024 // More than enough
00143
00150 #define MKMD_CLOCK_MODE_INTERNAL 0
00151
00158 #define MKMD_CLOCK_MODE_MTC_SYNC 1
00159
00160
00167 #define MKMD_SUCCESS 0
00168
00169
00170 #define MKMD_ERROR_BUSY 100
00171 #define MKMD_ERROR_NOT_OWNER 101
00172 #define MKMD_ERROR_QUEUE_FULL 102
00173 #define MKMD_ERROR_BAD_MODE 103
00174 #define MKMD_ERROR_UNIT_UNAVAILABLE 104
00175 #define MKMD_ERROR_ILLEGAL_OPERATION 105
00176 #define MKMD_ERROR_UNKNOWN_ERROR 106
00177
00178
00179 #define MKMD_EXCEPTION_MTC_STOPPED 1
00180 #define MKMD_EXCEPTION_MTC_STARTED_FORWARD 2
00181 #define MKMD_EXCEPTION_MTC_STARTED_REVERSE 3
00182
00183
00184 #define MKMD_IGNORE_CLOCK 0x0100
00185 #define MKMD_IGNORE_START 0x0400
00186 #define MKMD_IGNORE_CONTINUE 0x0800
00187 #define MKMD_IGNORE_STOP 0x1000
00188 #define MKMD_IGNORE_ACTIVE 0x4000
00189 #define MKMD_IGNORE_RESET 0x8000
00190 #define MKMD_IGNORE_REAL_TIME 0xdd00
00191
00196 #define MKMD_PORT_A_UNIT 0
00197
00202 #define MKMD_PORT_B_UNIT 1
00203
00204
00217 typedef void (*MKMDDataReplyFunction)
00218 (MKMDReplyPort replyPort, short unit, MKMDRawEvent *events, unsigned int count);
00219
00230 typedef void (*MKMDAlarmReplyFunction)
00231 (MKMDReplyPort replyPort, int requestedTime, int actualTime);
00232
00241 typedef void (*MKMDExceptionReplyFunction)
00242 (MKMDReplyPort replyPort, int exception);
00243
00253 typedef void (*MKMDQueueReplyFunction)
00254 (MKMDReplyPort replyPort, short unit);
00255
00270 typedef struct _MKMDReplyFunctions {
00271 MKMDDataReplyFunction dataReply;
00272 MKMDAlarmReplyFunction alarmReply;
00273 MKMDExceptionReplyFunction exceptionReply;
00274 MKMDQueueReplyFunction queueReply;
00275 } MKMDReplyFunctions;
00276
00284 PERFORM_API char *MKMDErrorString(MKMDReturn errorCode);
00285
00294 PERFORM_API MKMDPort
00295 MKMDGetMIDIDeviceOnHost(const char *hostname);
00296
00297
00309 PERFORM_API MKMDReturn
00310 MKMDBecomeOwner(MKMDPort mididriver_port, MKMDOwnerPort owner_port);
00311
00323 PERFORM_API MKMDReturn
00324 MKMDReleaseOwnership(MKMDPort mididriver_port, MKMDOwnerPort owner_port);
00325
00326
00327
00346 PERFORM_API MKMDReturn
00347 MKMDClaimUnit(BOOL input, MKMDPort driver, MKMDOwnerPort owner, short unit);
00348
00366 PERFORM_API MKMDReturn
00367 MKMDReleaseUnit(BOOL input, MKMDPort driver, MKMDOwnerPort owner, short unit);
00368
00369
00370
00387 PERFORM_API MKMDReturn
00388 MKMDSetClockMode(MKMDPort driver, MKMDOwnerPort owner, short synchUnit, int mode);
00389
00403 PERFORM_API MKMDReturn
00404 MKMDSetClockQuantum(MKMDPort driver, MKMDOwnerPort owner, int microseconds);
00405
00419 PERFORM_API MKMDReturn
00420 MKMDSetClockTime(MKMDPort driver, MKMDOwnerPort owner, int time);
00421
00435 PERFORM_API MKMDReturn
00436 MKMDGetClockTime(MKMDPort driver, MKMDOwnerPort owner, int *time);
00437
00462 PERFORM_API MKMDReturn
00463 MKMDGetMTCTime(MKMDPort driver, MKMDOwnerPort owner, short *format, short *hours, short *minutes, short *seconds, short *frames);
00464
00476 PERFORM_API MKMDReturn
00477 MKMDStartClock(MKMDPort driver, MKMDOwnerPort owner);
00478
00490 PERFORM_API MKMDReturn
00491 MKMDStopClock(MKMDPort driver, MKMDOwnerPort owner);
00492
00493
00494
00495
00512 PERFORM_API MKMDReturn
00513 MKMDRequestData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort replyPort);
00514
00530 PERFORM_API MKMDReturn
00531 MKMDRequestAlarm(MKMDPort driver, MKMDOwnerPort owner, MKMDReplyPort replyPort, int time);
00532
00546 PERFORM_API MKMDReturn
00547 MKMDRequestExceptions(MKMDPort driver, MKMDOwnerPort owner, MKMDReplyPort exceptionPort);
00548
00568 PERFORM_API MKMDReturn
00569 MKMDRequestQueueNotification(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort notificationPort, int size);
00570
00571
00572
00584 PERFORM_API MKMDReturn
00585 MKMDAwaitReply(MKMDReplyPort ports, MKMDReplyFunctions *funcs, int timeout);
00586
00593 #define MKMD_NO_TIMEOUT (-1)
00594
00604 PERFORM_API MKMDReturn
00605 MKMDHandleReply(msg_header_t *msg, MKMDReplyFunctions *funcs);
00606
00626 PERFORM_API MKMDReturn MKMDSetReplyCallback (
00627 MKMDPort mididriver_port,
00628 MKMDOwnerPort owner_port,
00629 short unit,
00630 void (*newCallbackFn)(void *),
00631 void *newCallbackParam);
00632
00633
00634
00635
00656 PERFORM_API MKMDReturn
00657 MKMDSendData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDRawEvent *data, unsigned int count);
00658
00675 PERFORM_API MKMDReturn
00676 MKMDGetAvailableQueueSize(MKMDPort driver, MKMDOwnerPort owner, short unit, int *size);
00677
00692 PERFORM_API MKMDReturn
00693 MKMDClearQueue(MKMDPort driver, MKMDOwnerPort owner, short unit);
00694
00709 PERFORM_API MKMDReturn
00710 MKMDFlushQueue(MKMDPort device_port, MKMDOwnerPort owner_port, short unit);
00711
00721 PERFORM_API MKMDReturn
00722 MKMDDownloadDLSInstruments(unsigned int *patches, int patchCount);
00723
00736 PERFORM_API const char **
00737 MKMDGetAvailableDrivers(BOOL inputDrivers, unsigned int *selectedDriver);
00738
00739
00759 PERFORM_API MKMDReturn
00760 MKMDFilterMessage(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned char statusByte, boolean_t filterIt);
00761
00778 PERFORM_API MKMDReturn
00779 MKMDParseInput(MKMDPort driver, MKMDOwnerPort owner, short unit, boolean_t parseIt);
00780
00786 PERFORM_API char *MKMDErrorString(MKMDReturn errorCode);
00787
00804 PERFORM_API MKMDReturn
00805 MKMDSetSystemIgnores(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned int ignoreBits);
00806
00807
00808 #endif
00809