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