XX CMake Package
Loading...
Searching...
No Matches
XXNote.h
Go to the documentation of this file.
1#ifndef XXNoteH
2#define XXNoteH
3
4#include "XXMusicExportDef.h"
5#include <QObject>
6
7#include <QList>
8
9namespace XX
10{
13
15 {
16 Q_GADGET
17
18 public:
19 using List = QList<Note>;
20 using Octave = uchar;
21
22 enum Value : uchar //
23 {
24 C = 0,
37 };
38 Q_ENUM(Value)
39
40 static const QString sharpSymbol;
41 static const QString flatSymbol;
42
43 static const Note zeroNote; // an invalid note
44 static const List availableNotes; // includes zero note
45 static const uchar maxNoteIndex; // size of availableNotes
46
47 public:
49
50 public:
51 bool operator==(const Note& other) const;
52 bool operator!=(const Note& other) const;
53 bool operator<(const Note& other) const;
54
55 public:
56 static const Note& fromVoltage(float voltage);
57 static const Note& fromMidi(uchar midi);
58 static const Note& fromFrequency(float frequency);
59 static const Note& fromValue(Value value);
60
61 Note up() const;
62 Note down() const;
63 bool isWhiteKey() const;
64 bool isBlackKey() const;
65 bool isValid() const; // note is not zero note
66 const QString& getName() const;
67 const Value& getValue() const;
68 const Octave& getOctave() const;
69 const float& getFrequency() const;
70 const float& getVoltage() const;
71 const uchar& getMidiValue() const;
72
73 private:
74 QString name;
75 Value value;
76 Octave octave;
77 float frequency;
78 float voltage;
79 uchar midiValue;
80
81 private:
82 Note(QString name, Value value, Octave octave, float frequency, float voltage, uchar midiValue);
83 };
84} // namespace XX
85
86#endif // XXNoteH
#define XXMUSIC_DECLSPEC
Definition XXMusicExportDef.h:11
const float & getVoltage() const
static const List availableNotes
Definition XXNote.h:44
static const Note zeroNote
Definition XXNote.h:43
Note down() const
static const Note & fromFrequency(float frequency)
static const Note & fromValue(Value value)
bool isValid() const
QList< Note > List
Definition XXNote.h:19
static const QString sharpSymbol
Definition XXNote.h:40
const QString & getName() const
bool isBlackKey() const
static const Note & fromVoltage(float voltage)
const float & getFrequency() const
const uchar & getMidiValue() const
static const QString flatSymbol
Definition XXNote.h:41
Value
Definition XXNote.h:23
@ Ds
Definition XXNote.h:27
@ B
Definition XXNote.h:35
@ C
Definition XXNote.h:24
@ Invalid
Definition XXNote.h:36
@ E
Definition XXNote.h:28
@ As
Definition XXNote.h:34
@ F
Definition XXNote.h:29
@ Gs
Definition XXNote.h:32
@ G
Definition XXNote.h:31
@ D
Definition XXNote.h:26
@ A
Definition XXNote.h:33
@ Cs
Definition XXNote.h:25
@ Fs
Definition XXNote.h:30
uchar Octave
Definition XXNote.h:20
static const Note & fromMidi(uchar midi)
static const uchar maxNoteIndex
Definition XXNote.h:45
bool isWhiteKey() const
const Value & getValue() const
Note up() const
const Octave & getOctave() const
Definition XXPopulatedAbstract.h:11