xref: /haiku/headers/os/midi/MidiDefs.h (revision 7120e97489acbf17d86d3f33e3b2e68974fd4b23)
1 
2 #ifndef _MIDI_DEFS_H
3 #define _MIDI_DEFS_H
4 
5 #include <OS.h>
6 #include <Errors.h>
7 
8 //------------------------------------------------------------------------------
9 
10 /* System time converted to int milliseconds */
11 
12 #define B_NOW  ((uint32)(system_time()/1000))
13 
14 //------------------------------------------------------------------------------
15 
16 /* Synthesizer things */
17 
18 #define B_SYNTH_DIRECTORY    B_BEOS_ETC_DIRECTORY
19 #define B_BIG_SYNTH_FILE     "synth/big_synth.sy"
20 #define B_LITTLE_SYNTH_FILE  "synth/little_synth.sy"
21 
22 typedef enum synth_mode
23 {
24 	B_NO_SYNTH,
25 	B_BIG_SYNTH,
26 	B_LITTLE_SYNTH,
27 	B_DEFAULT_SYNTH,
28 	B_SAMPLES_ONLY
29 }
30 synth_mode;
31 
32 //------------------------------------------------------------------------------
33 
34 /* Need to move these into Errors.h */
35 
36 enum
37 {
38 	B_BAD_INSTRUMENT = B_MIDI_ERROR_BASE + 0x100,
39 	B_BAD_MIDI_DATA,
40 	B_ALREADY_PAUSED,
41 	B_ALREADY_RESUMED,
42 	B_NO_SONG_PLAYING,
43 	B_TOO_MANY_SONGS_PLAYING
44 };
45 
46 //------------------------------------------------------------------------------
47 
48 #ifndef uchar
49 typedef unsigned char uchar;
50 #endif
51 
52 #ifndef _MIDI_CONSTANTS_
53 #define _MIDI_CONSTANTS_
54 
55 /* Channel Message Masks*/
56 const uchar B_NOTE_OFF          = 0x80;
57 const uchar B_NOTE_ON           = 0x90;
58 const uchar B_KEY_PRESSURE      = 0xa0;
59 const uchar B_CONTROL_CHANGE    = 0xb0;
60 const uchar B_PROGRAM_CHANGE    = 0xc0;
61 const uchar B_CHANNEL_PRESSURE  = 0xd0;
62 const uchar B_PITCH_BEND        = 0xe0;
63 
64 /* System Messages*/
65 const uchar B_SYS_EX_START		= 0xf0;
66 const uchar B_MIDI_TIME_CODE	= 0xf1;
67 const uchar B_SONG_POSITION		= 0xf2;
68 const uchar B_SONG_SELECT		= 0xf3;
69 const uchar B_CABLE_MESSAGE		= 0xf5;
70 const uchar B_TUNE_REQUEST		= 0xf6;
71 const uchar B_SYS_EX_END		= 0xf7;
72 const uchar B_TIMING_CLOCK		= 0xf8;
73 const uchar B_START				= 0xfa;
74 const uchar B_CONTINUE			= 0xfb;
75 const uchar B_STOP				= 0xfc;
76 const uchar B_ACTIVE_SENSING	= 0xfe;
77 const uchar B_SYSTEM_RESET		= 0xff;
78 
79 /* Controller Numbers*/
80 const uchar B_MODULATION            = 0x01;
81 const uchar B_BREATH_CONTROLLER     = 0x02;
82 const uchar B_FOOT_CONTROLLER       = 0x04;
83 const uchar B_PORTAMENTO_TIME       = 0x05;
84 const uchar B_DATA_ENTRY            = 0x06;
85 const uchar B_MAIN_VOLUME           = 0x07;
86 const uchar B_MIDI_BALANCE          = 0x08;  /* used to be B_BALANCE */
87 const uchar B_PAN                   = 0x0a;
88 const uchar B_EXPRESSION_CTRL       = 0x0b;
89 const uchar B_GENERAL_CTRL_1        = 0x10;
90 const uchar B_GENERAL_CTRL_2        = 0x11;
91 const uchar B_GENERAL_CTRL_3        = 0x12;
92 const uchar B_GENERAL_CTRL_4        = 0x13;
93 const uchar B_SUSTAIN_PEDAL         = 0x40;
94 const uchar B_PORTAMENTO            = 0x41;
95 const uchar B_SOSTENUTO             = 0x42;
96 const uchar B_SOFT_PEDAL            = 0x43;
97 const uchar B_HOLD_2                = 0x45;
98 const uchar B_GENERAL_CTRL_5        = 0x50;
99 const uchar B_GENERAL_CTRL_6        = 0x51;
100 const uchar B_GENERAL_CTRL_7        = 0x52;
101 const uchar B_GENERAL_CTRL_8        = 0x53;
102 const uchar B_EFFECTS_DEPTH         = 0x5b;
103 const uchar B_TREMOLO_DEPTH         = 0x5c;
104 const uchar B_CHORUS_DEPTH          = 0x5d;
105 const uchar B_CELESTE_DEPTH         = 0x5e;
106 const uchar B_PHASER_DEPTH          = 0x5f;
107 const uchar B_DATA_INCREMENT        = 0x60;
108 const uchar B_DATA_DECREMENT        = 0x61;
109 const uchar B_RESET_ALL_CONTROLLERS = 0x79;
110 const uchar B_LOCAL_CONTROL         = 0x7a;
111 const uchar B_ALL_NOTES_OFF         = 0x7b;
112 const uchar B_OMNI_MODE_OFF         = 0x7c;
113 const uchar B_OMNI_MODE_ON          = 0x7d;
114 const uchar B_MONO_MODE_ON          = 0x7e;
115 const uchar B_POLY_MODE_ON          = 0x7f;
116 
117 const uchar B_TEMPO_CHANGE          = 0x51;
118 
119 #endif // _MIDI_CONSTANTS_
120 
121 //------------------------------------------------------------------------------
122 
123 typedef enum midi_axe
124 {
125 	/* Pianos */
126 	B_ACOUSTIC_GRAND=0,
127 	B_BRIGHT_GRAND,
128 	B_ELECTRIC_GRAND,
129 	B_HONKY_TONK,
130 	B_ELECTRIC_PIANO_1,
131 	B_ELECTRIC_PIANO_2,
132 	B_HARPSICHORD,
133 	B_CLAVICHORD,
134 
135 	/* Tuned Idiophones */
136 	B_CELESTA,
137 	B_GLOCKENSPIEL,
138 	B_MUSIC_BOX,
139 	B_VIBRAPHONE,
140 	B_MARIMBA,
141 	B_XYLOPHONE,
142 	B_TUBULAR_BELLS,
143 	B_DULCIMER,
144 
145 	/* Organs */
146 	B_DRAWBAR_ORGAN,
147 	B_PERCUSSIVE_ORGAN,
148 	B_ROCK_ORGAN,
149 	B_CHURCH_ORGAN,
150 	B_REED_ORGAN,
151 	B_ACCORDION,
152 	B_HARMONICA,
153 	B_TANGO_ACCORDION,
154 
155 	/* Guitars */
156 	B_ACOUSTIC_GUITAR_NYLON,
157 	B_ACOUSTIC_GUITAR_STEEL,
158 	B_ELECTRIC_GUITAR_JAZZ,
159 	B_ELECTRIC_GUITAR_CLEAN,
160 	B_ELECTRIC_GUITAR_MUTED,
161 	B_OVERDRIVEN_GUITAR,
162 	B_DISTORTION_GUITAR,
163 	B_GUITAR_HARMONICS,
164 
165 	/* Basses */
166 	B_ACOUSTIC_BASS,
167 	B_ELECTRIC_BASS_FINGER,
168 	B_ELECTRIC_BASS_PICK,
169 	B_FRETLESS_BASS,
170 	B_SLAP_BASS_1,
171 	B_SLAP_BASS_2,
172 	B_SYNTH_BASS_1,
173 	B_SYNTH_BASS_2,
174 
175 	/* Strings */
176 	B_VIOLIN,
177 	B_VIOLA,
178 	B_CELLO,
179 	B_CONTRABASS,
180 	B_TREMOLO_STRINGS,
181 	B_PIZZICATO_STRINGS,
182 	B_ORCHESTRAL_STRINGS,
183 	B_TIMPANI,
184 
185 	/* Ensemble strings and voices */
186 	B_STRING_ENSEMBLE_1,
187 	B_STRING_ENSEMBLE_2,
188 	B_SYNTH_STRINGS_1,
189 	B_SYNTH_STRINGS_2,
190 	B_VOICE_AAH,
191 	B_VOICE_OOH,
192 	B_SYNTH_VOICE,
193 	B_ORCHESTRA_HIT,
194 
195 	/* Brass */
196 	B_TRUMPET,
197 	B_TROMBONE,
198 	B_TUBA,
199 	B_MUTED_TRUMPET,
200 	B_FRENCH_HORN,
201 	B_BRASS_SECTION,
202 	B_SYNTH_BRASS_1,
203 	B_SYNTH_BRASS_2,
204 
205 	/* Reeds */
206 	B_SOPRANO_SAX,
207 	B_ALTO_SAX,
208 	B_TENOR_SAX,
209 	B_BARITONE_SAX,
210 	B_OBOE,
211 	B_ENGLISH_HORN,
212 	B_BASSOON,
213 	B_CLARINET,
214 
215 	/* Pipes */
216 	B_PICCOLO,
217 	B_FLUTE,
218 	B_RECORDER,
219 	B_PAN_FLUTE,
220 	B_BLOWN_BOTTLE,
221 	B_SHAKUHACHI,
222 	B_WHISTLE,
223 	B_OCARINA,
224 
225 	/* Synth Leads*/
226 	B_LEAD_1,
227 	B_SQUARE_WAVE = B_LEAD_1,
228 	B_LEAD_2,
229 	B_SAWTOOTH_WAVE = B_LEAD_2,
230 	B_LEAD_3,
231 	B_CALLIOPE = B_LEAD_3,
232 	B_LEAD_4,
233 	B_CHIFF = B_LEAD_4,
234 	B_LEAD_5,
235 	B_CHARANG = B_LEAD_5,
236 	B_LEAD_6,
237 	B_VOICE = B_LEAD_6,
238 	B_LEAD_7,
239 	B_FIFTHS = B_LEAD_7,
240 	B_LEAD_8,
241 	B_BASS_LEAD = B_LEAD_8,
242 
243 	/* Synth Pads */
244 	B_PAD_1,
245 	B_NEW_AGE = B_PAD_1,
246 	B_PAD_2,
247 	B_WARM = B_PAD_2,
248 	B_PAD_3,
249 	B_POLYSYNTH = B_PAD_3,
250 	B_PAD_4,
251 	B_CHOIR = B_PAD_4,
252 	B_PAD_5,
253 	B_BOWED = B_PAD_5,
254 	B_PAD_6,
255 	B_METALLIC = B_PAD_6,
256 	B_PAD_7,
257 	B_HALO = B_PAD_7,
258 	B_PAD_8,
259 	B_SWEEP = B_PAD_8,
260 
261 	/* Effects */
262 	B_FX_1,
263 	B_FX_2,
264 	B_FX_3,
265 	B_FX_4,
266 	B_FX_5,
267 	B_FX_6,
268 	B_FX_7,
269 	B_FX_8,
270 
271 	/* Ethnic */
272 	B_SITAR,
273 	B_BANJO,
274 	B_SHAMISEN,
275 	B_KOTO,
276 	B_KALIMBA,
277 	B_BAGPIPE,
278 	B_FIDDLE,
279 	B_SHANAI,
280 
281 	/* Percussion */
282 	B_TINKLE_BELL,
283 	B_AGOGO,
284 	B_STEEL_DRUMS,
285 	B_WOODBLOCK,
286 	B_TAIKO_DRUMS,
287 	B_MELODIC_TOM,
288 	B_SYNTH_DRUM,
289 	B_REVERSE_CYMBAL,
290 
291 	/* Sound Effects */
292 	B_FRET_NOISE,
293 	B_BREATH_NOISE,
294 	B_SEASHORE,
295 	B_BIRD_TWEET,
296 	B_TELEPHONE,
297 	B_HELICOPTER,
298 	B_APPLAUSE,
299 	B_GUNSHOT
300 }
301 midi_axe;
302 
303 #endif // _MIDI_DEFS_H
304 
305