MusicKit
0.0.0
|
00001 /* 00002 $Id$ 00003 Defined In: The MusicKit 00004 00005 Description: 00006 MIDI driver typedefs, defines, and functions exported to other MusicKit frameworks. 00007 See the HeaderDoc header below. 00008 00009 Original Author of MacOS X version: Leigh M. Smith 00010 00011 Copyright (c) 2000-2004 The MusicKit Project. 00012 */ 00033 #ifndef _MKMD_ 00034 #define _MKMD_ 00035 00036 #import <Foundation/Foundation.h> 00037 #import <mach/kern_return.h> 00038 00045 #define PERFORM_API 00046 00047 // kludge around type definitions. This should be replaced. 00048 typedef int msg_header_t; // mach_msg_header_t 00049 00057 #define MKMDPort int 00058 00066 #define MKMDOwnerPort int 00067 00077 #define MKMDReplyPort int 00078 00083 typedef int MKMDReturn; 00084 00096 #define MKMD_RECEPTION_USING_PORTS 0 00097 00102 #define MKMD_PORT_NULL 0 00103 00107 typedef struct { 00109 int time; 00111 unsigned char byte; 00112 } MKMDRawEvent; 00113 00118 typedef MKMDRawEvent *MKMDRawEventPtr; 00119 00124 #define MKMD_MAX_EVENT 100 00125 00130 #define MKMD_MAX_MSG_SIZE 1024 // More than enough 00131 00136 #define MKMD_CLOCK_MODE_INTERNAL 0 00137 00142 #define MKMD_CLOCK_MODE_MTC_SYNC 1 00143 00144 /* error codes */ 00149 #define MKMD_SUCCESS KERN_SUCCESS // use this until all the MKMidi checks have been converted to MKMD_SUCCESS. 00150 //#define MKMD_SUCCESS 0 00151 #define MKMD_ERROR_BUSY 100 00152 #define MKMD_ERROR_NOT_OWNER 101 00153 #define MKMD_ERROR_QUEUE_FULL 102 00154 #define MKMD_ERROR_BAD_MODE 103 00155 #define MKMD_ERROR_UNIT_UNAVAILABLE 104 00156 #define MKMD_ERROR_ILLEGAL_OPERATION 105 00157 #define MKMD_ERROR_UNKNOWN_ERROR 106 00158 00159 /* exception codes */ 00160 #define MKMD_EXCEPTION_MTC_STOPPED 1 00161 #define MKMD_EXCEPTION_MTC_STARTED_FORWARD 2 00162 #define MKMD_EXCEPTION_MTC_STARTED_REVERSE 3 00163 00164 /* Defines for system ignores. */ 00165 #define MKMD_IGNORE_CLOCK 0x0100 00166 #define MKMD_IGNORE_START 0x0400 00167 #define MKMD_IGNORE_CONTINUE 0x0800 00168 #define MKMD_IGNORE_STOP 0x1000 00169 #define MKMD_IGNORE_ACTIVE 0x4000 00170 #define MKMD_IGNORE_RESET 0x8000 00171 #define MKMD_IGNORE_REAL_TIME 0xdd00 /* All of the above */ 00172 00177 #define MKMD_PORT_A_UNIT 0 00178 00183 #define MKMD_PORT_B_UNIT 1 00184 00185 /* Reply function types. */ 00194 typedef void (*MKMDDataReplyFunction) (void *userData, short unit, MKMDRawEvent *events, unsigned int count); 00195 00203 typedef void (*MKMDAlarmReplyFunction) (MKMDReplyPort replyPort, int requestedTime, int actualTime); 00204 00211 typedef void (*MKMDExceptionReplyFunction) (MKMDReplyPort replyPort, int exception); 00212 00220 typedef void (*MKMDQueueReplyFunction) (MKMDReplyPort replyPort, short unit); 00221 00231 typedef struct _MKMDReplyFunctions { 00232 MKMDDataReplyFunction dataReply; 00233 MKMDAlarmReplyFunction alarmReply; 00234 MKMDExceptionReplyFunction exceptionReply; 00235 MKMDQueueReplyFunction queueReply; 00236 } MKMDReplyFunctions; 00237 00245 PERFORM_API MKMDPort 00246 MKMDGetMIDIDeviceOnHost(const char *hostname); 00247 00256 PERFORM_API MKMDReturn 00257 MKMDBecomeOwner(MKMDPort mididriver_port, MKMDOwnerPort owner_port, MKMDReplyFunctions *replyFunctions); 00258 00266 PERFORM_API MKMDReturn 00267 MKMDReleaseOwnership(MKMDPort mididriver_port, MKMDOwnerPort owner_port); 00268 00279 PERFORM_API MKMDReturn 00280 MKMDClaimUnit(BOOL input, MKMDPort driver, MKMDOwnerPort owner, short unit, void *userData); 00281 00291 PERFORM_API MKMDReturn 00292 MKMDReleaseUnit(BOOL input, MKMDPort driver, MKMDOwnerPort owner, short unit, void *userData); 00293 00303 PERFORM_API MKMDReturn 00304 MKMDSetClockMode(MKMDPort driver, MKMDOwnerPort owner, short synchUnit, int mode); 00305 00314 PERFORM_API MKMDReturn 00315 MKMDSetClockQuantum(MKMDPort driver, MKMDOwnerPort owner, int microseconds); 00316 00325 PERFORM_API MKMDReturn 00326 MKMDSetClockTime(MKMDPort driver, MKMDOwnerPort owner, int time); 00327 00336 PERFORM_API MKMDReturn 00337 MKMDGetClockTime(MKMDPort driver, MKMDOwnerPort owner, int *time); 00338 00354 PERFORM_API MKMDReturn 00355 MKMDGetMTCTime(MKMDPort driver, MKMDOwnerPort owner, short *format, short *hours, short *minutes, short *seconds, short *frames); 00356 00364 PERFORM_API MKMDReturn 00365 MKMDStartClock(MKMDPort driver, MKMDOwnerPort owner); 00366 00374 PERFORM_API MKMDReturn 00375 MKMDStopClock(MKMDPort driver, MKMDOwnerPort owner); 00376 00386 PERFORM_API MKMDReturn 00387 MKMDRequestData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort replyPort); 00388 00398 PERFORM_API MKMDReturn 00399 MKMDRequestAlarm(MKMDPort driver, MKMDOwnerPort owner, MKMDReplyPort replyPort, int time); 00400 00409 PERFORM_API MKMDReturn 00410 MKMDRequestExceptions(MKMDPort driver, MKMDOwnerPort owner, MKMDReplyPort exceptionPort); 00411 00423 PERFORM_API MKMDReturn 00424 MKMDRequestQueueNotification(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDReplyPort notificationPort, int size); 00425 00426 /****************** Receiving asynchronous messages *******************/ 00427 00436 PERFORM_API MKMDReturn 00437 MKMDAwaitReply(MKMDReplyPort ports, MKMDReplyFunctions *funcs, int timeout); 00438 00443 #define MKMD_NO_TIMEOUT (-1) 00444 00452 PERFORM_API MKMDReturn 00453 MKMDHandleReply(void *userData, MKMDReplyFunctions *funcs); 00454 00465 PERFORM_API MKMDReturn MKMDSetReplyCallback ( 00466 MKMDPort mididriver_port, 00467 MKMDOwnerPort owner_port, 00468 short unit, 00469 void (*newCallbackFn)(void *), 00470 void *newCallbackParam); 00471 00483 PERFORM_API MKMDReturn 00484 MKMDSendData(MKMDPort driver, MKMDOwnerPort owner, short unit, MKMDRawEvent *data, unsigned int count); 00485 00495 PERFORM_API MKMDReturn 00496 MKMDGetAvailableQueueSize(MKMDPort driver, MKMDOwnerPort owner, short unit, int *size); 00497 00506 PERFORM_API MKMDReturn 00507 MKMDClearQueue(MKMDPort driver, MKMDOwnerPort owner, short unit); 00508 00517 PERFORM_API MKMDReturn 00518 MKMDFlushQueue(MKMDPort device_port, MKMDOwnerPort owner_port, short unit); 00519 00528 PERFORM_API MKMDReturn 00529 MKMDDownloadDLSInstruments(unsigned int *patches, int patchCount); 00530 00541 PERFORM_API const char ** 00542 MKMDGetAvailableDrivers(BOOL inputDrivers, unsigned int *selectedDriver); 00543 00554 PERFORM_API MKMDReturn 00555 MKMDFilterMessage(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned char statusByte, boolean_t filterIt); 00556 00566 PERFORM_API MKMDReturn 00567 MKMDParseInput(MKMDPort driver, MKMDOwnerPort owner, short unit, boolean_t parseIt); 00568 00575 PERFORM_API char *MKMDErrorString(MKMDReturn errorCode); 00576 00586 PERFORM_API MKMDReturn 00587 MKMDSetSystemIgnores(MKMDPort driver, MKMDOwnerPort owner, short unit, unsigned int ignoreBits); 00588 00589 #endif _MKMD_ 00590