Canorus  0.0
diatonicpitch.h
Go to the documentation of this file.
1 
8 #ifndef DIATONICPITCH_H_
9 #define DIATONICPITCH_H_
10 
11 #include "score/interval.h"
12 #include <QString>
13 
14 class CADiatonicKey;
15 
17 public:
18  enum CANoteName {
19  Undefined = -1,
20  C = 0,
21  D = 1,
22  E = 2,
23  F = 3,
24  G = 4,
25  A = 5,
26  B = 6
27  };
28 
32  PreferFlats = -1
33  };
34 
36  CADiatonicPitch( const QString& pitch );
37  CADiatonicPitch( const int& noteName, const int& accs=0 );
38 
40  inline bool operator!=(CADiatonicPitch p) { return !operator==(p); }
41 
42  bool operator==(int noteName);
43  inline bool operator!=(int p) { return !operator==(p); }
44 
47  return operator+( CAInterval( i.quality(), i.quantity()*(-1) ) );
48  }
49 
50  inline const int noteName() const { return _noteName; }
51  inline const int accs() const { return _accs; }
52 
53  inline void setNoteName( const int noteName ) { _noteName = noteName; }
54  inline void setAccs( const int accs ) { _accs = accs; }
55  inline int midiPitch() { return CADiatonicPitch::diatonicPitchToMidiPitch(*this); }
56 
57  static const QString diatonicPitchToString( CADiatonicPitch p );
58  static CADiatonicPitch diatonicPitchFromString( const QString s );
59 
62  static int diatonicPitchToMidiPitch( const CADiatonicPitch& dp );
63 
64 private:
65  int _noteName; // 0-sub-contra C, 1-D, 2-E etc.
66  int _accs; // 0-neutral, 1-sharp, -1-flat etc.
67 };
68 #endif /* DIATONICPITCH_H_ */
CADiatonicPitch::operator==
bool operator==(CADiatonicPitch)
Definition: diatonicpitch.cpp:59
CAInterval::quality
const int quality()
Definition: interval.h:63
CAInterval::Prime
@ Prime
Definition: interval.h:27
CADiatonicPitch::operator-
CADiatonicPitch operator-(CAInterval i)
Definition: diatonicpitch.h:46
CADiatonicPitch::diatonicPitchFromMidiPitch
static CADiatonicPitch diatonicPitchFromMidiPitch(int midiPitch, CAMidiPitchMode m=PreferAuto)
Definition: diatonicpitch.cpp:192
CADiatonicPitch::CADiatonicPitch
CADiatonicPitch()
Definition: diatonicpitch.cpp:29
CAInterval::semitones
int semitones()
Definition: interval.cpp:177
CADiatonicPitch::diatonicPitchFromMidiPitchKey
static CADiatonicPitch diatonicPitchFromMidiPitchKey(int midiPitch, CADiatonicKey k, CAMidiPitchMode m=PreferAuto)
Definition: diatonicpitch.cpp:206
CADiatonicPitch::CAMidiPitchMode
CAMidiPitchMode
Definition: diatonicpitch.h:29
CADiatonicKey::containsPitch
bool containsPitch(const CADiatonicPitch &p)
Definition: diatonickey.cpp:237
CADiatonicPitch::setAccs
void setAccs(const int accs)
Definition: diatonicpitch.h:54
CAInterval::Fourth
@ Fourth
Definition: interval.h:30
CADiatonicPitch::diatonicPitchToString
static const QString diatonicPitchToString(CADiatonicPitch p)
Definition: diatonicpitch.cpp:76
CAInterval::Diminished
@ Diminished
Definition: interval.h:22
CADiatonicPitch::_noteName
int _noteName
Definition: diatonicpitch.h:65
CADiatonicPitch::midiPitch
int midiPitch()
Definition: diatonicpitch.h:55
CAInterval::Seventh
@ Seventh
Definition: interval.h:33
CAInterval::setQuantity
void setQuantity(const int qnt)
Definition: interval.h:67
CADiatonicPitch::operator!=
bool operator!=(int p)
Definition: diatonicpitch.h:43
diatonicpitch.h
CADiatonicPitch::F
@ F
Definition: diatonicpitch.h:23
CADiatonicPitch::B
@ B
Definition: diatonicpitch.h:26
interval.h
CADiatonicKey
Musical key.
Definition: diatonickey.h:15
CAInterval
Music interval expressed with diatonical quality and quantity.
Definition: interval.h:15
CAInterval::Major
@ Major
Definition: interval.h:18
CADiatonicPitch::PreferSharps
@ PreferSharps
Definition: diatonicpitch.h:31
CADiatonicPitch::diatonicPitchToMidiPitch
static int diatonicPitchToMidiPitch(const CADiatonicPitch &dp)
Definition: diatonicpitch.cpp:306
CADiatonicPitch::setNoteName
void setNoteName(const int noteName)
Definition: diatonicpitch.h:53
CADiatonicPitch::operator!=
bool operator!=(CADiatonicPitch p)
Definition: diatonicpitch.h:40
CADiatonicPitch::noteName
const int noteName() const
Definition: diatonicpitch.h:50
CADiatonicPitch
Musical note pitch.
Definition: diatonicpitch.h:16
CADiatonicPitch::PreferFlats
@ PreferFlats
Definition: diatonicpitch.h:32
CAInterval::Fifth
@ Fifth
Definition: interval.h:31
CADiatonicKey::Minor
@ Minor
Definition: diatonickey.h:19
CADiatonicPitch::PreferAuto
@ PreferAuto
Definition: diatonicpitch.h:30
diatonickey.h
CADiatonicKey::gender
const CAGender gender()
Definition: diatonickey.h:43
CADiatonicPitch::accs
const int accs() const
Definition: diatonicpitch.h:51
CADiatonicKey::diatonicPitch
CADiatonicPitch diatonicPitch()
Definition: diatonickey.h:42
CADiatonicPitch::G
@ G
Definition: diatonicpitch.h:24
CAInterval::quantity
const int quantity()
Definition: interval.h:64
CAInterval::Sixth
@ Sixth
Definition: interval.h:32
CADiatonicPitch::CANoteName
CANoteName
Definition: diatonicpitch.h:18
CAInterval::Second
@ Second
Definition: interval.h:28
CADiatonicPitch::_accs
int _accs
Definition: diatonicpitch.h:66
CADiatonicPitch::operator+
CADiatonicPitch operator+(CAInterval)
Definition: diatonicpitch.cpp:99
CADiatonicPitch::D
@ D
Definition: diatonicpitch.h:21
CADiatonicPitch::diatonicPitchFromString
static CADiatonicPitch diatonicPitchFromString(const QString s)
Definition: diatonicpitch.cpp:183
CAInterval::Third
@ Third
Definition: interval.h:29
CADiatonicPitch::Undefined
@ Undefined
Definition: diatonicpitch.h:19
CADiatonicPitch::E
@ E
Definition: diatonicpitch.h:22
CADiatonicPitch::C
@ C
Definition: diatonicpitch.h:20
CADiatonicPitch::A
@ A
Definition: diatonicpitch.h:25