1a94e675e3f2c47301f481610ff98db8e2741145
[ardour.git] / libs / midi++2 / midi++ / names.h
1 /* Names of standard MIDI events and controllers.
2  * Copyright (C) 2007-2008 David Robillard <http://drobilla.net>
3  *
4  * This library is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as
6  * published by the Free Software Foundation; either version 2.1 of
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  */
19
20 #ifndef __midinames_h__
21 #define __midinames_h__
22
23 #include <stdint.h>
24
25 #include "events.h"
26
27 /** \group midi
28  */
29
30 /** Pass this a symbol defined in events.h (e.g. MIDI_CTL_PAN) to get the
31  * short name of a MIDI event/controller according to General MIDI.
32  */
33 inline static const char* midi_name(uint8_t status)
34 {
35         switch (status) {
36         
37         case MIDI_CMD_NOTE_OFF:
38                 return "Note Off"; break;
39         case MIDI_CMD_NOTE_ON:
40                 return "Note On"; break;
41         case MIDI_CMD_NOTE_PRESSURE:
42                 return "Key Pressure"; break;
43         case MIDI_CMD_CONTROL:
44                 return "Control Change"; break;
45         case MIDI_CMD_PGM_CHANGE:
46                 return "Program Change"; break;
47         case MIDI_CMD_CHANNEL_PRESSURE:
48                 return "Channel Pressure"; break;
49         case MIDI_CMD_BENDER:
50                 return "Pitch Bender"; break;
51
52         case MIDI_CMD_COMMON_SYSEX:
53                 return "Sysex (System Exclusive) Begin"; break;
54         case MIDI_CMD_COMMON_MTC_QUARTER:
55                 return "MTC Quarter Frame"; break;
56         case MIDI_CMD_COMMON_SONG_POS:
57                 return "Song Position"; break;
58         case MIDI_CMD_COMMON_SONG_SELECT:
59                 return "Song Select"; break;
60         case MIDI_CMD_COMMON_TUNE_REQUEST:
61                 return "Tune Request"; break;
62         case MIDI_CMD_COMMON_SYSEX_END:
63                 return "End of Sysex"; break;
64         case MIDI_CMD_COMMON_CLOCK:
65                 return "Clock"; break;
66         case MIDI_CMD_COMMON_TICK:
67                 return "Tick"; break;
68         case MIDI_CMD_COMMON_START:
69                 return "Start"; break;
70         case MIDI_CMD_COMMON_CONTINUE:
71                 return "Continue"; break;
72         case MIDI_CMD_COMMON_STOP:
73                 return "Stop"; break;
74         case MIDI_CMD_COMMON_SENSING:
75                 return "Active Sensing"; break;
76         case MIDI_CMD_COMMON_RESET:
77                 return "Reset"; break;
78
79         case MIDI_CTL_MSB_BANK:
80                 return "Bank Select (Coarse)"; break;
81         case MIDI_CTL_MSB_MODWHEEL:
82                 return "Modulation (Coarse)"; break;
83         case MIDI_CTL_MSB_BREATH:
84                 return "Breath (Coarse)"; break;
85         case MIDI_CTL_MSB_FOOT:
86                 return "Foot (Coarse)"; break;
87         case MIDI_CTL_MSB_PORTAMENTO_TIME:
88                 return "Portamento Time (Coarse)"; break;
89         case MIDI_CTL_MSB_DATA_ENTRY:
90                 return "Data Entry (Coarse)"; break;
91         case MIDI_CTL_MSB_MAIN_VOLUME:
92                 return "Main Volume (Coarse)"; break;
93         case MIDI_CTL_MSB_BALANCE:
94                 return "Balance (Coarse)"; break;
95         case MIDI_CTL_MSB_PAN:
96                 return "Pan (Coarse)"; break;
97         case MIDI_CTL_MSB_EXPRESSION:
98                 return "Expression (Coarse)"; break;
99         case MIDI_CTL_MSB_EFFECT1:
100                 return "Effect 1 (Coarse)"; break;
101         case MIDI_CTL_MSB_EFFECT2:
102                 return "Effect 2 (Coarse)"; break;
103         case MIDI_CTL_MSB_GENERAL_PURPOSE1:
104                 return "General Purpose 1 (Coarse)"; break;
105         case MIDI_CTL_MSB_GENERAL_PURPOSE2:
106                 return "General Purpose 2 (Coarse)"; break;
107         case MIDI_CTL_MSB_GENERAL_PURPOSE3:
108                 return "General Purpose 3 (Coarse)"; break;
109         case MIDI_CTL_MSB_GENERAL_PURPOSE4:
110                 return "General Purpose 4 (Coarse)"; break;
111         case MIDI_CTL_LSB_BANK:
112                 return "Bank Select (Fine)"; break;
113         case MIDI_CTL_LSB_MODWHEEL:
114                 return "Modulation (Fine)"; break;
115         case MIDI_CTL_LSB_BREATH:
116                 return "Breath (Fine)"; break;
117         case MIDI_CTL_LSB_FOOT:
118                 return "Foot (Fine)"; break;
119         case MIDI_CTL_LSB_PORTAMENTO_TIME:
120                 return "Portamento Time (Fine)"; break;
121         case MIDI_CTL_LSB_DATA_ENTRY:
122                 return "Data Entry (Fine)"; break;
123         case MIDI_CTL_LSB_MAIN_VOLUME:
124                 return "Main Volume (Fine)"; break;
125         case MIDI_CTL_LSB_BALANCE:
126                 return "Balance (Fine)"; break;
127         case MIDI_CTL_LSB_PAN:
128                 return "Pan (Fine)"; break;
129         case MIDI_CTL_LSB_EXPRESSION:
130                 return "Expression (Fine)"; break;
131         case MIDI_CTL_LSB_EFFECT1:
132                 return "Effect 1 (Fine)"; break;
133         case MIDI_CTL_LSB_EFFECT2:
134                 return "Effect 2 (Fine)"; break;
135         case MIDI_CTL_LSB_GENERAL_PURPOSE1:
136                 return "General Purpose 1 (Fine)"; break;
137         case MIDI_CTL_LSB_GENERAL_PURPOSE2:
138                 return "General Purpose 2 (Fine)"; break;
139         case MIDI_CTL_LSB_GENERAL_PURPOSE3:
140                 return "General Purpose 3 (Fine)"; break;
141         case MIDI_CTL_LSB_GENERAL_PURPOSE4:
142                 return "General Purpose 4 (Fine)"; break;
143         case MIDI_CTL_SUSTAIN:
144                 return "Sustain Pedal"; break;
145         case MIDI_CTL_PORTAMENTO:
146                 return "Portamento"; break;
147         case MIDI_CTL_SOSTENUTO:
148                 return "Sostenuto"; break;
149         case MIDI_CTL_SOFT_PEDAL:
150                 return "Soft Pedal"; break;
151         case MIDI_CTL_LEGATO_FOOTSWITCH:
152                 return "Legato Foot Switch"; break;
153         case MIDI_CTL_HOLD2:
154                 return "Hold2"; break;
155         case MIDI_CTL_SC1_SOUND_VARIATION:
156                 return "Sound Variation"; break;
157         case MIDI_CTL_SC2_TIMBRE:
158                 return "Sound Timbre"; break;
159         case MIDI_CTL_SC3_RELEASE_TIME:
160                 return "Sound Release Time"; break;
161         case MIDI_CTL_SC4_ATTACK_TIME:
162                 return "Sound Attack Time"; break;
163         case MIDI_CTL_SC5_BRIGHTNESS:
164                 return "Sound Brightness"; break;
165         case MIDI_CTL_SC6:
166                 return "Sound Control 6"; break;
167         case MIDI_CTL_SC7:
168                 return "Sound Control 7"; break;
169         case MIDI_CTL_SC8:
170                 return "Sound Control 8"; break;
171         case MIDI_CTL_SC9:
172                 return "Sound Control 9"; break;
173         case MIDI_CTL_SC10:
174                 return "Sound Control 10"; break;
175         case MIDI_CTL_GENERAL_PURPOSE5:
176                 return "General Purpose 5"; break;
177         case MIDI_CTL_GENERAL_PURPOSE6:
178                 return "General Purpose 6"; break;
179         case MIDI_CTL_GENERAL_PURPOSE7:
180                 return "General Purpose 7"; break;
181         case MIDI_CTL_GENERAL_PURPOSE8:
182                 return "General Purpose 8"; break;
183         case MIDI_CTL_PORTAMENTO_CONTROL:
184                 return "Portamento Control"; break;
185         case MIDI_CTL_E1_REVERB_DEPTH:
186                 return "Reverb Depth"; break;
187         case MIDI_CTL_E2_TREMOLO_DEPTH:
188                 return "Tremolo Depth"; break;
189         case MIDI_CTL_E3_CHORUS_DEPTH:
190                 return "Chorus Depth"; break;
191         case MIDI_CTL_E4_DETUNE_DEPTH:
192                 return "Detune Depth"; break;
193         case MIDI_CTL_E5_PHASER_DEPTH:
194                 return "Phaser Depth"; break;
195         case MIDI_CTL_DATA_INCREMENT:
196                 return "Data Increment"; break;
197         case MIDI_CTL_DATA_DECREMENT:
198                 return "Data Decrement"; break;
199         case MIDI_CTL_NONREG_PARM_NUM_LSB:
200                 return "Non-registered Parameter Number"; break;
201         case MIDI_CTL_NONREG_PARM_NUM_MSB:
202                 return "Non-registered Narameter Number"; break;
203         case MIDI_CTL_REGIST_PARM_NUM_LSB:
204                 return "Registered Parameter Number"; break;
205         case MIDI_CTL_REGIST_PARM_NUM_MSB:
206                 return "Registered Parameter Number"; break;
207         case MIDI_CTL_ALL_SOUNDS_OFF:
208                 return "All Sounds Off"; break;
209         case MIDI_CTL_RESET_CONTROLLERS:
210                 return "Reset Controllers"; break;
211         case MIDI_CTL_LOCAL_CONTROL_SWITCH:
212                 return "Local Keyboard on/off"; break;
213         case MIDI_CTL_ALL_NOTES_OFF:
214                 return "All Notes Off"; break;
215         case MIDI_CTL_OMNI_OFF:
216                 return "Omni Off"; break;
217         case MIDI_CTL_OMNI_ON:
218                 return "Omni On"; break;
219         case MIDI_CTL_MONO:
220                 return "Monophonic Mode"; break;
221         case MIDI_CTL_POLY:
222                 return "Polyphonic Mode"; break;
223         default:
224                 break;
225         }
226
227         return "Unnamed";
228         
229 }
230
231 #endif /* __midinames_h__ */
232