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
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 @class MKPart;
00107 @class MKPerformer;
00108
00373 #ifndef __MK_Note_H___
00374 #define __MK_Note_H___
00375
00376 #import <Foundation/Foundation.h>
00377 #import <Foundation/NSObject.h>
00378 #import "MKConductor.h"
00379 #import "params.h"
00380
00381 #define BITS_PER_INT 32
00382 #define MK_MKPARBITVECTS ((((int)MK_appPars-1)/ BITS_PER_INT)+1)
00383
00391 typedef enum _MKNoteType {
00393 MK_noteDur = 257,
00395 MK_noteOn,
00397 MK_noteOff,
00399 MK_noteUpdate,
00401 MK_mute
00402 } MKNoteType;
00403
00407 typedef enum _MKDataType {
00409 MK_noType = ((int)MK_sysReset + 1),
00411 MK_double,
00413 MK_string,
00415 MK_int,
00417 MK_object,
00419 MK_envelope,
00421 MK_waveTable
00422 } MKDataType;
00423
00424 @interface MKNote: NSObject
00425 {
00427 MKNoteType noteType;
00429 int noteTag;
00431 MKPerformer *performer;
00433 MKPart *part;
00435 double timeTag;
00437 MKConductor *conductor;
00438
00439 @private
00440 NSHashTable *_parameters;
00441 unsigned _mkPars;
00442 unsigned *_appPars;
00443 unsigned short _highAppPar;
00444
00445
00446
00447 int _orderTag;
00448 }
00449
00458 - initWithTimeTag:(double) aTimeTag;
00459
00474 - init;
00475
00484 - (void) dealloc;
00485
00494 - copyWithZone: (NSZone *) zone;
00495
00527 - split: (id *) aNoteOn : (id *) aNoteOff;
00528
00538 - (MKPerformer *) performer;
00539
00548 - (MKPart *) part;
00549
00564 - (MKConductor *) conductor;
00565
00578 - (void) setConductor: (MKConductor *) newConductor;
00579
00590 - (MKPart *) addToPart: (MKPart *) aPart;
00591
00601 - (double) timeTag;
00602
00616 - (double) setTimeTag: (double) newTimeTag;
00617
00633 - (double) setTimeTagPreserveEndTime: (double) newTimeTag;
00634
00640 - (MKPart *) removeFromPart;
00641
00667 -(int) compare: (MKNote *) aNote;
00668
00669
00670
00671
00672
00673
00688 - (MKNoteType) noteType;
00689
00711 - setNoteType: (MKNoteType) newNoteType;
00712
00726 - (double) setDur: (double) value;
00727
00743 - (double) dur;
00744
00749 - (double) setEndTime: (double) newEndTime;
00750
00754 - (double) endTime;
00755
00761 - (int) noteTag;
00762
00783 - setNoteTag: (int) newTag;
00784
00791 - removeNoteTag;
00792
00803 + (int) parTagForName: (NSString *) aName;
00804
00815 + (NSString *) parNameForTag: (int) aTag;
00816
00829 - setPar: (int) parameterTag toDouble: (double) aDouble;
00830
00842 - setPar: (int) parameterTag toInt: (int) anInteger;
00843
00855 - setPar: (int) parameterTag toString: (NSString *) aString;
00856
00868 - setPar: (int) parameterTag toEnvelope: (id) anEnvelope;
00869
00881 - setPar: (int) parameterTag toWaveTable: (id) aWaveTable;
00882
00917 - setPar: (int) parameterTag toObject: (id) anObject;
00918
00931 - (double) parAsDouble: (int) parameterTag;
00932
00941 - (int) parAsInt: (int) parameterTag;
00942
00951 - (NSString *) parAsString: (int) parameterTag;
00952
00965 - (NSString *) parAsStringNoCopy: (int) parameterTag;
00966
00975 - parAsEnvelope: (int) parameterTag;
00976
00984 - parAsWaveTable: (int) parameterTag;
00985
00996 - parAsObject: (int) parameterTag;
00997
01006 - (BOOL) isParPresent: (int) parameterTag;
01007
01051 - (MKDataType) parType: (int) parameterTag;
01052
01063 - removePar: (int) parameterTag;
01064
01073 - copyParsFrom: (MKNote *) aNote;
01074
01096 - (double) freq;
01097
01116 - (int) keyNum;
01117
01127 - writeScorefileStream: (NSMutableData *) aStream;
01128
01129
01130
01131
01132
01133
01134 - (void) encodeWithCoder: (NSCoder *) aCoder;
01135
01136
01137
01138
01139
01140
01141
01142 - (id) initWithCoder: (NSCoder *) aDecoder;
01143
01152 - (int) parVectorCount;
01153
01173 - (unsigned) parVector: (unsigned) index;
01174
01175
01176
01177
01178
01179
01180
01181
01182
01183
01184
01185
01186
01187
01188
01189
01190
01191 - (NSString *) description;
01192
01197 + note;
01198
01207 + noteWithTimeTag: (double) aTimeTag;
01208
01209 @end
01210
01229 extern unsigned MKNoteTag(void);
01230
01247 extern unsigned MKNoteTags(unsigned n);
01248
01268 extern double MKdB(double dB);
01269
01311 extern double MKMidiToAmp(int midiValue);
01312
01342 extern double MKMidiToAmpWithSensitivity(int midiValue, double sensitivity);
01343
01375 extern int MKAmpToMidi(double amp);
01376
01405 extern double MKMidiToAmpAttenuation(int midiValue);
01406
01450 extern double MKMidiToAmpAttenuationWithSensitivity(int midiValue, double sensitivity);
01451
01497 extern int MKAmpAttenuationToMidi(double amp);
01498
01517 extern int MKHighestPar(void);
01518
01578 extern NSHashEnumerator *MKInitParameterIteration(MKNote *aNote);
01579
01604 extern int MKNextParameter(MKNote *aNote, NSHashEnumerator *iterationState);
01605
01611
01682 extern id MKSetNoteParToDouble(MKNote *aNote, int par, double value);
01683
01710 extern id MKSetNoteParToInt(MKNote *aNote, int par, int value);
01711
01738 extern id MKSetNoteParToString(MKNote *aNote, int par, NSString *value);
01739
01766 extern id MKSetNoteParToEnvelope(MKNote *aNote, int par, id envObj);
01767
01794 extern id MKSetNoteParToWaveTable(MKNote *aNote, int par, id waveObj);
01795
01822 extern id MKSetNoteParToObject(MKNote *aNote, int par, id anObj);
01823
01890 extern double MKGetNoteParAsDouble(MKNote *aNote, int par);
01891
01918 extern int MKGetNoteParAsInt(MKNote *aNote, int par);
01919
01946 extern NSString *MKGetNoteParAsString(MKNote *aNote, int par);
01947
01973 extern NSString *MKGetNoteParAsStringNoCopy(MKNote *aNote, int par);
01974
02001 extern id MKGetNoteParAsEnvelope(MKNote *aNote, int par);
02002
02029 extern id MKGetNoteParAsWaveTable(MKNote *aNote, int par);
02030
02057 extern id MKGetNoteParAsObject(MKNote *aNote, int par);
02058
02089 extern BOOL MKIsNoteParPresent(MKNote *aNote, int par);
02090
02091 #endif