typedef enum { /* types of bar sign */ SINGLE_BAR, DOUBLE_BAR, BAR_REP, REP_BAR, PLAY_ON_REP, REP1, REP2, /* BAR1 = SINGLE_BAR + REP1 */ /* REP_BAR2 = REP_BAR + REP2 */ BAR1, REP_BAR2, DOUBLE_REP, THICK_THIN, THIN_THICK, /* other things */ PART, TEMPO, TIME, KEY, REST, TUPLE, /* CHORD replaced by CHORDON and CHORDOFF */ NOTE, NONOTE, OLDTIE, TEXT, SLUR_ON, SLUR_OFF, TIE, TITLE, CHANNEL, TRANSPOSE, RTRANSPOSE, GRACEON, GRACEOFF, SETGRACE, SETC, GCHORD, GCHORDON, GCHORDOFF, VOICE, CHORDON, CHORDOFF, SLUR_TIE, TNOTE, /* broken rhythm */ LT, GT, DYNAMIC, LINENUM, MUSICLINE, MUSICSTOP, WORDLINE, WORDSTOP, INSTRUCTION, NOBEAM, CHORDNOTE, CLEF, PRINTLINE, NEWPAGE, LEFT_TEXT, CENTRE_TEXT, VSKIP } featuretype; /* note decorations */ #define DECSIZE 9 static char decorations[] = ".MLRH~Tuv"; #define STACCATO 0 #define TENUTO 1 #define LOUD 2 #define ROLL 3 #define FERMATA 4 #define ORNAMENT 5 #define TRILL 6 #define BOWUP 7 #define BOWDOWN 8 /* The vstring routines provide a simple way to handle */ /* arbitrary length strings */ struct vstring { int len; int limit; char* st; }; #ifdef ANSI extern initvstring(struct vstring* s); extern extendvstring(struct vstring* s); extern addch(char ch, struct vstring* s); extern addtext(char* text, struct vstring* s); extern clearvstring(struct vstring* s); extern freevstring(struct vstring* s); #else extern initvstring(); extern extendvstring(); extern addch(); extern addtext(); extern clearvstring(); extern freevstring(); #endif /* some definitions formerly in tomidi.c */ #define DIV 480 #define MAXPARTS 100 #define MAXCHORDNAMES 80