Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
/home/iurt/rpm/BUILD/canorus-0.7.R1002/src/core/diatonicpitch.h
Go to the documentation of this file.
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_ */