|
Canorus
0.7
|
00001 00008 #ifndef DIATONICPITCH_H_ 00009 #define DIATONICPITCH_H_ 00010 00011 #include "core/interval.h" 00012 #include <QString> 00013 00014 class CADiatonicPitch { 00015 public: 00016 enum CANoteName { 00017 Undefined = -1, 00018 C = 0, 00019 D = 1, 00020 E = 2, 00021 F = 3, 00022 G = 4, 00023 A = 5, 00024 B = 6 00025 }; 00026 00027 CADiatonicPitch(); 00028 CADiatonicPitch( const QString& pitch ); 00029 CADiatonicPitch( const int& noteName, const int& accs=0 ); 00030 00031 bool operator==(CADiatonicPitch); 00032 inline bool operator!=(CADiatonicPitch p) { return !operator==(p); } 00033 00034 bool operator==(int noteName); 00035 inline bool operator!=(int p) { return !operator==(p); } 00036 00037 CADiatonicPitch operator+(CAInterval); 00038 CADiatonicPitch operator-(CAInterval i) { 00039 return operator+( CAInterval( i.quality(), i.quantity()*(-1) ) ); 00040 } 00041 00042 inline const int noteName() { return _noteName; } 00043 inline const int accs() { return _accs; } 00044 00045 inline void setNoteName( const int noteName ) { _noteName = noteName; } 00046 inline void setAccs( const int accs ) { _accs = accs; } 00047 00048 static const QString diatonicPitchToString( CADiatonicPitch p ); 00049 static CADiatonicPitch diatonicPitchFromString( const QString s ); 00050 00051 private: 00052 int _noteName; // 0-sub-contra C, 1-D, 2-E etc. 00053 int _accs; // 0-neutral, 1-sharp, -1-flat etc. 00054 }; 00055 #endif /* DIATONICPITCH_H_ */
1.8.0