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