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