/* definitions for MIDI file parsing code */ extern int (*Mf_getc)(); extern void (*Mf_header)(); extern void (*Mf_trackstart)(); extern void (*Mf_trackend)(); extern void (*Mf_noteon)(); extern void (*Mf_noteoff)(); extern void (*Mf_pressure)(); extern void (*Mf_parameter)(); extern void (*Mf_pitchbend)(); extern void (*Mf_program)(); extern void (*Mf_chanpressure)(); extern void (*Mf_sysex)(); extern void (*Mf_metamisc)(); extern void (*Mf_seqspecific)(); extern void (*Mf_seqnum)(); extern void (*Mf_text)(); extern void (*Mf_eot)(); extern void (*Mf_timesig)(); extern void (*Mf_smpte)(); extern void (*Mf_tempo)(); extern void (*Mf_keysig)(); extern void (*Mf_arbitrary)(); extern void (*Mf_error)(); extern unsigned long Mf_currtime; extern unsigned long Mf_realtime; extern unsigned long Mf_currtempo; extern int Mf_division; extern int Mf_nomerge; #ifdef READ_MODS extern unsigned char *Mf_file_contents; extern int Mf_file_size; #endif /* definitions for MIDI file writing code */ extern int (*Mf_putc)(); extern int (*Mf_writetrack)(); extern int (*Mf_writetempotrack)(); extern void midifile(); extern unsigned long mf_sec2ticks(); extern void mfwrite(); extern int mf_write_meta_event(); extern int mf_write_midi_event(unsigned long delta_time, int type, int chan, char *data, unsigned long size); extern double mf_ticks2sec(unsigned long ticks,int division,unsigned long tempo); extern void mf_write_tempo(); extern void mf_write_seqnum(); extern void mfread(); extern void mferror(char *s); #ifndef NO_LC_DEFINES /* MIDI status commands most significant bit is 1 */ #define note_off 0x80 #define note_on 0x90 #define poly_aftertouch 0xa0 #define control_change 0xb0 #define program_chng 0xc0 #define channel_aftertouch 0xd0 #define pitch_wheel 0xe0 #define system_exclusive 0xf0 #define delay_packet (1111) /* 7 bit controllers */ #define damper_pedal 0x40 #define portamento 0x41 #define sostenuto 0x42 #define soft_pedal 0x43 #define general_4 0x44 #define hold_2 0x45 #define general_5 0x50 #define general_6 0x51 #define general_7 0x52 #define general_8 0x53 #ifndef PLAYMIDI #define tremolo_depth 0x5c #define ctrl_chorus_depth 0x5d #define detune 0x5e #define phaser_depth 0x5f #endif /* parameter values */ #define data_inc 0x60 #define data_dec 0x61 /* parameter selection */ #define non_reg_lsb 0x62 #define non_reg_msb 0x63 #define reg_lsb 0x64 #define reg_msb 0x65 /* Standard MIDI Files meta event definitions */ #define meta_event 0xFF #define sequence_number 0x00 #define text_event 0x01 #define copyright_notice 0x02 #define sequence_name 0x03 #define instrument_name 0x04 #define lyric 0x05 #define marker 0x06 #define cue_point 0x07 #define channel_prefix 0x20 #define end_of_track 0x2f #define set_tempo 0x51 #define smpte_offset 0x54 #define time_signature 0x58 #define key_signature 0x59 #define sequencer_specific 0x74 /* Manufacturer's ID number */ #define Seq_Circuits (0x01) /* Sequential Circuits Inc. */ #define Big_Briar (0x02) /* Big Briar Inc. */ #define Octave (0x03) /* Octave/Plateau */ #define Moog (0x04) /* Moog Music */ #define Passport (0x05) /* Passport Designs */ #define Lexicon (0x06) /* Lexicon */ #define Tempi (0x20) /* Bon Tempi */ #define Siel (0x21) /* S.I.E.L. */ #define Kawai (0x41) #define Roland (0x42) #define Korg (0x42) #define Yamaha (0x43) #endif /* miscellaneous definitions */ #define MThd 0x4d546864 #define MTrk 0x4d54726b #ifndef NO_LC_DEFINES #define lowerbyte(x) ((unsigned char)(x & 0xff)) #define upperbyte(x) ((unsigned char)((x & 0xff00)>>8)) #endif