allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (05/15/89)
Posting-number: Volume 6, Issue 103 Submitted-by: lee@uhccux.uhcc.Hawaii.Edu (Greg Lee ) Archive-name: glib/part02 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 15)." # Contents: CHANGES DX-README ctomenu.l cz.h d10tva.mnu d10tvf.mnu # d10wfg.mnu k1single.mnu pc-mach.h st-mach.c # Wrapped by lee@uhccux on Sun May 7 00:40:09 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'CHANGES' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'CHANGES'\" else echo shar: Extracting \"'CHANGES'\" \(4379 characters\) sed "s/^X//" >'CHANGES' <<'END_OF_FILE' X X3/15/89 Makefile changed K5 to KAWAIK5 (fix from Jessica Koeppel) X list.c changed K5 to KAWAIK5; restored cvtanum() value X to editinfo arrays X glib.h restored cvtanum() to editinfo declaration X glib.c restored cvtanum() use (for Kawai K1 and K5 now); X restored some other things from Thompson's more X recent version X k1multi.mnu now number of single patch is always shown, even X when the name is shown X glib.1 added paragraph about display of single names X when editing multi patches for the K1 X---------------------------- Xabove changes posted as patch1. X---------------------------- X3/16/89 glib.c mistake in last patch lost code in gotoparm() X required for arrow key use -- put it back; X remove "Voices" from screen title of synth bank X glib.1 documented `N' command for entering voice name. X glib.h, X unix-mach.c revised ctl() macro and calls as suggested by X Mac Michaels for sake of Turbo C X amigmach.c Alan Bland's comp.sources.amiga distribution X increases a buffer size -- made that change here X---------------------------- Xabove changes posted as patch2. X---------------------------- X3/20/89 glib.man now corresponds with glib.1 X patchlevel.h new, to keep track of patchlevel X CHANGES new, this file X MANIFEST includes above, and this changes file X3/30/89 k1multi.mnu changed data from row order to column order X k1vis.c in vismute() changed sense of 'mute' and 'on' X---------------------------- Xabove changes posted as patch3. X---------------------------- Xchanges of 4/19/89 by Scott Snyder: X4/19/89 glib.c enhance showstr(); pass the 'eras' parameter X to the vis routine in showparam(); speed up X paramat() and parmindex(); added special X processing in readall() for DX7 and DX7s X banks. X list.c added DX7 and DX7s. X pc-mach.h added definitions for graphics chars. X pc-tcc.mak revised along the lines of the unix makefile. X menutoc.l expanded the number of acceptable %'s and #'s; X changed the type of the temp vars it generates X from 'unsigned char' to 'unsigned'; allowed X specification of input and output files as X parameters in order to work with TMAKE. X fixed bug with zero offsets. X menutoc.c see menutoc.l X patchlevel.h keep track of revisions. X4/22/89 Makefile updated for dx7; change to prevent deleting X menutoc.c automatically by make X MANIFEST reflects new dx7 files X dx7.mnu joined 2 quotes split across lines not accepted X by pcc; had to comment out #pragma dir. in 2 places X dx7s.mnu added #define of SEEK_CUR X list.c termination of editinfo was missing a 0 X glib.1,glib.man,README X minor changes X---------------------------- Xabove changes made in patch4 (3 parts) X---------------------------- X4/23/89 glib.c,glib.h,unix-mach.c X new U and D commands for unix: upload and download X file instead of synth X glib.1,glib.man document above X k1multi.mnu disabled k1sedit proc (don't know how to do this) X k1multi.mnu,k1single.mnu X should not include machdep.h X yama_com.c,tx81p.mnu X gbulk: read and discard 0xf0 when download from file; X sbulk: returns 0 X patchlevel.h now level 5 X---------------------------- Xabove changes posted as patch5 X---------------------------- X4/24/89 k1multi.mnu upload and download multi-voice dumps instead of X doing one voice at a time X4/25/89 X -- started to use RCS; add $Id: CHANGES,v 1.6 89/05/06 17:13:05 lee Exp $, $Author: lee $, $Log: CHANGES,v $ X# Revision 1.6 89/05/06 17:13:05 lee X# rel. to comp.sources.misc X# X# Revision 1.6 89/04/26 10:34:18 lee X# none X# to most files --- X4/25/89 merging in Mark Rinfret's CZ1 support X Makefile version for CZ1 X list.c ditto X cz.h MR file X cz1.mnu derived from MR cz1.c; removed '&' 2nd arg X to getwaveform call; stuck in some conditionals X for up/download file; compacted menu spec X amigadir.c,amigadir.h,AmiAztec-make,ReadMe.CZ1 X MR files X amigmach.c incorporated all of MR's changes X glib.c must not reset 8th bit for CZ file data X glib.1,glib.man note MR did CZ1 X4/28/89 glib.c MR change makes nested ifdef's ok for Aztec C X ReadMe.CZ1 MR change X AmiAztec-make MR update X pc-tcc.mak added defs for CZ1 X4/30/89 menutoc.l,menutoc.c X MR changes: subst. for strtol and remove vmin decl. X glib.1,glib.man rewrite X5/5/89 amigmach.c use arp file requester, Dave Weiler, sent by Ed Wilts X README.arp doc on Dave Weiler's arp modification X5/7/89 [many] tried to get rid of lint -- some is left END_OF_FILE if test 4379 -ne `wc -c <'CHANGES'`; then echo shar: \"'CHANGES'\" unpacked with wrong size! fi # end of 'CHANGES' fi if test -f 'DX-README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'DX-README'\" else echo shar: Extracting \"'DX-README'\" \(4285 characters\) sed "s/^X//" >'DX-README' <<'END_OF_FILE' X$Id: DX-README,v 1.6 89/05/06 17:13:05 lee Exp $ XScott Snyder X$Log: DX-README,v $ X# Revision 1.6 89/05/06 17:13:05 lee X# rel. to comp.sources.misc X# X X This posting adds support for the Yamaha DX7 and DX7s synths to the glib Xpatch editor. The generic glib code is not included, so you'll need a copy Xof the earlier glib posting. I have only tested the code on a PC using XTurbo C V2.0; however, it shouldn't be hard to make it work in other Xenvironments. I have also sped up glib in a couple of places, in order Xto make it work tolerably fast on a PC. X X The following files are included: X X DX-README this file X dx7.mnu DX7 synth module X dx7s.mnu DX7s synth module (requires dx7.mnu) X pc-tcc.mak makefile for Turbo C X n001.dx7 sample DX7 bank (from Glenn Scott's DX7 patch archive) X rom1.d7s sample DX7s bank (downloaded from the Yamaha ROM X cartridge) X patches patches to the existing glib code X X[Notes (gl): file patches is not here -- the changes are incorporated; X For the TURBO-C and the DX7 version, one must uncomment #pragma X directives in two places in file dx7.mnu.] X XCompiling the editor: X X Mess-Dos/Turbo C: feed 'patches' into patch, rename 'pc-tcc.mak' to X 'makefile', and type 'make'. This will produce a version of glib which X recognizes the DX7 and DX7s. To enable support for other synths, uncomment X the appropriate lines in the makefile. X X Other systems: feed 'patches' into patch. Then adjust your makefile X appropriately: 'dx7.mnu' and 'dx7s.mnu' should be passed through X menutoc and linked in with glib. glib.c and list.c should be compiled X with the preprossesor symbols 'DX7' and 'DX7S' defined. To enable the X faster code in glib.c, define the symbol 'SSS'. X XUsing the editors: X X The DX7 editor works just like other glib-based editors, and shouldn't X present any problems. However, I was unable to fit all the DX7s parameters X on one screen, so I used a trick: some of the parameters are 'multiplexed'. X On the DX7s screen, move the cursor to the 'Modulation Wheel' legend, then X 'increment' and 'decrement' this field: the fields below it will cycle X through the 'Modulation Wheel', 'Aftertouch', 'Breath Control', 'Foot X Control', and 'MIDI Control' parameters. X X Since the DX7 banks are exactly 4096 bytes long, I chose not to add X a DataID byte to the front, to avoid wasting disk space. glib will X identify a DX7 bank by examining the file length. DX7 banks can be read X in DX7s mode and vice versa; the additional DX7s data will be discarded X or replaced with appropriate defaults. X XImplementation notes: X X In order to draw the pictures for the DX7 algorithms, I modified the X showstr() function to use the PC line-drawing characters. If you are X using another system which has such special characters, you should tell X glib about them by adding the appropriate definitions to your machdep.h X file (see the definitions at the end of pc-mach.h for an example of X how this should be done). If this is not done, the graphics characaters X will be approximated (badly) by standard ASCII characters. X X In addition to the basic cursor motion escapes (~u, ~d, ~r, ~l), showstr() X now recognizes the following additional escapes: X X ~| : a vertical line X ~- : a horizontal line X ~+ : a vertical line crossing a horizontal line X ~T : a 'T' X ~^ : an upside-down 'T' X ~< : a 'T' on its right side X ~> : a 'T' on its left side X ~{ : the upper-left corner of a box X ~} : the upper-right corner of a box X ~[ : the lower-left corner of a box X ~] : the lower-right corner of a box X ~r : 'carriage return' - the cursor returns to the leftmost column X it has been in in this call to showstr() X X In addition, a repeat count can be specified with an escape in the form X '~nc', where n is a sequence of digits and c is a character. X XCaveats: X X Again, this code has only been tested on a PC-clone using TC V2.0. X In addition, I don't have a Roland MPU; I tested the MIDI I/O using X a BYTE MIDI board. The high-level interface is the same though, so it X should work with the MPU. (By the way, if anyone is interested in BYTE X board support for glib or the CMT, drop me a line.) X X Scott Snyder - ssnyder@citjulie.bitnet, ssnyder@juliet.caltech.edu X (addresses valid until mid-June) END_OF_FILE if test 4285 -ne `wc -c <'DX-README'`; then echo shar: \"'DX-README'\" unpacked with wrong size! fi # end of 'DX-README' fi if test -f 'ctomenu.l' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'ctomenu.l'\" else echo shar: Extracting \"'ctomenu.l'\" \(5609 characters\) sed "s/^X//" >'ctomenu.l' <<'END_OF_FILE' X%{ X/* $Id: ctomenu.l,v 1.6 89/05/06 17:13:13 lee Exp $ X * Greg Lee, lee@uhccux.uhcc.hawaii.edu, 3/7/89 X * X * Ctomenu helps translate a synthesizer-specific C file into .menu X * form by generating the '#MENU ... #END' part for the labelinfo X * array and the '#O' lines for the paraminfo array. X * X * $Log: ctomenu.l,v $ X * Revision 1.6 89/05/06 17:13:13 lee X * rel. to comp.sources.misc X * X */ X#include <string.h> X X#define SCOLS 81 X#define SROWS 24 X#define MAXPARAM 300 X X int i, j, offset, reservesize = 20; X int row = -2, col = -2 , coord; X char labelname[30]; X char paramname[30]; X char temps[30]; X char *screen; X char paraml[MAXPARAM][30]; X char paramv[MAXPARAM][20]; X int paramcoord[MAXPARAM][6]; X int paramno = 0, pcount = 0; X int havename = 0; X char paramtemps[80]; X int paramtemplen; X%} X X%s A B C D E Xwh [ \t\n]* X X%% X X<A>^"#define"[ \t]+"RESERVESIZE"[ \t]*[0-9]+ { X for (i=0; yytext[i] != 'Z'; i++) ; X reservesize = atoi(yytext+i+2); X}; X X<A>^"struct labelinfo".*\n { X for (i=0; i < 30 && yytext[i+16] != '{'; i++) X labelname[i] = yytext[i+16]; X labelname[i] = 0; X BEGIN(B); X}; X X<C>^"struct paraminfo".*\n { X for (i=0; i < 30 && yytext[i+16] != '{'; i++) X paramname[i] = yytext[i+16]; X paramname[i] = 0; X havename = 0; X BEGIN(D); X}; X X<B,D>{wh} ; X<B,D>"," ; X<D>"-1" ; X<D>"NULL" ; X X<B,D>[0-9]+ { X coord = atoi(yytext); X if (row == -2) row = coord; X else if (col == -2) col = coord; X else { X fprintf(stderr, "coordinate mixup\n"); X exit(1); X } X X if (havename == 2 && row != -2 && col != -2) { X strncpy(screen+(row*SCOLS)+col,paramtemps,paramtemplen); X row = col = -2; X havename = 0; X } X}; X X<B>\"[^\"\n]*\" { X if (row == -2 || col == -2) { X fprintf(stderr, "missing coord before %s\n", yytext); X exit(1); X } X X strncpy(screen+(row*SCOLS)+col, yytext+1, yyleng-2); X row = col = -2; X}; X X<D>\"[^\"\n]*\" { X if (!havename) { X strncpy(paraml[paramno], yytext+1, yyleng-2); X paraml[paramno][yyleng-2] = 0; X havename = 1; X } else { X strncpy(paramtemps, yytext+1, yyleng-2); X paramtemplen = yyleng - 2; X havename = 2; X } X}; X X<D>"vis"[0-9A-Za-z_]+ { X if (row == -2 || col == -2) { X fprintf(stderr, "missing coord before %s\n", yytext); X fprintf(stderr, "param no. %d, havename %d\n", X paramno, havename); X exit(1); X } X strncpy(paramv[paramno], yytext+3, yyleng-3); X paramcoord[paramno][0] = row; X paramcoord[paramno][1] = col; X row = col = -2; X BEGIN(E); X}; X X<D>^"NULL".*\n ; X X<E>[ \t,] ; X X<E>[0-9]+ { X if (pcount > 3) { X fprintf(stderr, "extra value\n"); X exit(1); X } X paramcoord[paramno][2 + pcount++] = atoi(yytext); X}; X X<E>\n { X pcount = 0; X paramno++; X if (paramno > MAXPARAM) { X fprintf(stderr, "too many parameters\n"); X exit(1); X } X havename = 0; X BEGIN(D); X}; X X<B>.*"NULL".*\n ; X X<B,D>^"};" { X BEGIN(C); X}; X X<C>^[ \t]*"data[RESERVESIZE"[ \+]*[0-9]+"]"[ \t]*"="[ \t]*"getval(".*\n { X for (i=0; yytext[i] != '+'; i++) ; X offset = atoi(yytext+i+1); X while (yytext[i++] != '"') ; X for (j=0; yytext[i] != '"'; i++,j++) X temps[j] = yytext[i]; X temps[j] = 0; X for (i=0; i<paramno; i++) X if (strcmp(temps, paraml[i]) == 0) break; X if (i < paramno) X paramcoord[i][5] = offset + reservesize; X /* else error ? */ X}; X X X<C>^[ \t]*"data["[0-9]+"]"[ \t]*"="[ \t]*"getval(".*\n { X for (i=0; yytext[i] != '['; i++) ; X offset = atoi(yytext+i+1); X if (offset < reservesize) { X fprintf(stderr, "offset < RESERVESIZE\n"); X exit(1); X } X while (yytext[i++] != '"') ; X for (j=0; yytext[i] != '"'; i++,j++) X temps[j] = yytext[i]; X temps[j] = 0; X for (i=0; i<paramno; i++) X if (strcmp(temps, paraml[i]) == 0) break; X if (i < paramno) X paramcoord[i][5] = offset; X /* else error ? */ X}; X X<A,C>.|\n ; X X%% Xmain() X{ int i; X char *s; X char *malloc(); X X if ( (screen = malloc(SROWS * SCOLS)) == NULL) { X fprintf(stderr, "not enough memory\n"); X exit(1); X } X s = screen; X for (i=0; i < SROWS*SCOLS; i++) *s++ = ' '; X X BEGIN(A); X yylex(); X X printf("\n#define RESERVESIZE %d\n\n", reservesize); X menudump(); X paramdump(); X} X Xmenudump() X{ int i, j; X X for (i=0; i<paramno; i++) { X row = paramcoord[i][0]; X col = paramcoord[i][1]; X if (row >= SROWS || col >= SCOLS) { X fprintf(stderr, "bad coords\n"); X exit(1); X } X screen[row*SCOLS + col] = '%'; X } X X printf("struct labelinfo %s {\n", labelname); X printf("#MENU\n"); X for (i=0; i<SROWS; i++) { X for (j=SCOLS-1; j>=0 && screen[i*SCOLS+j] == ' '; j--) X screen[i*SCOLS+j] = 0; X printf("%s\n", screen+i*SCOLS); X } X printf("#END\n"); X printf("-1,-1,NULL\n};\n\n"); X} X Xparamdump() X{ int i, j, notdone, colmin, rowmin; X char *fmt; X X printf("struct paraminfo %s {\n", paramname); X printf("/*\nNAME\t\tTYPE\t\tPOS\tMAX\tOFFSET\tMASK\tSHIFT\tADHOC\n"); X printf(" */\n"); X X notdone = 1; X while (notdone) { X colmin = rowmin = 1000; X for (i = 0; i < paramno; i++) X if (paramcoord[i][0] < rowmin) X rowmin = paramcoord[i][0]; X if (rowmin < 1000) { X for (i = 0; i < paramno; i++) X if (paramcoord[i][0] == rowmin) { X if (paramcoord[i][1] < colmin) { X colmin = paramcoord[i][0]; X j = i; X } X } X if (colmin < 1000) { X fmt = "#O %s\t%s\t%%%%\t%d\t%d"; X if (strlen(paraml[j]) < 5) X fmt = "#O %s\t\t%s\t%%%%\t%d\t%d"; X if (paramcoord[j][4]) X paramcoord[j][5] = reservesize-paramcoord[j][4]; X printf(fmt, X paraml[j], paramv[j], X paramcoord[j][3], X paramcoord[j][5] - reservesize); X if (paramcoord[j][2] == 1) X printf("\t*5"); X printf("\n"); X paramcoord[j][0] = 1000; X paramcoord[j][1] = 1000; X } X } else notdone = 0; X } X X printf("NULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0\n};\n\n"); X} END_OF_FILE if test 5609 -ne `wc -c <'ctomenu.l'`; then echo shar: \"'ctomenu.l'\" unpacked with wrong size! fi # end of 'ctomenu.l' fi if test -f 'cz.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'cz.h'\" else echo shar: Extracting \"'cz.h'\" \(4332 characters\) sed "s/^X//" >'cz.h' <<'END_OF_FILE' X/* $Id: cz.h,v 1.6 89/05/06 17:13:13 lee Exp $ X * CZ Synthesizer Family Parameter Definitions X * X * Filename: cz.h X * Date: 03/25/89, Mark R. Rinfret X * X * X * Note: One of the preprocessor flags, CZ1 or CZ101, must be defined X * by the source file including this package. X * $Log: cz.h,v $ X * Revision 1.6 89/05/06 17:13:13 lee X * rel. to comp.sources.misc X * X */ X X#ifdef CZ101 X#define CZ_NAME "CZ-101" X#endif X X X#ifdef CZ1 X#ifdef CZ_NAME X#include "You may not define CZ1 and CZ101 in the same compile!" X#endif X#define CZ_NAME "CZ-1" X#endif X X#ifndef CZ_NAME X#include "You MUST define either CZ1 or CZ101!" X#endif X X#ifndef UBYTE X#define UBYTE unsigned char X#define USHORT unsigned short X#endif X X#define ENVELOPESIZE 16 /* 8 rate/level pairs */ X#define END_SYSTEM_EXCLUSIVE 0xF7 X X/* MIDI note-on and note-off commands */ X X#define MIDI_NOTE_ON 0x90 X#define MIDI_NOTE_OFF 0x80 X X#define MIDI_STATUS_MASK 0x80 X X X#ifdef CZ101 Xstruct ToneData { X UBYTE lineselect_octave; X X UBYTE detune_sign; X UBYTE detune_fine; X UBYTE detune_course; X X UBYTE vibrato_wave; X UBYTE vibrato_time[3]; X UBYTE vibrato_rate[3]; X UBYTE vibrato_depth[3]; X X UBYTE DCO1_wave_form[2]; X UBYTE DCA1_key_follow[2]; X UBYTE DCW1_key_follow[2]; X UBYTE DCA1_end_step; X UBYTE DCA1_envelope[ENVELOPESIZE]; X UBYTE DCW1_end_step; X UBYTE DCW1_envelope[ENVELOPESIZE]; X UBYTE DCO1_end_step; X UBYTE DCO1_envelope[ENVELOPESIZE]; X X UBYTE DCO2_wave_form[2]; X UBYTE DCA2_key_follow[2]; X UBYTE DCW2_Key_follow[2]; X UBYTE DCA2_end_step; X UBYTE DCA2_envelope[ENVELOPESIZE]; X UBYTE DWA2_end_step; X UBYTE DWA2_envelope[ENVELOPESIZE]; X UBYTE DCO2_end_step; X UBYTE DCO2_envelope[ENVELOPESIZE]; X}; X#endif X X#ifdef CZ1 X X#define MIDI_CHANNEL_MASK 0x0f X#define MIDI_FUNCTION_MASK 0xf0 X X/* Misc. MIDI status definitions */ X X#define MIDI_PITCH_BEND 0xe0 X X/* MIDI note-on and note-off commands */ X X#define MIDI_NOTE_ON 0x90 X#define MIDI_NOTE_OFF 0x80 X X#define MIDI_STATUS_MASK 0x80 X X#define FIRST_INTERNAL 0x00 X#define LAST_INTERNAL 0x3F X#define FIRST_CARTRIDGE 0x40 X#define LAST_CARTRIDGE 0x4F X#define SOUND_DATA 0x60 X X/* CZ-1 Tone Data Structure. X * The only major difference between this and CZ101 is the addition of X * the "name" field. X */ X Xstruct ToneData { X UBYTE lineAndOctave; X X UBYTE detuneSign; X UBYTE detuneFine; X UBYTE detuneCoarse; X X UBYTE vibratoWave; X UBYTE vibratoTime[3]; X UBYTE vibratoRate[3]; X UBYTE vibratoDepth[3]; X X/* What follows is a very unfortunate KLUDGE! Though we would like to X * represent the two sets of waveform data as a two-item array, the MANX X * compiler forces word alignment (somewhere), giving us a total structure X * size of 146 bytes when what we really want is 144 bytes. ARGH! X */ X X UBYTE waveForms1[2]; /* ugly, packed format */ X X /* NOTE: The key follow entries actually comprise a two-byte X word but, again, the compiler won't let us do that. The X top 4 bits of the first byte (d) represents the level value, X using the formula d = 15 - level. The bottom 4 bits of the X first byte represents the "visual" key follow value, in the X range 0 - 9. The second byte is some magic mapping of the X visual value to an internal value. */ X UBYTE DCA1_KeyFollow[2]; X UBYTE DCW1_KeyFollow[2]; X UBYTE DCA_EndStep1; /* DCA velocity */ X UBYTE DCA_Envelope1[ENVELOPESIZE]; X UBYTE DCW_EndStep1; /* DCW velocity */ X UBYTE DCW_Envelope1[ENVELOPESIZE]; X UBYTE DCO_EndStep1; /* DCO1 velocity */ X UBYTE DCO_Envelope1[ENVELOPESIZE]; X X UBYTE waveForms2[2]; /* slightly different than waveForms1! */ X UBYTE DCA2_KeyFollow[2]; X UBYTE DCW2_KeyFollow[2]; X UBYTE DCA_EndStep2; /* DCA velocity */ X UBYTE DCA_Envelope2[ENVELOPESIZE]; X UBYTE DCW_EndStep2; /* DCW velocity */ X UBYTE DCW_Envelope2[ENVELOPESIZE]; X UBYTE DCO_EndStep2; /* DCO1 velocity */ X UBYTE DCO_Envelope2[ENVELOPESIZE]; X X UBYTE name[16]; X}; X#endif X END_OF_FILE if test 4332 -ne `wc -c <'cz.h'`; then echo shar: \"'cz.h'\" unpacked with wrong size! fi # end of 'cz.h' fi if test -f 'd10tva.mnu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'d10tva.mnu'\" else echo shar: Extracting \"'d10tva.mnu'\" \(4686 characters\) sed "s/^X//" >'d10tva.mnu' <<'END_OF_FILE' X/* $Id: d10tva.mnu,v 1.6 89/05/06 17:13:18 lee Exp $ X * GLIB - a Generic LIBrarian and editor for synths X * X * D10 Tone Amplifier Librarian X * X * Code started 24 JAN 89 -- Michael R. Kesti mrk@gvgspd.GVG.TEK.COM X * modified by Greg Lee X * $Log: d10tva.mnu,v $ X * Revision 1.6 89/05/06 17:13:18 lee X * rel. to comp.sources.misc X * X */ X X#include "glib.h" X#include "vis.h" X X#define D10TONSIZE 246 X#define RESERVESIZE 20 X Xchar *visnum(); X X/* This array contains arbitrary screen labels */ Xstruct labelinfo Ldtva[] = { X#MENU X X X XCOMMON AMPLIFIER 1 2 3 4 X----------------- ------------------------------------- X Level % % % % X Structures % % Vel Sens % % % % X Partial Ena % Bias Pnt 1 % % % % X Env Mode % Bias Lev 1 % % % % X Bias Pnt 2 % % % % X Bias Lev 2 % % % % X Time KF % % % % X Time Vel Fol % % % % X Attack % % % % X Decay % % % % X Recover % % % % X Release % % % % X Attack Lev % % % % X Decay Lev % % % % X Sustain Lev % % % % X X X X Press SPACE BAR to sound note % at volume % for duration % on channel % . X#END X-1,-1,NULL X}; X Xstruct paraminfo Pdtva[] = { X/* XNAME TYPE POS MAX OFFSET MASK SHIFT ADHOC X */ X#O tva_level1 num %% 100 55 X#O tva_level2 num %% 100 113 X#O tva_level3 num %% 100 171 X#O tva_level4 num %% 100 229 X#O struct12 struct %% 12 10 X#O struct34 struct %% 12 11 X#O tva_vel_sens1 envlev %% 100 56 X#O tva_vel_sens2 envlev %% 100 114 X#O tva_vel_sens3 envlev %% 100 172 X#O tva_vel_sens4 envlev %% 100 230 X#O parmute pmute %% 15 12 X#O tva_bias_pnt_11 biaspd %% 127 57 X#O tva_bias_pnt_12 biaspd %% 127 115 X#O tva_bias_pnt_13 biaspd %% 127 173 X#O tva_bias_pnt_14 biaspd %% 127 231 X#O envmode envmode %% 1 13 X#O tva_bias_lev_11 tvablev %% 12 58 X#O tva_bias_lev_12 tvablev %% 12 116 X#O tva_bias_lev_13 tvablev %% 12 174 X#O tva_bias_lev_14 tvablev %% 12 232 X#O tva_bias_pnt_21 biaspd %% 127 59 X#O tva_bias_pnt_22 biaspd %% 127 117 X#O tva_bias_pnt_23 biaspd %% 127 175 X#O tva_bias_pnt_24 biaspd %% 127 233 X#O tva_bias_lev_21 tvablev %% 12 60 X#O tva_bias_lev_22 tvablev %% 12 118 X#O tva_bias_lev_23 tvablev %% 12 176 X#O tva_bias_lev_24 tvablev %% 12 234 X#O tva_time_kf1 num %% 4 61 X#O tva_time_kf2 num %% 4 119 X#O tva_time_kf3 num %% 4 177 X#O tva_time_kf4 num %% 4 235 X#O tva_time_vel_fol1 num %% 4 62 X#O tva_time_vel_fol2 num %% 4 120 X#O tva_time_vel_fol3 num %% 4 178 X#O tva_time_vel_fol4 num %% 4 236 X#O tva_attack1 num %% 100 63 X#O tva_attack2 num %% 100 121 X#O tva_attack3 num %% 100 179 X#O tva_attack4 num %% 100 237 X#O tva_decay1 num %% 100 64 X#O tva_decay2 num %% 100 122 X#O tva_decay3 num %% 100 180 X#O tva_decay4 num %% 100 238 X#O tva_recover1 num %% 100 65 X#O tva_recover2 num %% 100 123 X#O tva_recover3 num %% 100 181 X#O tva_recover4 num %% 100 239 X#O tva_release1 num %% 100 67 X#O tva_release2 num %% 100 125 X#O tva_release3 num %% 100 183 X#O tva_release4 num %% 100 241 X#O tva_attack_lev1 num %% 100 68 X#O tva_attack_lev2 num %% 100 126 X#O tva_attack_lev3 num %% 100 184 X#O tva_attack_lev4 num %% 100 242 X#O tva_decay_lev1 num %% 100 69 X#O tva_decay_lev2 num %% 100 127 X#O tva_decay_lev3 num %% 100 185 X#O tva_decay_lev4 num %% 100 243 X#O tva_sustain_lev1 num %% 100 71 X#O tva_sustain_lev2 num %% 100 129 X#O tva_sustain_lev3 num %% 100 187 X#O tva_sustain_lev4 num %% 100 245 X#O autopitch num %% 127 -60 X#O autovol num %% 127 -63 X#O autodur num %% 20 -5 *5 X#O autochan num %% 16 -1 *5 XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0 X}; X X X/* X * dtvadin X * X * Take library bank 'data' and stuff values in the P array, by using X * the setval function. X */ X Xdtvadin(data) Xchar *data; X{ X /* The first RESERVESIZE bytes are reserved (arbitrarily) for the voice name */ X#SETVAL X} X X/* X * dtvadout X * X * Take (possibly changed) parameters values out of the P array and X * put them back into the library bank 'data'. X */ X Xdtvadout(data) Xchar *data; X{ X#GETVAL X} X X/* end */ END_OF_FILE if test 4686 -ne `wc -c <'d10tva.mnu'`; then echo shar: \"'d10tva.mnu'\" unpacked with wrong size! fi # end of 'd10tva.mnu' fi if test -f 'd10tvf.mnu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'d10tvf.mnu'\" else echo shar: Extracting \"'d10tvf.mnu'\" \(4831 characters\) sed "s/^X//" >'d10tvf.mnu' <<'END_OF_FILE' X/* $Id: d10tvf.mnu,v 1.6 89/05/06 17:13:18 lee Exp $ X * GLIB - a Generic LIBrarian and editor for synths X * X * D10 Tone Filter Librarian X * X * Code started 24 JAN 89 -- Michael R. Kesti mrk@gvgspd.GVG.TEK.COM X * modified by Greg Lee X * $Log: d10tvf.mnu,v $ X * Revision 1.6 89/05/06 17:13:18 lee X * rel. to comp.sources.misc X * X */ X X#include "glib.h" X#include "vis.h" X X#define D10TONSIZE 246 X#define RESERVESIZE 20 X Xchar *visnum(); X X/* This array contains arbitrary screen labels */ Xstruct labelinfo Ldtvf[] = { X#MENU X X X XCOMMON FILTER 1 2 3 4 X----------------- ------------------------------------- X Cutoff Freq % % % % X Structures % % Resonance % % % % X Partial Ena % Freq KF % % % % X Env Mode % Bias Pnt/Dir % % % % X Bias Lev % % % % X Depth % % % % X Vel Sens % % % % X Depth KF % % % % X Time KF % % % % X Attack % % % % X Decay % % % % X Recover % % % % X Release % % % % X Attack Lev % % % % X Decay Lev % % % % X Sustain Lev % % % % X X X Press SPACE BAR to sound note % at volume % for duration % on channel % . X#END X-1,-1,NULL X}; X Xstruct paraminfo Pdtvf[] = { X/* XNAME TYPE POS MAX OFFSET MASK SHIFT ADHOC X */ X#O tvf_cutoff_freq1 num %% 100 37 X#O tvf_cutoff_freq2 num %% 100 95 X#O tvf_cutoff_freq3 num %% 100 153 X#O tvf_cutoff_freq4 num %% 100 211 X#O struct12 struct %% 12 10 X#O struct34 struct %% 12 11 X#O tvf_resonance1 num %% 30 38 X#O tvf_resonance2 num %% 30 96 X#O tvf_resonance3 num %% 30 154 X#O tvf_resonance4 num %% 30 212 X#O parmute pmute %% 15 12 X#O tvf_freq_kf1 tkeyfol %% 14 39 X#O tvf_freq_kf2 tkeyfol %% 14 97 X#O tvf_freq_kf3 tkeyfol %% 14 155 X#O tvf_freq_kf4 tkeyfol %% 14 213 X#O envmode envmode %% 1 13 X#O tvf_bias_pntdir1 biaspd %% 127 40 X#O tvf_bias_pntdir2 biaspd %% 127 98 X#O tvf_bias_pntdir3 biaspd %% 127 156 X#O tvf_bias_pntdir4 biaspd %% 127 214 X#O tvf_bias_lev1 biaslev %% 14 41 X#O tvf_bias_lev2 biaslev %% 14 99 X#O tvf_bias_lev3 biaslev %% 14 157 X#O tvf_bias_lev4 biaslev %% 14 215 X#O tvf_depth1 num %% 100 42 X#O tvf_depth2 num %% 100 100 X#O tvf_depth3 num %% 100 158 X#O tvf_depth4 num %% 100 216 X#O tvf_vel_sens1 num %% 100 43 X#O tvf_vel_sens2 num %% 100 101 X#O tvf_vel_sens3 num %% 100 159 X#O tvf_vel_sens4 num %% 100 217 X#O tvf_depth_kf1 num %% 4 44 X#O tvf_depth_kf2 num %% 4 102 X#O tvf_depth_kf3 num %% 4 160 X#O tvf_depth_kf4 num %% 4 218 X#O tvf_time_kf1 num %% 4 45 X#O tvf_time_kf2 num %% 4 103 X#O tvf_time_kf3 num %% 4 161 X#O tvf_time_kf4 num %% 4 219 X#O tvf_attack1 num %% 100 46 X#O tvf_attack2 num %% 100 104 X#O tvf_attack3 num %% 100 162 X#O tvf_attack4 num %% 100 219 X#O tvf_decay1 num %% 100 47 X#O tvf_decay2 num %% 100 105 X#O tvf_decay3 num %% 100 163 X#O tvf_decay4 num %% 100 220 X#O tvf_recover1 num %% 100 48 X#O tvf_recover2 num %% 100 106 X#O tvf_recover3 num %% 100 164 X#O tvf_recover4 num %% 100 221 X#O tvf_release1 num %% 100 50 X#O tvf_release2 num %% 100 108 X#O tvf_release3 num %% 100 166 X#O tvf_release4 num %% 100 223 X#O tvf_attack_lev1 num %% 100 51 X#O tvf_attack_lev2 num %% 100 109 X#O tvf_attack_lev3 num %% 100 167 X#O tvf_attack_lev4 num %% 100 224 X#O tvf_decay_lev1 num %% 100 52 X#O tvf_decay_lev2 num %% 100 110 X#O tvf_decay_lev3 num %% 100 168 X#O tvf_decay_lev4 num %% 100 225 X#O tvf_sustain_lev1 num %% 100 54 X#O tvf_sustain_lev2 num %% 100 112 X#O tvf_sustain_lev3 num %% 100 170 X#O tvf_sustain_lev4 num %% 100 227 X#O autopitch num %% 127 -60 X#O autovol num %% 127 -63 X#O autodur num %% 20 -5 *5 X#O autochan num %% 16 -1 *5 XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0 X}; X X X/* X * dtvfdin X * X * Take library bank 'data' and stuff values in the P array, by using X * the setval function. X */ X Xdtvfdin(data) Xchar *data; X{ X /* The first RESERVESIZE bytes are reserved (arbitrarily) for the voice name */ X#SETVAL X} X X/* X * dtvfdout X * X * Take (possibly changed) parameters values out of the P array and X * put them back into the library bank 'data'. X */ X Xdtvfdout(data) Xchar *data; X{ X#GETVAL X} X X/* end */ END_OF_FILE if test 4831 -ne `wc -c <'d10tvf.mnu'`; then echo shar: \"'d10tvf.mnu'\" unpacked with wrong size! fi # end of 'd10tvf.mnu' fi if test -f 'd10wfg.mnu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'d10wfg.mnu'\" else echo shar: Extracting \"'d10wfg.mnu'\" \(5670 characters\) sed "s/^X//" >'d10wfg.mnu' <<'END_OF_FILE' X/* $Id: d10wfg.mnu,v 1.6 89/05/06 17:13:19 lee Exp $ X * GLIB - a Generic LIBrarian and editor for synths X * X * D10 Tone Waveform Generator Librarian X * X * Code started 24 JAN 89 -- Michael R. Kesti mrk@gvgspd.GVG.TEK.COM X * modified by Greg Lee X * $Log: d10wfg.mnu,v $ X * Revision 1.6 89/05/06 17:13:19 lee X * rel. to comp.sources.misc X * X */ X X#include "glib.h" X#include "vis.h" X X#define D10TONSIZE 246 X#define RESERVESIZE 20 X Xchar *visnum(), *visonoff(); X X/* This array contains arbitrary screen labels */ Xstruct labelinfo Ldwfg[] = { X X#MENU for wfg X X X XCOMMON PITCH ENV 1 2 3 4 X----------------- ------------------------------------- X Depth @ @ @ @ X Structures % % Vel Sens @ @ @ @ X Partial Ena % Time KF @ @ @ @ X Env Mode % Attack @ @ @ @ X Decay @ @ @ @ XWAVEFORM GEN 1 2 3 4 Recover @ @ @ @ X------------------------------------- Release @ @ @ @ X Coarse Pitch % % % % Start Lev @ @ @ @ X Fine Pitch % % % % Attack Lev @ @ @ @ X Pitch KF % % % % Decay Lev @ @ @ @ X Bend Switch % % % % End Lev @ @ @ @ X Wave/PCMBank % % % % LFO Rate @ @ @ @ X PCM Number % % % % LFO Depth @ @ @ @ X Pulse Width % % % % Mod Sens @ @ @ @ X PW Vel Sens % % % % X X X X Press SPACE BAR to sound note @ at volume @ for duration @ on channel @ . X#END wfg menu X X-1,-1,NULL X}; X Xstruct paraminfo Pdwfg[] = { X X/*NAME TYPE POS MAX OFFSET MASK SHIFT ADHOC X*/ X X#O struct12 struct %% 12 10 X#O struct34 struct %% 12 11 X#O parmute pmute %% 15 12 X#O envmode envmode %% 1 13 X X#O wg_coarse_pitch1 cpitch %% 96 14 X#O wg_coarse_pitch2 cpitch %% 96 72 X#O wg_coarse_pitch3 cpitch %% 96 130 X#O wg_coarse_pitch4 cpitch %% 96 188 X#O wg_fine_pitch1 finetune %% 100 15 X#O wg_fine_pitch2 finetune %% 100 73 X#O wg_fine_pitch3 finetune %% 100 131 X#O wg_fine_pitch4 finetune %% 100 189 X#O wg_pitch_kf1 pkeyfol %% 16 16 X#O wg_pitch_kf2 pkeyfol %% 16 74 X#O wg_pitch_kf3 pkeyfol %% 16 132 X#O wg_pitch_kf4 pkeyfol %% 16 190 X#O wg_bend_switch1 onoff %% 1 17 X#O wg_bend_switch2 onoff %% 1 75 X#O wg_bend_switch3 onoff %% 1 133 X#O wg_bend_switch4 onoff %% 1 191 X#O wg_wave_bank1 wavebank %% 3 18 X#O wg_wave_bank2 wavebank %% 3 76 X#O wg_wave_bank3 wavebank %% 3 134 X#O wg_wave_bank4 wavebank %% 3 192 X#O wg_pcm_number1 pcmnum %% 127 19 X#O wg_pcm_number2 pcmnum %% 127 77 X#O wg_pcm_number3 pcmnum %% 127 135 X#O wg_pcm_number4 pcmnum %% 127 193 X#O wg_pulse_width1 num %% 100 20 X#O wg_pulse_width2 num %% 100 78 X#O wg_pulse_width3 num %% 100 136 X#O wg_pulse_width4 num %% 100 194 X#O wg_pw_vel_sens1 velsens %% 14 21 X#O wg_pw_vel_sens2 velsens %% 14 79 X#O wg_pw_vel_sens3 velsens %% 14 137 X#O wg_pw_vel_sens4 velsens %% 14 195 X X#O penv_depth1 num @@ 10 22 X#O penv_depth2 num @@ 10 80 X#O penv_depth3 num @@ 10 138 X#O penv_depth4 num @@ 10 196 X#O penv_vel_sens1 num @@ 3 23 X#O penv_vel_sens2 num @@ 3 81 X#O penv_vel_sens3 num @@ 3 139 X#O penv_vel_sens4 num @@ 3 197 X#O penv_time_kf1 num @@ 4 24 X#O penv_time_kf2 num @@ 4 82 X#O penv_time_kf3 num @@ 4 140 X#O penv_time_kf4 num @@ 4 198 X#O penv_attack1 num @@ 100 25 X#O penv_attack2 num @@ 100 83 X#O penv_attack3 num @@ 100 141 X#O penv_attack4 num @@ 100 199 X#O penv_decay1 num @@ 100 26 X#O penv_decay2 num @@ 100 83 X#O penv_decay3 num @@ 100 142 X#O penv_decay4 num @@ 100 200 X#O penv_recover1 num @@ 100 27 X#O penv_recover2 num @@ 100 85 X#O penv_recover3 num @@ 100 143 X#O penv_recover4 num @@ 100 201 X#O penv_release1 num @@ 100 28 X#O penv_release2 num @@ 100 86 X#O penv_release3 num @@ 100 144 X#O penv_release4 num @@ 100 202 X#O penv_start_lev1 envlev @@ 100 29 X#O penv_start_lev2 envlev @@ 100 87 X#O penv_start_lev3 envlev @@ 100 145 X#O penv_start_lev4 envlev @@ 100 203 X#O penv_attack_lev1 envlev @@ 100 30 X#O penv_attack_lev2 envlev @@ 100 88 X#O penv_attack_lev3 envlev @@ 100 146 X#O penv_attack_lev4 envlev @@ 100 206 X#O penv_decay_lev1 envlev @@ 100 31 X#O penv_decay_lev2 envlev @@ 100 89 X#O penv_decay_lev3 envlev @@ 100 147 X#O penv_decay_lev4 envlev @@ 100 205 X X#O penv_end_lev1 envlev @@ 100 33 X#O penv_end_lev2 envlev @@ 100 91 X#O penv_end_lev3 envlev @@ 100 149 X#O penv_end_lev4 envlev @@ 100 207 X#O penv_lfo_rate1 num @@ 100 34 X#O penv_lfo_rate2 num @@ 100 92 X#O penv_lfo_rate3 num @@ 100 150 X#O penv_lfo_rate4 num @@ 100 208 X#O penv_lfo_depth1 num @@ 100 35 X#O penv_lfo_depth2 num @@ 100 93 X#O penv_lfo_depth3 num @@ 100 151 X#O penv_lfo_depth4 num @@ 100 209 X#O penv_mod_sens1 num @@ 100 36 X#O penv_mod_sens2 num @@ 100 94 X#O penv_mod_sens3 num @@ 100 152 X#O penv_mod_sens4 num @@ 100 210 X X X"autopitch", NULL, -1,-1, @@, visnum, 0, 127, 60, 0, X"autovol", NULL, -1,-1, @@, visnum, 0, 127, 63, 0, X"autodur", NULL, -1,-1, @@, visnum, 1, 20, 5, 0, X"autochan", NULL, -1,-1, @@, visnum, 1, 16, 1, 0, X XNULL, NULL, -1,-1, -1, -1, visnum, 0, 0, 0, 0 X}; X X X/* X * dwfgdin X * X * Take library bank 'data' and stuff values in the P array, by using X * the setval function. X */ X Xdwfgdin(data) Xchar *data; X{ X /* The first RESERVESIZE bytes are reserved (arbitrarily) for the voice name */ X#SETVAL X} X X/* X * dwfgdout X * X * Take (possibly changed) parameters values out of the P array and X * put them back into the library bank 'data'. X */ X Xdwfgdout(data) Xchar *data; X{ X#GETVAL X} X X/* end */ END_OF_FILE if test 5670 -ne `wc -c <'d10wfg.mnu'`; then echo shar: \"'d10wfg.mnu'\" unpacked with wrong size! fi # end of 'd10wfg.mnu' fi if test -f 'k1single.mnu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'k1single.mnu'\" else echo shar: Extracting \"'k1single.mnu'\" \(4279 characters\) sed "s/^X//" >'k1single.mnu' <<'END_OF_FILE' X/* $Id: k1single.mnu,v 1.6 89/05/06 17:13:28 lee Exp $ X * GLIB - a Generic LIBrarian and editor for synths X * X * K1 Tone Waveform Generator Librarian X * X * Adapted for K1 from Kesti's D10 version by Greg Lee X * $Log: k1single.mnu,v $ X * Revision 1.6 89/05/06 17:13:28 lee X * rel. to comp.sources.misc X * X */ X X#include "glib.h" X#include "k1vis.h" X X#define RESERVESIZE 0 X X/* This array contains arbitrary screen labels */ Xstruct labelinfo Lk1sng[] = { X X#MENU for single X volume % X WAVE X ---mute--select------------------am-- XCOMMON 1 @ @ X----------------- 2 @ @ @ X source % a.bend time % 3 @ @ X vibr depth % a.bend vel>dp % 4 @ @ @ X vibr speed % a.bend ks>tm % X vibr shape % prs->freq % ENVELOPE 1 2 3 4 X prs->depth % pitch bend % ------------------------------------- X vibr wheel % ks curve % level @ @ @ @ X a.bend depth % poly mode % delay @ @ @ @ X attack @ @ @ @ XFREQUENCY 1 2 3 4 decay @ @ @ @ X------------------------------------- sustain @ @ @ @ X key track % % % % release @ @ @ @ X fcoarse/fixk % % % % vel curve @ @ @ @ X fine pitch % % % % level mod vel @ @ @ @ X fm vib/a.bend % % % % level mod prs @ @ @ @ X fm md prs>fq % % % % level mod ks @ @ @ @ X ks->freq % % % % time mod vel @ @ @ @ X time mod ks @ @ @ @ X X Press SPACE BAR to sound note @ at volume @ for duration @ on channel @ . X#END single menu X X-1,-1,NULL X}; X Xstruct paraminfo Pk1sng[] = { X X/*NAME TYPE POS MAX OFFSET MASK SHIFT ADHOC*/ X X#O volume pnum %% 99 10 X X#O src_24 twofour %% 1 11 0x4 2 X#O ab_tim num %% 100 19 X#O vb_dep finetune %% 100 13 X#O abveld finetune %% 100 20 X#O ifo_sp num %% 100 16 X#O abksti finetune %% 100 21 X#O ifo_sh ifosh %% 3 17 0x3 X#O prs_fq finetune %% 100 12 X#O vb_prs finetune %% 100 14 X#O p_bend num %% 12 15 X#O vb_whl vbwh %% 1 17 0x60 5 X#O ks_crv crv %% 4 17 0x1C 2 X#O ab_dep finetune %% 100 18 X#O poly_m polym %% 2 11 0x3 X X#O ky_tk1 onoffk1 %% 1 35 0x2 1 X#O ky_tk2 onoffk2 %% 1 36 0x2 1 X#O ky_tk3 onoffk3 %% 1 37 0x2 1 X#O ky_tk4 onoffk4 %% 1 38 0x2 1 X#O csfn1 csfnk1 %% 127 27 X#O csfn2 csfnk2 %% 127 28 X#O csfn3 csfnk3 %% 127 29 X#O csfn4 csfnk4 %% 127 30 X#O 4fine finetune %% 100 23 X#O vb_ab1 onoff %% 1 35 0x4 2 X#O vb_ab2 onoff %% 1 36 0x4 2 X#O vb_ab3 onoff %% 1 37 0x4 2 X#O vb_ab4 onoff %% 1 38 0x4 2 X#O prsfq1 onoff %% 1 35 0x8 3 X#O prsfq2 onoff %% 1 36 0x8 3 X#O prsfq3 onoff %% 1 37 0x8 3 X#O prsfq4 onoff %% 1 38 0x8 3 X#O 4fksfq finetune %% 100 83 X X#O s1mute mute @@ 1 22 0x1 X#O wave1 wave @@ 255 31 *3 X#O wvmsb1 num -- 1 35 0x1 *4 X#O s2mute mute @@ 1 22 0x2 1 X#O wave2 wave @@ 255 32 *3 X#O wvmsb2 num -- 1 36 0x1 *4 X#O am_12 am1 @@ 2 11 0x18 3 X#O s3mute mute @@ 1 22 0x4 2 X#O wave3 wave @@ 255 33 *3 X#O wvmsb3 num -- 1 37 0x1 *4 X#O s4mute mute @@ 1 22 0x8 3 X#O wave4 wave @@ 255 34 *3 X#O wvmsb4 num -- 1 38 0x1 *4 X#O am_34 am3 @@ 2 11 0x60 5 X X#O 4envlv num @@ 100 39 X#O 4envdl num @@ 100 43 X#O 4envat num @@ 100 47 X#O 4envdc num @@ 100 51 X#O 4envsu num @@ 100 55 X#O 4envre num @@ 100 59 X#O vlcrv1 pnum @@ 7 35 0x70 4 X#O vlcrv2 pnum @@ 7 36 0x70 4 X#O vlcrv3 pnum @@ 7 37 0x70 4 X#O vlcrv4 pnum @@ 7 38 0x70 4 X#O 4lmvel finetune @@ 100 63 X#O 4lmprs finetune @@ 100 67 X#O 4lm_ks finetune @@ 100 71 X#O 4tmvel finetune @@ 100 75 X#O 4tm_ks finetune @@ 100 79 X X"autopitch", NULL, -1,-1, @@, visnum, 0, 127, 60, 0, X"autovol", NULL, -1,-1, @@, visnum, 0, 127, 63, 0, X"autodur", NULL, -1,-1, @@, visnum, 1, 20, 5, 0, X"autochan", NULL, -1,-1, @@, visnum, 1, 16, 1, 0, X XNULL, NULL, -1,-1, -1, -1, visnum, 0, 0, 0, 0 X}; X X X/* X * k1sdin X * X * Take library bank 'data' and stuff values in the P array, by using X * the setval function. X */ X Xk1sdin(data) Xchar *data; X{ X#SETVAL X} X X/* X * k1sdout X * X * Take (possibly changed) parameters values out of the P array and X * put them back into the library bank 'data'. X */ X Xk1sdout(data) Xchar *data; X{ X#GETVAL X} X X/* end */ END_OF_FILE if test 4279 -ne `wc -c <'k1single.mnu'`; then echo shar: \"'k1single.mnu'\" unpacked with wrong size! fi # end of 'k1single.mnu' fi if test -f 'pc-mach.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pc-mach.h'\" else echo shar: Extracting \"'pc-mach.h'\" \(4748 characters\) sed "s/^X//" >'pc-mach.h' <<'END_OF_FILE' X/* $Id: pc-mach.h,v 1.6 89/05/06 17:13:40 lee Exp $ X * X * Machine-dependent stuff for DOS. Has only been tested with Turbo C 2.0. X * $Log: pc-mach.h,v $ X * Revision 1.6 89/05/06 17:13:40 lee X * rel. to comp.sources.misc X * X */ X X#include <dos.h> X#include <dir.h> X#include <stdio.h> X#include <ctype.h> X#include <fcntl.h> X#include <errno.h> X#include <sys/stat.h> X X#define TURBOC X X#define MIDIABLE X X#define OPENBINFILE(f,name,mode) f=fopen(name,mode[0]=='r'?"rb":"wb") X#define OPENTEXTFILE(f,name,mode) f=fopen(name,mode[0]=='r'?"rt":"wt") X Xextern unsigned long hzcount; Xextern int wrt_index, rd_index; Xextern int Nextpcchar; X X#define INT16 int X X#define STATMIDI (wrt_index==rd_index?0:1) X#define STATCONSOLE (Nextpcchar!=EOF?1:(kbhit()?(Nextpcchar=getch(),1):0)) X#define RTSTART rtstart() X#define RTEND rtend() X#define KEYCHECK keycheck() X#define TTYISRAW X#define NEEDSECHO X X#define SEPARATOR "\\" X#define CORELEFT coreleft X/* fake ones for a fake signal() */ X#define SIGINT 1 X#define SIG_IGN 0 X X/* CLOCK DEFINES */ X X#define MASTER_CLOCK_RATE 96 /* 96 CLOCKS PER BEAT */ X#define MIDI_CLOCKS_PER_BEAT 24 X X/* MISC INTERNAL DEFINES */ X X#define REC_CTRL_ALL 1 X#define REC_CTRL_NO_BEND 0 X#define REC_CTRL_NO_PRESS 2 X X#define COMMAND_MSG 0 X#define READ_MSG 1 X#define WRITE_MSG 2 X X#define SHELL_USE_INTERNAL_CLOCK 0 X#define SHELL_USE_TAPE_CLOCK 1 X#define SHELL_USE_MIDI_CLOCK 2 X X/* CODES FOR THE COMMANDS THAT ARE SENT TO THE MIC */ X X#define PLAY_STOP 0x05 X#define PLAY_START 0x0A X#define REC_STOP 0x11 X#define OVERDUB_STOP 0x15 X#define RECORD_STANDBY 0x20 X#define REC_START 0x22 X#define OVERDUB_START 0x2A X#define NO_ALL_NOTES_OFF 0x30 X#define NO_REAL_TIME 0x32 X#define THRU_DEAD 0x33 X#define COMMON_TO_HOST 0x38 X#define REAL_TIME_IN 0x39 X#define UART 0x3f X#define SET_REFA 0x40 X#define USE_INTERNAL_CLOCK 0x80 X#define USE_TAPE_CLOCK 0x81 X#define USE_MIDI_CLOCK 0x82 X#define METRONOME_ON_NORMAL 0x83 X#define METRONOME_OFF 0x84 X#define METRONOME_ON_DOUBLE 0x85 X#define BENDER_OFF 0x86 X#define BENDER_ON 0x87 X#define THRU_OFF 0x88 X#define THRU_ON 0x89 X#define INHIBIT_MEASURE_END 0x8C X#define REQUEST_MEASURE_END 0x8D X#define CONDUCTOR_OFF 0x8e X#define CONDUCTOR_ON 0x8f X#define RTM_AFFECT_OFF 0x90 X#define RTM_AFFECT_ON 0x91 X#define FSK_TO_INT 0x92 X#define FSK_TO_MIDI 0x93 X#define CLOCK_TO_HOST_OFF 0x94 X#define CLOCK_TO_HOST_ON 0x95 X#define CREFA_OFF 0x98 X#define READ_RESET_RECORD_CTR 0xAB X#define TEMPO_REQUEST 0xAF X#define CLEAR_PLAY_COUNTERS 0xB8 X#define CLEAR_PLY 0xb9 X#define SET_CLOCK_RES 0xc2 X#define SEND_DATA (0xd0 + 7) /* send on track 7 */ X#define SEND_SYSTEM 0xdf X#define SET_TEMPO 0xE0 X#define CLOCKS_PER_BEAT 0xE4 X#define BEATS_PER_MEASURE 0xE6 X#define CLOCK_TO_HOST_RATE 0xe7 X#define ACTIVE_TRACKS 0xEC X#define ACCEPT_CHANNELS_LOW 0xEE X#define ACCEPT_CHANNELS_HIGH 0xEF X#define TIMING_OVERFLOW 0xF8 X#define SEND_NULL 0xF8 X#define MEASURE_END 0xf9 X#define DATA_END 0xfc X#define RESET 0xFF X X/* CODES FOR THE MESSAGES THAT ARE READ FROM THE MIC */ X X#define REQUEST_PLAY_DATA 0xF0 X#define TIMING_OVERFLOW 0xF8 X#define DATA_END_MARK 0xFC X#define ALL_END 0xFC X/* #define MEASURE_END 0xF9 avoid redefinition */ X#define CONDUCT_REQ 0xf9 X#define CLOCK_TO_HOST 0xFD X#define ACK 0Xfe X#define SYSTEM_MSG 0xff X X/* HARDWARE LEVEL ACCESS TO THE MIC, FROM 'C' */ X X#define BASE_ADDRESS_MIC 0X0330 X#define STATUS_PORT_MIC BASE_ADDRESS_MIC + 1 X#define COMMAND_PORT_MIC BASE_ADDRESS_MIC + 1 X#define DATA_OUT_PORT_MIC BASE_ADDRESS_MIC + 0 X#define DATA_IN_PORT_MIC BASE_ADDRESS_MIC + 0 X#define INT_MIC 2 X#define INT2 10 X#define DATA_READY_MIC_MASK 0x40 X#define DATA_AVAILABLE_MIC_MASK 0x80 X#define INT_RESET_PORT 0x20 X#define INT_RESET_CODE 0x20 X#define PC_INTERRUPT_MASK_REGISTER 0x21 X X X/* INPUT/OUTPUT LOW LEVEL MACROS */ X X#define NOT_READY_FOR_DATA_MIC() (inportb(STATUS_PORT_MIC) & \ X DATA_READY_MIC_MASK) X#define NOT_DATA_AVAILABLE_MIC() (inportb(STATUS_PORT_MIC) & \ X DATA_AVAILABLE_MIC_MASK) X#define COMMAND_OUT_MIC(com) X Ioptr->ibuf = alloc(MIDIBUFSIZ);