sequencer
percussion_key.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cstdint>
4 #include <string_view>
5 
6 namespace sequencer::midi
7 {
8 // clang-format off
9 #define PERCUSSION_KEYS \
10  X(AcousticBassDrum , 35) \
11  X(BassDrum_1 , 36) \
12  X(RimShot , 37) \
13  X(AcousticSnare , 38) \
14  X(HandClap , 39) \
15  X(ElectricSnare , 40) \
16  X(LowTom_A , 41) \
17  X(ClosedHiHat , 42) \
18  X(LowTom_B , 43) \
19  X(PedalHiHat , 44) \
20  X(MidTom_A , 45) \
21  X(OpenHiHat , 46) \
22  X(MidTom_B , 47) \
23  X(HighTom_A , 48) \
24  X(CrashCymbal_1 , 49) \
25  X(HighTom_B , 50) \
26  X(RideCymbal_1 , 51) \
27  X(ChineseCymbal , 52) \
28  X(RideBell , 53) \
29  X(Tambourine , 54) \
30  X(SplashCymbal , 55) \
31  X(Cowbell , 56) \
32  X(CrashCymbal_2 , 57) \
33  X(Vibraslap , 58) \
34  X(RideCymbal , 59) \
35  X(HiBongo , 60) \
36  X(LowBongo , 61) \
37  X(MuteHiConga , 62) \
38  X(OpenHiConga , 63) \
39  X(LowConga , 64) \
40  X(HighTimbale , 65) \
41  X(LowTimbale , 66) \
42  X(HighAgogo , 67) \
43  X(LowAgogo , 68) \
44  X(Cabasa , 69) \
45  X(Maracas , 70) \
46  X(ShortWhistle , 71) \
47  X(LongWhistle , 72) \
48  X(ShortGuiro , 73) \
49  X(LongGuiro , 74) \
50  X(Claves , 75) \
51  X(HiWoodBlock , 76) \
52  X(LowWoodBlock , 77) \
53  X(MuteCuica , 78) \
54  X(OpenCuica , 79) \
55  X(MuteTriangle , 80) \
56  X(OpenTriangle , 81)
57  // clang-format on
58 
59 #define X( name, key ) name = key,
60  enum class percussion_key : std::uint8_t
61  {
63  };
64 #undef X
65 
66 #define X( name, key ) \
67  case percussion_key::name: \
68  return #name;
69  std::string_view to_string( percussion_key key )
70  {
71  switch ( key )
72  {
74  }
75 
76  return "";
77  }
78 #undef X
79 } // namespace sequencer::midi
Definition: clock.hpp:13
std::string_view to_string(percussion_key key)
Definition: percussion_key.hpp:69
percussion_key
Definition: percussion_key.hpp:60