Control Surface pin-t-adl
MIDI Control Surface library for Arduino
Notes.hpp
Go to the documentation of this file.
1/* ✔ */
2
3#pragma once
4
5#include <Settings/NamespaceSettings.hpp>
6#include <stdint.h>
7
9
12
14namespace MIDI_Notes {
15
16class Note {
17 private:
18 int8_t base;
19 constexpr Note(int8_t base) : base(base) {}
20
21 public:
22 constexpr int8_t operator()(int8_t octave = -1) const {
23 return base + 12 * (octave + 1);
24 }
25
26 constexpr static Note C() { return Note{0}; }
27 constexpr static Note Db() { return Note{1}; }
28 constexpr static Note D() { return Note{2}; }
29 constexpr static Note Eb() { return Note{3}; }
30 constexpr static Note E() { return Note{4}; }
31 constexpr static Note F_() { return Note{5}; }
32 constexpr static Note Gb() { return Note{6}; }
33 constexpr static Note G() { return Note{7}; }
34 constexpr static Note Ab() { return Note{8}; }
35 constexpr static Note A() { return Note{9}; }
36 constexpr static Note Bb() { return Note{10}; }
37 constexpr static Note B() { return Note{11}; }
38};
39
40constexpr Note C = Note::C();
41constexpr Note Db = Note::Db();
42constexpr Note D = Note::D();
43constexpr Note Eb = Note::Eb();
44constexpr Note E = Note::E();
45constexpr Note F_ = Note::F_();
46constexpr Note Gb = Note::Gb();
47constexpr Note G = Note::G();
48constexpr Note Ab = Note::Ab();
49constexpr Note A = Note::A();
50constexpr Note Bb = Note::Bb();
51constexpr Note B = Note::B();
52
54[[deprecated("Instead of `note(C, 4)`, use `MIDI_Notes::C(4)`")]] //
55constexpr int8_t
56note(Note note, int8_t numOctave) {
57 return note(numOctave);
58}
59
60} // namespace MIDI_Notes
61
63
#define END_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
static constexpr Note A()
Definition: Notes.hpp:35
int8_t base
Definition: Notes.hpp:18
static constexpr Note Bb()
Definition: Notes.hpp:36
static constexpr Note E()
Definition: Notes.hpp:30
static constexpr Note D()
Definition: Notes.hpp:28
static constexpr Note Db()
Definition: Notes.hpp:27
constexpr Note(int8_t base)
Definition: Notes.hpp:19
static constexpr Note C()
Definition: Notes.hpp:26
static constexpr Note Eb()
Definition: Notes.hpp:29
static constexpr Note F_()
Definition: Notes.hpp:31
constexpr int8_t operator()(int8_t octave=-1) const
Definition: Notes.hpp:22
static constexpr Note G()
Definition: Notes.hpp:33
static constexpr Note Gb()
Definition: Notes.hpp:32
static constexpr Note B()
Definition: Notes.hpp:37
static constexpr Note Ab()
Definition: Notes.hpp:34
MIDI note names.
Definition: Notes.hpp:14
constexpr Note F_
F (Fa)
Definition: Notes.hpp:45
constexpr int8_t note(Note note, int8_t numOctave)
Get the MIDI note in the given octave.
Definition: Notes.hpp:56
constexpr Note Bb
A♯, B♭ (La sharp, Si flat)
Definition: Notes.hpp:50
constexpr Note Db
C♯, D♭ (Do sharp, Re flat)
Definition: Notes.hpp:41
constexpr Note Gb
F♯, G♭ (Fa sharp, Sol flat)
Definition: Notes.hpp:46
constexpr Note G
G (Sol)
Definition: Notes.hpp:47
constexpr Note Eb
D♯, E♭ (Re sharp, Mi flat)
Definition: Notes.hpp:43
constexpr Note Ab
G♯, A♭ (Sol sharp, La flat)
Definition: Notes.hpp:48
constexpr Note E
E (Mi)
Definition: Notes.hpp:44
constexpr Note B
B (Si)
Definition: Notes.hpp:51
constexpr Note A
A (La)
Definition: Notes.hpp:49
constexpr Note C
C (Do)
Definition: Notes.hpp:40
constexpr Note D
D (Re)
Definition: Notes.hpp:42