v06i114: repost of glib/part02 (original was truncated)
Brandon S. Allbery - comp.sources.misc
allbery at uunet.UU.NET
Mon May 22 11:54:46 AEST 1989
Posting-number: Volume 6, Issue 114
Submitted-by: lee%uhccux.bitnet at cunyvm.cuny.edu (Greg Lee)
Archive-name: glib/part02
It appears that a net.line.eater decided to snack on the bottom half of
glib/part02 (volume 6, issue 103). This posting supersedes it and overwrites
its archive entry. Archive maintainers take note.
++Brandon
------------------
#! /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 at 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 at citjulie.bitnet, ssnyder at 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 at 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 at 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 at 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 at 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) outportb(COMMAND_PORT_MIC, com)
X#define DATA_OUT_MIC(dat) outportb(DATA_OUT_PORT_MIC, dat)
X#define READ_DATA_MIC() inportb(DATA_IN_PORT_MIC)
X
X/* define the graphics drawing characters for showstr */
X
X#define DRAW_VERT 179 /* vertical line */
X#define DRAW_HORIZ 196 /* horizontal line */
X#define DRAW_CROSS 197 /* vertical line intersecting horizontal */
X#define DRAW_UPTEE 194 /* 'T' */
X#define DRAW_DOWNTEE 193 /* upside-down 'T' */
X#define DRAW_LEFTTEE 195 /* 'T' on its left side */
X#define DRAW_RIGHTTEE 180 /* 'T' on its right side */
X#define DRAW_UPLEFT 218 /* upper-left corner */
X#define DRAW_UPRIGHT 191 /* upper-right corner */
X#define DRAW_DOWNLEFT 192 /* lower-left corner */
X#define DRAW_DOWNRIGHT 217 /* lower-right corner */
END_OF_FILE
if test 4748 -ne `wc -c <'pc-mach.h'`; then
echo shar: \"'pc-mach.h'\" unpacked with wrong size!
fi
# end of 'pc-mach.h'
fi
if test -f 'st-mach.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'st-mach.c'\"
else
echo shar: Extracting \"'st-mach.c'\" \(5590 characters\)
sed "s/^X//" >'st-mach.c' <<'END_OF_FILE'
X/* $Id: st-mach.c,v 1.6 89/05/06 17:13:42 lee Exp $
X *
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Machine dependent stuff.
X *
X */
X
X#include "glib.h"
X#include <ctype.h>
X
Xint Rows, Cols;
X
X#define EscSeq(x) Cconout('\033');Cconout(x);
Xstruct iorecinfo {
X char *ibuf;
X int ibufsiz;
X int ibufhd;
X int ibuftl;
X int ibuflow;
X int ibufhigh;
X};
X#define MIDIBUFSIZE 5000
Xchar *Origbuf;
Xint Origsize;
Xstruct iorecinfo *Ioptr;
Xint work_in[12], work_out[60]; /* GEM & VDI stuff */
Xint intin[128], ptsin[128];
Xint intout[128], ptsout[128];
Xint contrl[12];
Xint Handle, Vhandle;
X
X/* These contain the raw voice data */
Xhello()
X{
X int dummy, n;
X
X appl_init();
X
X /* Get the Midi Iorec and put in a bigger buffer */
X flushmidi();
X Ioptr = (struct iorecinfo *)(Iorec(2));
X Origbuf = Ioptr->ibuf;
X Origsize = Ioptr->ibufsiz;
X Ioptr->ibuf = alloc(MIDIBUFSIZ);
X Ioptr->ibufsiz = MIDIBUFSIZ;
X Ioptr->ibuftl = Ioptr->ibufhd = 0;
X Cursconf(2,0); /* set non-blinking block cursor */
X mouseon();
X}
X
Xbye()
X{
X /* Restore the original Midi Iorec buffer */
X flushmidi();
X Ioptr->ibuf = Origbuf;
X Ioptr->ibufsiz = Origsize;
X Ioptr->ibuftl = Ioptr->ibufhd = 0;
X mouseoff();
X appl_exit();
X
X /* are these ever called? SAF */
X windgoto(23,0);
X windrefresh();
X windexit(0);
X}
X
X/* getmouse - get currect row and column of mouse */
Xgetmouse(amr,amc)
Xint *amr;
Xint *amc;
X{
X#ifdef USEMOUSE
X int button, ret, keycode, tmp1, tmp2;
X char msgbuf[8];
X
X graf_mkstate(amc,amr,&tmp1,&tmp2);
X /* evnt_multi(MU_TIMER,
X 0,0,0,
X 0,0,0,0,0,
X 0,0,0,0,0,
X msgbuf, 0, 0,
X amc, amr, &button, &ret, &keycode, &ret); */
X /* convert bitmap x,y coordinates to row,colum */
X *amr = (*amr)/16;
X *amc = (*amc)/8;
X#else
X *amr = -1;
X *amc = -1;
X#endif
X}
X
X/* statmouse - return mouse button state (0=nothing pressed,1=left,2=right) */
Xstatmouse()
X{
X#ifdef USEMOUSE
X int tmp1, tmp2, tmp3, buttons;
X char msgbuf[8];
X
X graf_mkstate(&tmp1,&tmp2,&buttons,&tmp3);
X /* evnt_multi(MU_TIMER,
X 0,0,0,
X 0,0,0,0,0,
X 0,0,0,0,0,
X msgbuf, 0, 0,
X &tmp1, &tmp1, &buttons, &tmp1, &tmp1, &tmp1); */
X return(buttons);
X#else
X return(-1);
X#endif
X}
X
Xint Mouseshown = 0;
Xmouseon()
X{
X#ifdef USEMOUSE
X if ( Mouseshown == 0 ) {
X Vsync(); /* wait until next VBI to ensure updating */
X Cursconf(1,0); /* show block cursor */
X Vsync(); /* wait until next VBI to ensure updating */
X graf_mouse(257,NULL); /* display mouse cursor */
X Mouseshown = 1;
X Vsync();
X }
X#endif
X}
Xmouseoff()
X{
X#ifdef USEMOUSE
X if ( Mouseshown == 1 ) {
X Vsync(); /* wait until next VBI to ensure updating */
X graf_mouse(256,NULL); /* hide mouse cursor */
X Vsync(); /* wait until next VBI to ensure updating */
X Cursconf(0,0); /* hide block cursor */
X Mouseshown = 0;
X Vsync();
X }
X#endif
X}
X
X/* Return when either a console key or mouse button is pressed. */
Xmouseorkey()
X{
X#ifdef USEMOUSE
X int evnt, ret, keycode, button, mx, my, tmp1, tmp2, tmp3;
X char msgbuf[8];
X
X mouseon();
X for ( ;; ) {
X graf_mkstate(&tmp1,&tmp2,&button,&tmp3);
X /* evnt = evnt_multi(MU_TIMER,
X 0,0,0,
X 0,0,0,0,0,
X 0,0,0,0,0,
X msgbuf, 0, 0,
X &mx, &my, &button, &ret, &keycode, &ret); */
X if ( button != 0 ) {
X return(MOUSE);
X }
X if ( statmouse() > 0 )
X return(MOUSE);
X if ( statconsole() )
X return(getconsole());
X }
X#else
X return(getconsole());
X#endif
X}
X
Xflushconsole()
X{
X while ( statconsole() )
X getconsole();
X}
X
Xstatconsole()
X{
X /* return(Bconstat(CONSOLE)); */
X return(Cconis());
X}
X
Xgetconsole()
X{
X /* return(Bconin(CONSOLE)); */
X return(Crawcin());
X}
X
Xgetmidi()
X{
X return(Bconin(MIDI));
X}
X
X/*ARGSUSED*/
Xsendmidi(c)
X{
X Bconout(MIDI,c);
X}
X
Xflushmidi()
X{
X while ( STATMIDI )
X getmidi();
X}
X
Xlong milliclock()
X{
X register long save_ssp=Super(0L);
X register long uhz200= *(long *)0x4ba;
X Super(save_ssp);
X return(uhz200 * 5);
X}
X
Xmillisleep(n)
X{
X long first = milliclock();
X while ( milliclock() < (first+n) )
X ;
X}
X
Xchar *
Xalloc(n)
X{
X char *p;
X
X if ( (p=malloc((unsigned)n)) == (char *)NULL ) {
X printf("*** Whoops *** alloc has failed?!? No more memory!\n");
X fflush(stdout);
X bye();
X }
X return(p);
X}
X
Xwindinit()
X{
X Cols=80;
X Rows=25;
X Cursconf(1,NULL);
X}
X
Xwindgoto(r,c)
Xint r,c;
X{
X mouseoff();
X EscSeq('Y');
X Cconout(r+040);
X Cconout(c+040);
X}
X
Xwindeeol()
X{
X mouseoff();
X EscSeq('K');
X}
X
Xwinderaserow(r)
X{
X windgoto(r,0);
X windeeol();
X}
X
Xwindexit(r)
Xint r;
X{
X exit(r);
X}
X
Xwindclear()
X{
X mouseoff();
X EscSeq('H');
X EscSeq('J');
X}
X
X/* windgets - get a line of input from the console, handling backspaces */
Xwindgets(s)
Xchar *s;
X{
X char *origs = s;
X int c;
X
X while ( (c=getconsole()) != '\n' && c!='\r' && c!= EOF ) {
X if ( c == '\b' ) {
X if ( s > origs ) {
X windstr("\b \b");
X s--;
X }
X }
X else {
X windputc(c);
X *s++ = c;
X }
X windrefresh();
X }
X *s = '\0';
X}
X
Xwindstr(s)
Xchar *s;
X{
X int c;
X
X while ( (c=(*s++)) != '\0' )
X windputc(c);
X}
X
Xwindputc(c)
Xint c;
X{
X mouseoff();
X Cconout(c);
X}
X
Xwindrefresh()
X{
X}
X
Xbeep()
X{
X Cconout('\007');
X}
X
Xwindhigh()
X{
X}
X
Xwindnorm()
X{
X}
X
X/****************
X * openls(), nextls(), and closels() are used to scan the current directory.
X ***************/
X
Xchar Dtabuff[44];
Xlong Origdta;
Xint Atarifirst = 0;
X
Xchar *
Xopenls()
X{
X int n, c;
X
X Origdta = Fgetdta();
X Fsetdta(Dtabuff);
X Atarifirst = 1;
X}
Xchar *
Xnextls()
X{
X static char fname[17];
X int n, c;
X
X if ( Atarifirst ) {
X if ( Fsfirst("*.*",0x10) < 0 )
X return(NULL);
X }
X else {
X if ( Fsnext() < 0 )
X return(NULL);
X }
X Atarifirst = 0;
X for ( n=0; n<14; n++ ) {
X c = fname[n] = Dtabuff[30+n];
X /* ALL phrase names are lower case */
X if ( c >= 'A' && c <= 'Z' )
X fname[n] = c - 'A' + 'a';
X }
X fname[14] = '\0';
X return(fname);
X}
Xclosels()
X{
X Fsetdta((char *)Origdta);
X}
X
END_OF_FILE
if test 5590 -ne `wc -c <'st-mach.c'`; then
echo shar: \"'st-mach.c'\" unpacked with wrong size!
fi
# end of 'st-mach.c'
fi
echo shar: End of archive 2 \(of 15\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 15 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
More information about the Comp.sources.misc
mailing list