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