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 @class MKConductor;
00035
00154 #ifndef __MK_Midi_H___
00155 #define __MK_Midi_H___
00156
00157 #import <Foundation/NSObject.h>
00158 #import <MKPerformSndMIDI/PerformMIDI.h>
00159 #import "MKDeviceStatus.h"
00160 #import "params.h"
00161 #import "_midi.h"
00162
00163
00164
00165
00166
00167 #ifdef GNUSTEP
00168 #define NSMachPort NSPort
00169 #endif
00170
00171 @interface MKMidi: NSObject
00172 {
00173 NSMutableArray *noteSenders;
00174 NSMutableArray *noteReceivers;
00175 MKDeviceStatus deviceStatus;
00176 NSString *midiDevName;
00177 BOOL useInputTimeStamps;
00178 BOOL outputIsTimed;
00179 double localDeltaT;
00181 @private
00182
00183 unsigned int systemIgnoreBits;
00184 _MKMidiInStruct *_pIn;
00185 _MKMidiOutStruct *_pOut;
00186 double timeOffset;
00187 enum MKMidiDirection {MKMidiInputOnly, MKMidiOutputOnly, MKMidiInputOutput} ioMode;
00188 BOOL isOwner;
00189
00190
00191 MKMDPort devicePort;
00192 MKMDOwnerPort ownerPort;
00193 MKMDReplyPort recvPort;
00194 MKMDReplyPort queuePort;
00195 BOOL mergeInput;
00196 NSString *hostname;
00198 int inputUnit;
00200 int outputUnit;
00201 int queueSize;
00203 MKConductor *conductor;
00205 MKConductor *synchConductor;
00206 NSMachPort *exceptionPort;
00207 NSMachPort *alarmPort;
00209 MKMidi *mtcMidiObj;
00211 BOOL displayReceivedMIDI;
00212 double alarmTime;
00213 int intAlarmTime;
00214 BOOL alarmTimeValid;
00215 BOOL alarmPending;
00216 }
00217
00218 #define MK_MAXMIDIS 16
00219
00226 - (MKConductor *) conductor;
00227
00234 - setConductor: (MKConductor *) aConductor;
00235
00252 + midiOnDevice: (NSString *) devName host: (NSString *) hostName;
00253
00270 + midiOnDevice: (NSString *) devName;
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00290 + midi;
00291
00298 - initOnDevice: (NSString *) devName hostName: (NSString *) hostName;
00299
00305 - initOnDevice: (NSString *) devName;
00306
00311 - init;
00312
00316 - (void) dealloc;
00317
00322 - (MKDeviceStatus) deviceStatus;
00323
00334 - open;
00335
00344 - openInputOnly;
00345
00354 - openOutputOnly;
00355
00364 - run;
00365
00374 - stop;
00375
00381 - (void) close;
00382
00389 - abort;
00390
00403 - setOutputTimed: (BOOL) yesOrNo;
00404
00418 - (BOOL) outputIsTimed;
00419
00434 - (MKNoteSender *) channelNoteSender: (unsigned) channel;
00435
00450 - (MKNoteReceiver *) channelNoteReceiver: (unsigned) channel;
00451
00456 - (MKNoteReceiver *) noteReceiver;
00457
00465 - (NSArray *) noteReceivers;
00466
00471 - (MKNoteSender *) noteSender;
00472
00480 - (NSArray *) noteSenders;
00481
00482
00483 - (void) handleMachMessage: (void *) machMessage;
00484
00495 - setUseInputTimeStamps: (BOOL) yesOrNo;
00496
00523 - (BOOL) useInputTimeStamps;
00524
00535 - ignoreSys: (MKMidiParVal) param;
00536
00558 - acceptSys: (MKMidiParVal) param;
00559
00564 - (double) localDeltaT;
00565
00577 - setLocalDeltaT: (double) value;
00578
00589 - setMergeInput: (BOOL) yesOrNo;
00590
00596 - awaitQueueDrain;
00597
00606 - allNotesOffBlast;
00607
00614 - allNotesOff;
00615
00630 - (double) time;
00631
00649 - getMTCFormat: (short *) format
00650 hours: (short *) h
00651 min: (short *) m
00652 sec: (short *) s
00653 frames: (short *) f;
00654
00660 - synchConductor;
00661
00670 + (NSArray *) getDriverNames;
00671
00678 + (NSArray *) getDriverNamesForInput;
00679
00686 + (NSArray *) getDriverNamesForOutput;
00687
00692 - (NSString *) driverName;
00693
00699 - (NSString *) description;
00700
00704 - (void) downloadDLS: (NSArray *) dlsPatches;
00705
00706 @end
00707
00708 #endif