1#[repr(u8)]
4#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
5#[allow(missing_docs)]
6#[derive(Default)]
7pub enum GeneralMidi {
8 #[default]
9 AcousticGrandPiano = 1,
10 BrightAcousticPiano = 2,
11 ElectricGrandPiano = 3,
12 HonkyTonkPiano = 4,
13 ElectricPiano1 = 5,
14 ElectricPiano2 = 6,
15 Harpsichord = 7,
16 Clavi = 8,
17 Celesta = 9,
18 Glockenspiel = 10,
19 MusicBox = 11,
20 Vibraphone = 12,
21 Marimba = 13,
22 Xylophone = 14,
23 TubularBells = 15,
24 Dulcimer = 16,
25 DrawbarOrgan = 17,
26 PercussiveOrgan = 18,
27 RockOrgan = 19,
28 ChurchOrgan = 20,
29 ReedOrgan = 21,
30 Accordion = 22,
31 Harmonica = 23,
32 TangoAccordion = 24,
33 AcousticGuitarNylon = 25,
34 AcousticGuitarSteel = 26,
35 ElectricGuitarJazz = 27,
36 ElectricGuitarClean = 28,
37 ElectricGuitarMuted = 29,
38 OverdrivenGuitar = 30,
39 DistortionGuitar = 31,
40 GuitarHarmonics = 32,
41 AcousticBass = 33,
42 ElectricBassFinger = 34,
43 ElectricBassPick = 35,
44 FretlessBass = 36,
45 SlapBass1 = 37,
46 SlapBass2 = 38,
47 SynthBass1 = 39,
48 SynthBass2 = 40,
49 Violin = 41,
50 Viola = 42,
51 Cello = 43,
52 Contrabass = 44,
53 TremoloStrings = 45,
54 PizzicatoStrings = 46,
55 OrchestralHarp = 47,
56 Timpani = 48,
57 StringEnsemble1 = 49,
58 StringEnsemble2 = 50,
59 SynthStrings1 = 51,
60 SynthStrings2 = 52,
61 ChoirAahs = 53,
62 VoiceOohs = 54,
63 SynthVoice = 55,
64 OrchestraHit = 56,
65 Trumpet = 57,
66 Trombone = 58,
67 Tuba = 59,
68 MutedTrumpet = 60,
69 FrenchHorn = 61,
70 BrassSection = 62,
71 SynthBrass1 = 63,
72 SynthBrass2 = 64,
73 SopranoSax = 65,
74 AltoSax = 66,
75 TenorSax = 67,
76 BaritoneSax = 68,
77 Oboe = 69,
78 EnglishHorn = 70,
79 Bassoon = 71,
80 Clarinet = 72,
81 Piccolo = 73,
82 Flute = 74,
83 Recorder = 75,
84 PanFlute = 76,
85 BlownBottle = 77,
86 Shakuhachi = 78,
87 Whistle = 79,
88 Ocarina = 80,
89 Lead1Square = 81,
90 Lead2Sawtooth = 82,
91 Lead3Calliope = 83,
92 Lead4Chiff = 84,
93 Lead5Charang = 85,
94 Lead6Voice = 86,
95 Lead7Fifths = 87,
96 Lead8BassPlusLead = 88,
97 Pad1Newage = 89,
98 Pad2Warm = 90,
99 Pad3Polysynth = 91,
100 Pad4Choir = 92,
101 Pad5Bowed = 93,
102 Pad6Metallic = 94,
103 Pad7Halo = 95,
104 Pad8Sweep = 96,
105 Fx1Rain = 97,
106 Fx2Soundtrack = 98,
107 Fx3Crystal = 99,
108 Fx4Atmosphere = 100,
109 Fx5Brightness = 101,
110 Fx6Goblins = 102,
111 Fx7Echoes = 103,
112 Fx8SciFi = 104,
113 Sitar = 105,
114 Banjo = 106,
115 Shamisen = 107,
116 Koto = 108,
117 Kalimba = 109,
118 Bagpipe = 110,
119 Fiddle = 111,
120 Shanai = 112,
121 TinkleBell = 113,
122 Agogo = 114,
123 SteelDrums = 115,
124 Woodblock = 116,
125 TaikoDrum = 117,
126 MelodicTom = 118,
127 SynthDrum = 119,
128 ReverseCymbal = 120,
129 GuitarFretNoise = 121,
130 BreathNoise = 122,
131 Seashore = 123,
132 BirdTweet = 124,
133 TelephoneRing = 125,
134 Helicopter = 126,
135 Applause = 127,
136 Gunshot = 128,
137}
138
139impl From<u8> for GeneralMidi {
140 fn from(value: u8) -> Self {
141 match value {
142 x if GeneralMidi::AcousticGrandPiano as u8 == x => GeneralMidi::AcousticGrandPiano,
143 x if GeneralMidi::BrightAcousticPiano as u8 == x => GeneralMidi::BrightAcousticPiano,
144 x if GeneralMidi::ElectricGrandPiano as u8 == x => GeneralMidi::ElectricGrandPiano,
145 x if GeneralMidi::HonkyTonkPiano as u8 == x => GeneralMidi::HonkyTonkPiano,
146 x if GeneralMidi::ElectricPiano1 as u8 == x => GeneralMidi::ElectricPiano1,
147 x if GeneralMidi::ElectricPiano2 as u8 == x => GeneralMidi::ElectricPiano2,
148 x if GeneralMidi::Harpsichord as u8 == x => GeneralMidi::Harpsichord,
149 x if GeneralMidi::Clavi as u8 == x => GeneralMidi::Clavi,
150 x if GeneralMidi::Celesta as u8 == x => GeneralMidi::Celesta,
151 x if GeneralMidi::Glockenspiel as u8 == x => GeneralMidi::Glockenspiel,
152 x if GeneralMidi::MusicBox as u8 == x => GeneralMidi::MusicBox,
153 x if GeneralMidi::Vibraphone as u8 == x => GeneralMidi::Vibraphone,
154 x if GeneralMidi::Marimba as u8 == x => GeneralMidi::Marimba,
155 x if GeneralMidi::Xylophone as u8 == x => GeneralMidi::Xylophone,
156 x if GeneralMidi::TubularBells as u8 == x => GeneralMidi::TubularBells,
157 x if GeneralMidi::Dulcimer as u8 == x => GeneralMidi::Dulcimer,
158 x if GeneralMidi::DrawbarOrgan as u8 == x => GeneralMidi::DrawbarOrgan,
159 x if GeneralMidi::PercussiveOrgan as u8 == x => GeneralMidi::PercussiveOrgan,
160 x if GeneralMidi::RockOrgan as u8 == x => GeneralMidi::RockOrgan,
161 x if GeneralMidi::ChurchOrgan as u8 == x => GeneralMidi::ChurchOrgan,
162 x if GeneralMidi::ReedOrgan as u8 == x => GeneralMidi::ReedOrgan,
163 x if GeneralMidi::Accordion as u8 == x => GeneralMidi::Accordion,
164 x if GeneralMidi::Harmonica as u8 == x => GeneralMidi::Harmonica,
165 x if GeneralMidi::TangoAccordion as u8 == x => GeneralMidi::TangoAccordion,
166 x if GeneralMidi::AcousticGuitarNylon as u8 == x => GeneralMidi::AcousticGuitarNylon,
167 x if GeneralMidi::AcousticGuitarSteel as u8 == x => GeneralMidi::AcousticGuitarSteel,
168 x if GeneralMidi::ElectricGuitarJazz as u8 == x => GeneralMidi::ElectricGuitarJazz,
169 x if GeneralMidi::ElectricGuitarClean as u8 == x => GeneralMidi::ElectricGuitarClean,
170 x if GeneralMidi::ElectricGuitarMuted as u8 == x => GeneralMidi::ElectricGuitarMuted,
171 x if GeneralMidi::OverdrivenGuitar as u8 == x => GeneralMidi::OverdrivenGuitar,
172 x if GeneralMidi::DistortionGuitar as u8 == x => GeneralMidi::DistortionGuitar,
173 x if GeneralMidi::GuitarHarmonics as u8 == x => GeneralMidi::GuitarHarmonics,
174 x if GeneralMidi::AcousticBass as u8 == x => GeneralMidi::AcousticBass,
175 x if GeneralMidi::ElectricBassFinger as u8 == x => GeneralMidi::ElectricBassFinger,
176 x if GeneralMidi::ElectricBassPick as u8 == x => GeneralMidi::ElectricBassPick,
177 x if GeneralMidi::FretlessBass as u8 == x => GeneralMidi::FretlessBass,
178 x if GeneralMidi::SlapBass1 as u8 == x => GeneralMidi::SlapBass1,
179 x if GeneralMidi::SlapBass2 as u8 == x => GeneralMidi::SlapBass2,
180 x if GeneralMidi::SynthBass1 as u8 == x => GeneralMidi::SynthBass1,
181 x if GeneralMidi::SynthBass2 as u8 == x => GeneralMidi::SynthBass2,
182 x if GeneralMidi::Violin as u8 == x => GeneralMidi::Violin,
183 x if GeneralMidi::Viola as u8 == x => GeneralMidi::Viola,
184 x if GeneralMidi::Cello as u8 == x => GeneralMidi::Cello,
185 x if GeneralMidi::Contrabass as u8 == x => GeneralMidi::Contrabass,
186 x if GeneralMidi::TremoloStrings as u8 == x => GeneralMidi::TremoloStrings,
187 x if GeneralMidi::PizzicatoStrings as u8 == x => GeneralMidi::PizzicatoStrings,
188 x if GeneralMidi::OrchestralHarp as u8 == x => GeneralMidi::OrchestralHarp,
189 x if GeneralMidi::Timpani as u8 == x => GeneralMidi::Timpani,
190 x if GeneralMidi::StringEnsemble1 as u8 == x => GeneralMidi::StringEnsemble1,
191 x if GeneralMidi::StringEnsemble2 as u8 == x => GeneralMidi::StringEnsemble2,
192 x if GeneralMidi::SynthStrings1 as u8 == x => GeneralMidi::SynthStrings1,
193 x if GeneralMidi::SynthStrings2 as u8 == x => GeneralMidi::SynthStrings2,
194 x if GeneralMidi::ChoirAahs as u8 == x => GeneralMidi::ChoirAahs,
195 x if GeneralMidi::VoiceOohs as u8 == x => GeneralMidi::VoiceOohs,
196 x if GeneralMidi::SynthVoice as u8 == x => GeneralMidi::SynthVoice,
197 x if GeneralMidi::OrchestraHit as u8 == x => GeneralMidi::OrchestraHit,
198 x if GeneralMidi::Trumpet as u8 == x => GeneralMidi::Trumpet,
199 x if GeneralMidi::Trombone as u8 == x => GeneralMidi::Trombone,
200 x if GeneralMidi::Tuba as u8 == x => GeneralMidi::Tuba,
201 x if GeneralMidi::MutedTrumpet as u8 == x => GeneralMidi::MutedTrumpet,
202 x if GeneralMidi::FrenchHorn as u8 == x => GeneralMidi::FrenchHorn,
203 x if GeneralMidi::BrassSection as u8 == x => GeneralMidi::BrassSection,
204 x if GeneralMidi::SynthBrass1 as u8 == x => GeneralMidi::SynthBrass1,
205 x if GeneralMidi::SynthBrass2 as u8 == x => GeneralMidi::SynthBrass2,
206 x if GeneralMidi::SopranoSax as u8 == x => GeneralMidi::SopranoSax,
207 x if GeneralMidi::AltoSax as u8 == x => GeneralMidi::AltoSax,
208 x if GeneralMidi::TenorSax as u8 == x => GeneralMidi::TenorSax,
209 x if GeneralMidi::BaritoneSax as u8 == x => GeneralMidi::BaritoneSax,
210 x if GeneralMidi::Oboe as u8 == x => GeneralMidi::Oboe,
211 x if GeneralMidi::EnglishHorn as u8 == x => GeneralMidi::EnglishHorn,
212 x if GeneralMidi::Bassoon as u8 == x => GeneralMidi::Bassoon,
213 x if GeneralMidi::Clarinet as u8 == x => GeneralMidi::Clarinet,
214 x if GeneralMidi::Piccolo as u8 == x => GeneralMidi::Piccolo,
215 x if GeneralMidi::Flute as u8 == x => GeneralMidi::Flute,
216 x if GeneralMidi::Recorder as u8 == x => GeneralMidi::Recorder,
217 x if GeneralMidi::PanFlute as u8 == x => GeneralMidi::PanFlute,
218 x if GeneralMidi::BlownBottle as u8 == x => GeneralMidi::BlownBottle,
219 x if GeneralMidi::Shakuhachi as u8 == x => GeneralMidi::Shakuhachi,
220 x if GeneralMidi::Whistle as u8 == x => GeneralMidi::Whistle,
221 x if GeneralMidi::Ocarina as u8 == x => GeneralMidi::Ocarina,
222 x if GeneralMidi::Lead1Square as u8 == x => GeneralMidi::Lead1Square,
223 x if GeneralMidi::Lead2Sawtooth as u8 == x => GeneralMidi::Lead2Sawtooth,
224 x if GeneralMidi::Lead3Calliope as u8 == x => GeneralMidi::Lead3Calliope,
225 x if GeneralMidi::Lead4Chiff as u8 == x => GeneralMidi::Lead4Chiff,
226 x if GeneralMidi::Lead5Charang as u8 == x => GeneralMidi::Lead5Charang,
227 x if GeneralMidi::Lead6Voice as u8 == x => GeneralMidi::Lead6Voice,
228 x if GeneralMidi::Lead7Fifths as u8 == x => GeneralMidi::Lead7Fifths,
229 x if GeneralMidi::Lead8BassPlusLead as u8 == x => GeneralMidi::Lead8BassPlusLead,
230 x if GeneralMidi::Pad1Newage as u8 == x => GeneralMidi::Pad1Newage,
231 x if GeneralMidi::Pad2Warm as u8 == x => GeneralMidi::Pad2Warm,
232 x if GeneralMidi::Pad3Polysynth as u8 == x => GeneralMidi::Pad3Polysynth,
233 x if GeneralMidi::Pad4Choir as u8 == x => GeneralMidi::Pad4Choir,
234 x if GeneralMidi::Pad5Bowed as u8 == x => GeneralMidi::Pad5Bowed,
235 x if GeneralMidi::Pad6Metallic as u8 == x => GeneralMidi::Pad6Metallic,
236 x if GeneralMidi::Pad7Halo as u8 == x => GeneralMidi::Pad7Halo,
237 x if GeneralMidi::Pad8Sweep as u8 == x => GeneralMidi::Pad8Sweep,
238 x if GeneralMidi::Fx1Rain as u8 == x => GeneralMidi::Fx1Rain,
239 x if GeneralMidi::Fx2Soundtrack as u8 == x => GeneralMidi::Fx2Soundtrack,
240 x if GeneralMidi::Fx3Crystal as u8 == x => GeneralMidi::Fx3Crystal,
241 x if GeneralMidi::Fx4Atmosphere as u8 == x => GeneralMidi::Fx4Atmosphere,
242 x if GeneralMidi::Fx5Brightness as u8 == x => GeneralMidi::Fx5Brightness,
243 x if GeneralMidi::Fx6Goblins as u8 == x => GeneralMidi::Fx6Goblins,
244 x if GeneralMidi::Fx7Echoes as u8 == x => GeneralMidi::Fx7Echoes,
245 x if GeneralMidi::Fx8SciFi as u8 == x => GeneralMidi::Fx8SciFi,
246 x if GeneralMidi::Sitar as u8 == x => GeneralMidi::Sitar,
247 x if GeneralMidi::Banjo as u8 == x => GeneralMidi::Banjo,
248 x if GeneralMidi::Shamisen as u8 == x => GeneralMidi::Shamisen,
249 x if GeneralMidi::Koto as u8 == x => GeneralMidi::Koto,
250 x if GeneralMidi::Kalimba as u8 == x => GeneralMidi::Kalimba,
251 x if GeneralMidi::Bagpipe as u8 == x => GeneralMidi::Bagpipe,
252 x if GeneralMidi::Fiddle as u8 == x => GeneralMidi::Fiddle,
253 x if GeneralMidi::Shanai as u8 == x => GeneralMidi::Shanai,
254 x if GeneralMidi::TinkleBell as u8 == x => GeneralMidi::TinkleBell,
255 x if GeneralMidi::Agogo as u8 == x => GeneralMidi::Agogo,
256 x if GeneralMidi::SteelDrums as u8 == x => GeneralMidi::SteelDrums,
257 x if GeneralMidi::Woodblock as u8 == x => GeneralMidi::Woodblock,
258 x if GeneralMidi::TaikoDrum as u8 == x => GeneralMidi::TaikoDrum,
259 x if GeneralMidi::MelodicTom as u8 == x => GeneralMidi::MelodicTom,
260 x if GeneralMidi::SynthDrum as u8 == x => GeneralMidi::SynthDrum,
261 x if GeneralMidi::ReverseCymbal as u8 == x => GeneralMidi::ReverseCymbal,
262 x if GeneralMidi::GuitarFretNoise as u8 == x => GeneralMidi::GuitarFretNoise,
263 x if GeneralMidi::BreathNoise as u8 == x => GeneralMidi::BreathNoise,
264 x if GeneralMidi::Seashore as u8 == x => GeneralMidi::Seashore,
265 x if GeneralMidi::BirdTweet as u8 == x => GeneralMidi::BirdTweet,
266 x if GeneralMidi::TelephoneRing as u8 == x => GeneralMidi::TelephoneRing,
267 x if GeneralMidi::Helicopter as u8 == x => GeneralMidi::Helicopter,
268 x if GeneralMidi::Applause as u8 == x => GeneralMidi::Applause,
269 x if GeneralMidi::Gunshot as u8 == x => GeneralMidi::Gunshot,
270 _ => GeneralMidi::default(),
271 }
272 }
273}
274
275impl From<GeneralMidi> for u8 {
276 fn from(gm: GeneralMidi) -> Self {
277 gm as u8
278 }
279}