/******************************/ /* */ /* midi.h */ /* */ /* Definition der Midi-Events */ /* */ /******************************/ /***************************/ /* Channel Voice Messages. */ /***************************/ #define MIDI_NOTE_OFF (0x80) #define MIDI_NOTE_ON (0x90) #define MIDI_POLY_AFTERTOUCH (0xA0) #define MIDI_CTRL_CHANGE (0xB0) #define MIDI_PROG_CHANGE (0xC0) #define MIDI_CHNL_AFTERTOUCH (0xD0) #define MIDI_PITCH_BEND (0xE0) /********************/ /* System Messages. */ /********************/ #define MIDI_SYSTEM_MSG (0xF0) #define MIDI_SYSTEM_EXCLUSIVE (0xF0) #define MIDI_SONG_POSITION_PTR (0xF2) #define MIDI_SONG_SELECT (0xF3) #define MIDI_TUNE_REQUEST (0xF6) #define MIDI_EOX (0xF7) #define MIDI_FILE_META_EVENT (0xFF) /******************************/ /* System Real-Time Messages. */ /******************************/ #define MIDI_TIMING_CLOCK (0xF8) #define MIDI_START (0xFA) #define MIDI_CONTINUE (0xFB) #define MIDI_STOP (0xFC) #define MIDI_ACTIVE_SENSING (0xFE) #define MIDI_SYSTEM_RESET (0xFF) /*******************************/ /* MIDI file format constants. */ /*******************************/ #define MIDI_FILE_HEADER "MThd" #define MIDI_TRACK_HEADER "MTrk" /**************************/ /* MIDI file Meta-Events. */ /**************************/ #define MIDI_SEQUENCE_NUMBER (0x00) #define MIDI_TEXT_EVENT (0x01) #define MIDI_CHANNEL_PREFIX (0x20) #define MIDI_END_OF_TRACK (0x2F) #define MIDI_SET_TEMPO (0x51) #define MIDI_SMPTE_OFFSET (0x54) #define MIDI_TIME_SIGNATURE (0x58) #define MIDI_KEY_SIGNATURE (0x59) #define MIDI_SEQUENCER_SPECIFIC (0x7F) /******************************/ /* Specific Text Meta-Events. */ /******************************/ #define MIDI_COPYRIGHT_NOTICE (0x02) #define MIDI_TRACK_NAME (0x03) #define MIDI_INSTRUMENT_NAME (0x04) #define MIDI_LYRIC (0x05) #define MIDI_TEXT_MARKER (0x06) #define MIDI_CUE_POINT (0x07) #define MAJOR 0 #define MINOR 1 typedef struct header_struct { char MThd[5]; unsigned int chunk_length; short int format, tracks, per_quarter; } Header; typedef struct track_str { char MTrk[5]; int chunk_length; } Track_Header;