00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _Note_
00025 #define _Note_
00026
00027 #include "DynamicType.hxx"
00028 #include "DataTypes.hxx"
00029 #include "OSDefines.hxx"
00030 #include "Err.hxx"
00031 #include "ProcessingData.hxx"
00032
00033 #include "MediaTime.hxx"
00034 #include "PitchNote.hxx"
00035
00036 namespace CLAM {
00037
00042 class Note: public ProcessingData
00043 {
00044 public:
00045 DYNAMIC_TYPE_USING_INTERFACE (Note, 7, ProcessingData);
00046
00047 DYN_ATTRIBUTE (0, public, PitchNote, PitchNote);
00048
00049 DYN_ATTRIBUTE (1, public, TData, FundFreq);
00050
00051 DYN_ATTRIBUTE (2, public, TData, Energy);
00052 DYN_ATTRIBUTE (3, public, MediaTime, Time);
00053
00054 DYN_ATTRIBUTE (4, public, MediaTime, Attack);
00055 DYN_ATTRIBUTE (5, public, MediaTime, Sustain);
00056 DYN_ATTRIBUTE (6, public, MediaTime, Release);
00057
00060 int GetNoteNumber()
00061 {
00062 return Round(69+log(GetFundFreq()/440)*17.31234);
00063 }
00064 int GetVelocity()
00065 {
00066
00067 TData velocity=65*log10(GetEnergy())+65;
00068 if(velocity<25) velocity=25;
00069 return (int)velocity;
00070 }
00071 private:
00072 void DefaultInit();
00073 };
00074
00075 };
00076
00077
00078 #endif // _Note_
00079