Moppy/tools/midicomp-0.0.4/midicomp.h
2012-09-01 16:20:14 +02:00

253 lines
7.1 KiB
C

/*
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details. You should have received a copy of the GNU General Public License
along with this program; if not, write to the...
Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston,
MA 02111-1307 USA
*/
#define MThd 0x4d546864L
#define MTrk 0x4d54726bL
#define MTHD 256
#define MTRK 257
#define TRKEND 258
#define ON note_on
#define OFF note_off
#define POPR poly_aftertouch
#define PAR control_change
#define PB pitch_wheel
#define PRCH program_chng
#define CHPR channel_aftertouch
#define SYSEX system_exclusive
#define ARB 259
#define MINOR 260
#define MAJOR 261
#define CH 262
#define NOTE 263
#define VAL 264
#define CON 265
#define PROG 266
#define INT 267
#define STRING 268
#define STRESC 269
#define ERR 270
#define NOTEVAL 271
#define EOL 272
#define META 273
#define SEQSPEC (META+1+sequencer_specific)
#define TEXT (META+1+text_event)
#define COPYRIGHT (META+1+copyright_notice)
#define SEQNAME (META+1+sequence_name)
#define INSTRNAME (META+1+instrument_name)
#define LYRIC (META+1+lyric)
#define MARKER (META+1+marker)
#define CUE (META+1+cue_point)
#define SEQNR (META+1+sequence_number)
#define KEYSIG (META+1+key_signature)
#define TEMPO (META+1+set_tempo)
#define TIMESIG (META+1+time_signature)
#define SMPTE (META+1+smpte_offset)
#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)
#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
#define tremolo_depth 0x5c
#define chorus_depth 0x5d
#define detune 0x5e
#define phaser_depth 0x5f
#define data_inc 0x60
#define data_dec 0x61
#define non_reg_lsb 0x62
#define non_reg_msb 0x63
#define reg_lsb 0x64
#define reg_msb 0x65
#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 0x7f
#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)
#define lowerbyte(x) ((unsigned char)(x & 0xff))
#define upperbyte(x) ((unsigned char)((x & 0xff00)>>8))
#define NULLFUNC 0
#define MSGINCREMENT 128
#ifdef NO_YYLENG_VAR
#define yyleng yylength
#endif
static FILE *F;
static char *Msgbuff = NULL;
static int Msgsize = 0;
static int Msgindex = 0;
static int TrkNr;
static int TrksToDo = 1;
static int Measure, M0, Beat, Clicks;
static long T0;
static int fold = 0;
static int notes = 0;
static int times = 0;
static char *Onmsg = "On ch=%d n=%s v=%d\n";
static char *Offmsg = "Off ch=%d n=%s v=%d\n";
static char *PoPrmsg = "PoPr ch=%d n=%s v=%d\n";
static char *Parmsg = "Par ch=%d c=%d v=%d\n";
static char *Pbmsg = "Pb ch=%d v=%d\n";
static char *PrChmsg = "PrCh ch=%d p=%d\n";
static char *ChPrmsg = "ChPr ch=%d v=%d\n";
static jmp_buf erjump;
static int err_cont = 0;
static int TrkNr;
static int Format, Ntrks;
static int Measure, M0, Beat, Clicks;
static long T0;
static char* buffer = 0;
static int buflen,bufsiz= 0;
extern long yyval;
extern int yyleng;
extern int lineno;
extern char *yytext;
extern int do_hex;
extern int eol_seen;
extern FILE *yyin;
static int mywritetrack();
static void checkchan();
static void checknote();
static void checkval();
static void splitval();
static void get16val();
static void checkcon();
static void checkprog();
static void checkeol();
static void gethex();
int (*Mf_getc)() = NULLFUNC;
int (*Mf_error)() = NULLFUNC;
int (*Mf_header)() = NULLFUNC;
int (*Mf_starttrack)() = NULLFUNC;
int (*Mf_endtrack)() = NULLFUNC;
int (*Mf_on)() = NULLFUNC;
int (*Mf_off)() = NULLFUNC;
int (*Mf_pressure)() = NULLFUNC;
int (*Mf_parameter)() = NULLFUNC;
int (*Mf_pitchbend)() = NULLFUNC;
int (*Mf_program)() = NULLFUNC;
int (*Mf_chanpressure)() = NULLFUNC;
int (*Mf_sysex)() = NULLFUNC;
int (*Mf_arbitrary)() = NULLFUNC;
int (*Mf_metamisc)() = NULLFUNC;
int (*Mf_seqnum)() = NULLFUNC;
int (*Mf_eot)() = NULLFUNC;
int (*Mf_smpte)() = NULLFUNC;
int (*Mf_tempo)() = NULLFUNC;
int (*Mf_timesig)() = NULLFUNC;
int (*Mf_keysig)() = NULLFUNC;
int (*Mf_sqspecific)() = NULLFUNC;
int (*Mf_text)() = NULLFUNC;
static readtrack();
static badbyte();
static metaevent();
static sysex();
static chanmessage();
static msginit();
static msgleng();
static msgadd();
static biggermsg();
float mf_ticks2sec();
unsigned long mf_sec2ticks(float,int,unsigned int);
void mfwrite();
int (*Mf_putc)() = NULLFUNC;
int (*Mf_wtrack)() = NULLFUNC;
int (*Mf_wtempotrack)() = NULLFUNC;
int Mf_nomerge = 0;
long Mf_currtime = 0L;
static long Mf_toberead = 0L;
static long Mf_numbyteswritten = 0L;
static long readvarinum();
static long read32bit();
static long to32bit();
static int read16bit();
static int to16bit();
static char *msg();
static void readheader();
static int verbose_flag;
static int dbg=0;
char data[5];
int chan;
int Mf_RunStat = 0;
static int laststat;
static int lastmeta;
int verbose = 0;
int filegetc();
int fileputc();
void WriteVarLen();
int eputc(unsigned char);