MusicKit  0.0.0
MKPart.h
00001 /*
00002   $Id$
00003   Defined In: The MusicKit
00004 
00005   Description:
00006     See the discussion 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-2003, The MusicKit Project.
00014 
00015   Modification history in CVS at musickit.org
00016  */
00017 
00018 @class MKNote;
00019 @class MKScore;
00020 @class MKNoteSender;
00021 
00180 #ifndef __MK_Part_H___
00181 #define __MK_Part_H___
00182 
00183 #import <Foundation/NSObject.h>
00184 
00185 @interface MKPart : NSObject
00186 {
00188     MKScore *score;
00190     NSMutableArray *notes;  
00192     MKNote *info;      
00194     unsigned int noteCount;          
00196     BOOL isSorted;          
00197 
00198 @private
00199     MKNoteSender *_aNoteSender; /* Used only by MKScorefilePerformers. */
00200     NSMutableArray *_activePerformanceObjs;
00201     int _highestOrderTag;       /* For disambiguating binary search on identical time tagged MKNotes. */
00202 }
00203 
00208 + (MKPart *) part;
00209 
00215 + partWithName: (NSString *) partName;
00216 
00225 - sort;
00226 
00234 - (BOOL) isSorted;
00235 
00251 - combineNotes; 
00252 
00264 - splitNotes; 
00265 
00275 - addToScore: (MKScore *) newScore; 
00276 
00285 - removeFromScore; 
00286 
00292 - init;
00293 
00297 - (void) dealloc;
00298 
00309 - releaseNotes;
00310 
00322 - releaseSelfOnly; 
00323 
00337 - firstTimeTag: (double) firstTimeTag lastTimeTag: (double) lastTimeTag;
00338 
00346 - (MKPart *) addNote: (MKNote *) aNote;
00347 
00357 - (MKNote *) addNoteCopy: (MKNote *) aNote;
00358 
00368 - (MKNote *) removeNote: (MKNote *) aNote; 
00369 
00376 - removeNotes: (NSArray *) aNoteList;
00377 
00381 - (void) removeAllNotes; 
00382 
00399 - addNoteCopies: (NSArray *) aNoteList timeShift: (double) shift;
00400 
00416 - addNotes: (NSArray *) aNoteList timeShift: (double) shift; 
00417 
00428 - shiftTime: (double) shift; 
00429 
00435 - scaleTime: (double) scale;
00436 
00443 - (unsigned) noteCount;
00444 
00451 - (BOOL) containsNote: (MKNote *) aNote; 
00452 
00457 - (BOOL) hasSoundingNotes;
00458 
00465 - (BOOL) isEmpty; 
00466 
00477 - (MKNote *) atTime: (double) timeTag; 
00478 
00487 - (MKNote *) atOrAfterTime: (double) timeTag;
00488 
00494 - (MKNote *) atOrBeforeTime: (double) timeTag;
00495 
00505 - (MKNote *) nth: (unsigned) n; 
00506 
00516 - (MKNote *) atOrAfterTime: (double) timeTag nth: (unsigned) n; 
00517 
00527 - (MKNote *) atTime: (double) timeTag nth: (unsigned) n;
00528 
00541 - (MKNote *) next: (MKNote *) aNote; 
00542 
00549 - (double) earliestNoteTime;
00550 
00558 - copyWithZone: (NSZone *) zone; 
00559 
00571 - copy;
00572 
00583 - (NSArray *) notes;
00584 
00593 - (NSMutableArray *) notesNoCopy;
00594 
00602 - (MKScore *) score; 
00603 
00610 - (MKNote *) infoNote; 
00611 
00660 - (void) setInfoNote: (MKNote *) aNote;
00661 
00666 - (NSString *) partName;
00667 
00674 - (void) setPartName: (NSString *) newPartName;
00675 
00683 - (BOOL) isNamed: (NSString *) partNameToFind;
00684 
00685 - (void) encodeWithCoder: (NSCoder *) aCoder;
00686 - (id) initWithCoder: (NSCoder *) aDecoder;
00687 
00688 - (NSString *) description;
00689 
00690 @end
00691 
00692 #endif