/* * GLIB - a Generic LIBrarian and editor for synths */ #include #include "machdep.h" #define EOX 0xf7 #define MOUSE -2 #ifndef BUFSIZ #define BUFSIZ 512 #endif /* If a machine needs to do something special to read/write a binary file, */ /* this is a hook that a machdep.h can override to do what it needs to. */ /* For example, see the Atari ST version of machdep.h */ #ifndef OPENBINFILE #define OPENBINFILE(f,file,mode) f=fopen(file,mode) #endif /* Seconds before we give up trying to read something */ #define TIMEOUT 5 #define NUMONSCREEN 12 /* position of first voice row */ #define FIRSTROW 10 #define LEFTSIDE 2 #define RIGHTSIDE 54 #define YANKROW 12 #define YANKCOL 31 #define LIBBANKS 3 #define NOREDRAW 0 #define REDRAW 1 #define CH_REDRAW '\014' #define CH_INC 'K' #define CH_INC2 'I' #define CH_INC3 '>' #define CH_DEC 'J' #define CH_DEC2 'M' #define CH_DEC3 '<' #define CH_LEFT 'h' #define CH_DOWN 'j' #define CH_UP 'k' #define CH_RIGHT 'l' #define SCR_DOWN '\04' #define SCR_UP '\025' #define STR_LEFT "h" #define STR_DOWN "j" #define STR_UP "k" #define STR_RIGHT "l" #define VOICEBYTE(d,v,n) (*((d)+(v)*Voicesize+(n))) struct paraminfo { char *p_name; char *p_label; INT16 p_lrow; /* position for printing name */ INT16 p_lcol; INT16 p_vrow; /* position for printing value */ INT16 p_vcol; char *((*p_tovis)()); INT16 p_min; INT16 p_max; INT16 p_val; INT16 p_flags; }; struct labelinfo { INT16 l_row; INT16 l_col; char *l_text; }; struct editinfo { char *ed_name; /* Synth name */ struct paraminfo *ed_params; /* list of parameters */ struct labelinfo *ed_labels; /* screen labels in edit mode */ INT16 ed_nvoices; /* number of voices */ INT16 ed_vsize; /* size of each voice data, in bytes */ INT16 ed_nsize; /* name size */ int (*ed_din)(); /* copy voice data into paraminfo array */ int (*ed_dout)(); /* copy voice data out of paraminfo array */ int (*ed_sedit)(); /* send 1 voice to synth edit buffer */ int (*ed_sone)(); /* send 1 voice to a synth (permanent) patch*/ int (*ed_sbulk)(); /* send bulk voice data */ int (*ed_gbulk)(); /* get bulk voice data */ char *(*ed_nof)(); /* get name of a voice out of data */ int (*ed_snof)(); /* set name of a voice in data */ char *(*ed_numof)(); /* convert voice number to on-screen text */ int (*ed_cvtnum)(); /* convert visable voice number to std. format */ int (*ed_cvtanum)(); /* convert alphanumeric voice number to std. format */ }; struct peredinfo { char *ed_libdata; /* memory for library banks */ char *ed_syndata; /* memory for synth bank */ char *ed_yankdata; /* memory for yank buffer */ INT16 ed_libindex; /* voice number of topmost displayed lib voice*/ INT16 ed_synindex; /* ditto for synth side */ INT16 ed_channel; /* MIDI channel # */ INT16 ed_erow; INT16 ed_ecol; }; extern struct paraminfo *P; extern struct labelinfo *L; extern struct editinfo E[]; extern int Rows, Cols, Channel, Nvoices, Voicesize, Redraw; extern char *Reason, *Synthname; char *bankvoice(); char *malloc(), *alloc(), *nextls(); long milliclock();