MusicKit
0.0.0
|
00001 /* 00002 $Id$ 00003 Defined In: The MusicKit 00004 00005 Description: 00006 This file contains private methods, functions and defines. 00007 00008 Original Author: David Jaffe 00009 00010 Copyright 1988-1992, NeXT Inc. All rights reserved. 00011 Portions Copyright (c) 1999-2003 The MusicKit Project. 00012 */ 00013 #ifndef __MK__Conductor_H___ 00014 #define __MK__Conductor_H___ 00015 00016 #import "MKConductor.h" 00017 #import <Foundation/Foundation.h> 00018 00019 #define _MK_ONLY_ONE_MTC_SUPPORTED 1 /* Do we ever need more than one? */ 00020 #define _MK_DEFAULT_MTC_POLL_PERIOD (1/30.0) 00021 00022 #define DELEGATE_RESPONDS_TO(_self,_msgBit) ((_self)->delegateFlags & _msgBit) 00023 #define BEAT_TO_CLOCK 1 00024 #define CLOCK_TO_BEAT 2 00025 00026 // This used to be NX_FOREVER which is obsolete with OpenStep. There's no reason not to include it manually though. 00027 #define MK_FOREVER (6307200000.0) /* 200 years of seconds */ 00028 00029 #define ENDOFLIST (MK_FOREVER) 00030 #define PAUSETIME (MK_ENDOFTIME - 2.0) /* See ISENDOFTIME below */ 00031 00032 /* Macros for safe float compares */ 00033 #define ISENDOFLIST(_x) (_x > (ENDOFLIST - 1.0)) 00034 #define ISENDOFTIME(_x) (_x > (MK_ENDOFTIME - 1.0)) 00035 00036 #define TARGETFREES NO 00037 #define CONDUCTORFREES YES 00038 00039 #define NOTIMEDENTRY nil 00040 00041 #define PEEKTIME(pq) (pq)->_timeOfMsg 00042 00043 typedef enum _backgroundThreadAction { 00044 exitThread, 00045 pauseThread 00046 } backgroundThreadAction; 00047 00048 extern void _MKLock(void) ; 00049 /* Waits for MusicKit to become available for messaging. */ 00050 extern void _MKUnlock(void) ; 00051 /* Gives up lock so that Music Kit can run again. */ 00052 00053 extern void _MKAddPort(NSPort *aPort, 00054 id handlerObj, 00055 unsigned max_msg_size, 00056 void *anArg, 00057 NSString *priority); 00058 extern void _MKRemovePort(NSPort *aPort); 00059 00060 extern void _MKSendVMMsgToApplicationThread(id self, 00061 short *data, 00062 int dataCount, 00063 int vmCount); 00064 00065 00066 extern double _MKTheTimeToWait(double nextMsgTime); 00067 00068 @interface MKConductor(Private) 00069 00070 +(MKMsgStruct *)_afterPerformanceSel:(SEL)aSelector 00071 to:(id)toObject 00072 argCount:(int)argCount, ...; 00073 +(MKMsgStruct *)_afterPerformanceSel:(SEL)aSelector 00074 to:(id)toObject 00075 argCount:(int)argCount 00076 arg1:(id)arg1 retain:(BOOL)retainArg1 00077 arg2:(id)arg2 retain:(BOOL)retainArg2; 00078 +(MKMsgStruct *)_newMsgRequestAtTime:(double)timeOfMsg 00079 sel:(SEL)whichSelector to:(id)destinationObject 00080 argCount:(int)argCount, ...; 00081 +(MKMsgStruct *)_newMsgRequestAtTime:(double)timeOfMsg 00082 sel:(SEL)whichSelector to:(id)destinationObject 00083 argCount:(int)argCount arg1:(id)arg1 retain:(BOOL)retainArg1 00084 arg2:(id)arg2 retain:(BOOL)retainArg2; 00085 +(void)_scheduleMsgRequest:(MKMsgStruct *)aMsgStructPtr; 00086 +(MKMsgStruct *)_cancelMsgRequest:(MKMsgStruct *)aMsgStructPtr; 00087 +(double)_adjustTimeNoTE:(double)desiredTime ; 00088 +(double)_getLastTime; 00089 +_adjustDeltaTThresholds; 00090 -(void)_scheduleMsgRequest:(MKMsgStruct *)aMsgStructPtr; 00091 -(MKMsgStruct *)_rescheduleMsgRequest:(MKMsgStruct *)aMsgStructPtr 00092 atTime:(double)timeOfNewMsg sel:(SEL)whichSelector 00093 to:(id)destinationObject argCount:(int)argCount, ...; 00094 -(MKMsgStruct *)_rescheduleMsgRequestWithObjectArgs:(MKMsgStruct *)aMsgStructPtr 00095 atTime:(double)timeOfNewMsg sel:(SEL)whichSelector 00096 to:(id)destinationObject argCount:(int)argCount 00097 arg1:(id)arg1 retain:(BOOL)retainArg1 00098 arg2:(id)arg2 retain:(BOOL)retainArg2; 00099 + (void) masterConductorBody:(NSTimer *) unusedTimer; 00100 - _error: (NSString *) errorMsg; 00101 -_pause; 00102 -_resume; 00103 00104 @end 00105 00106 @interface MKConductor(MTCPrivate) 00107 00108 -_adjustPauseOffset:(double)v; 00109 -_MTCException:(int)exception; 00110 -_addActivePerformer:perf; 00111 -_removeActivePerformer:perf; 00112 -_runMTC:(double)requestedTime :(double)actualTime; 00113 -(double) _setMTCTime:(double)desiredTime; 00114 -(double)_MTCPerformerActivateOffset: (id) sender; 00115 - _setMTCSynch: (MKMidi *) aMidiObj; 00116 00117 void setupMTC(void); 00118 void resetMTCTime(void); 00119 BOOL weGotMTC(void); 00120 BOOL mtcEndOfTime(void); 00121 void adjustTime(); 00122 BOOL checkForEndOfTime(); 00123 void repositionCond(MKConductor *cond, double nextMsgTime); 00124 double beatToClock(MKConductor *self, double newBeat); 00125 00126 @end 00127 00128 #endif