MusicKit  0.0.0
MKPerformer.h
00001 /*
00002   $Id$
00003   Defined In: The MusicKit
00004 
00005   Description:
00006     Full description is in the class description below.  
00007 
00008   Original Author: David A. Jaffe
00009 
00010   Copyright (c) 1988-1992, NeXT Computer, Inc.
00011   Portions Copyright (c) 1994 NeXT Computer, Inc. and reproduced under license from NeXT
00012   Portions Copyright (c) 1994 Stanford University.
00013   Portions Copyright (c) 1999-2004, The MusicKit Project.
00014 */
00167 #ifndef __MK_Performer_H___
00168 #define __MK_Performer_H___
00169 
00170 #import <Foundation/Foundation.h>
00171 #import "MKNoteSender.h"
00172 #import "MKConductor.h"
00173 
00182 typedef enum _MKPerformerStatus {
00184     MK_inactive,
00189     MK_active,
00191     MK_paused
00192 } MKPerformerStatus;
00193 
00194 @interface MKPerformer : NSObject
00195 {
00197     MKConductor *conductor;
00199     MKPerformerStatus status;
00201     int performCount;
00203     double timeShift;
00205     double duration;
00208     double time;
00210     double nextPerform;
00212     NSMutableArray *noteSenders;
00214     id delegate;
00215 
00216 @private
00217     double _pauseOffset;          // Difference between the beat when a performer is paused and its time.
00218     double _endTime;              // End time for the object. Subclass should not set _endTime.
00219     MKMsgStruct *_performMsgPtr;
00220     MKMsgStruct *_deactivateMsgPtr;
00221     MKMsgStruct *_pauseForMsgPtr;
00222 }
00223 
00231 - (NSArray *) noteSenders; 
00232 
00238 - (BOOL) isNoteSenderPresent: (MKNoteSender *) aNoteSender; 
00239 
00244 - disconnectNoteSenders;
00245 
00250 - releaseNoteSenders; 
00251 
00256 - removeNoteSenders; 
00257 
00267 - (MKNoteSender *) noteSender; 
00268 
00282 - (MKNoteSender *) removeNoteSender: (MKNoteSender *) aNoteSender; 
00283 
00294 - (MKNoteSender *) addNoteSender: (MKNoteSender *) aNoteSender; 
00295 
00303 - (BOOL) setConductor: (MKConductor *) aConductor;
00304 
00309 - (MKConductor *) conductor; 
00310 
00323 - activateSelf; 
00324 
00332 - perform; 
00333 
00343 - setTimeShift: (double) timeShift;
00344 
00355 - setDuration: (double) dur; 
00356 
00361 - (double) timeShift;
00362 
00367 - (double) duration; 
00368 
00373 - (int) status; 
00374 
00380 - (int) performCount; 
00381 
00397 - activate; 
00398 
00408 - (void) deactivate;
00409 
00419 - init; 
00420 
00428 - pause; 
00429 
00436 -pauseFor: (double) beats;
00437 
00445 - resume; 
00446 
00457 - copyWithZone: (NSZone *) zone;
00458 
00469 - (double) time; 
00470 
00476 - setFirstTimeTag: (double) v;
00477 
00483 - setLastTimeTag: (double) v;
00484 
00490 - (double) firstTimeTag;
00491 
00498 - (double) lastTimeTag;
00499 
00506 - (void) setDelegate: (id) object;
00507 
00512 - delegate;
00513 
00525 - rescheduleBy: (double) aTimeIncrement;
00526 
00536 - rescheduleAtTime: (double) aTime;
00537 
00544 - (void) encodeWithCoder: (NSCoder *) aCoder;
00545 
00551 - (id) initWithCoder: (NSCoder *) aDecoder;
00552 
00557 - (BOOL) inPerformance;
00558 
00559 @end
00560 
00561 /* Describes the protocol that may be implemented by the delegate: */
00562 #import "MKPerformerDelegate.h"
00563 
00564 #endif