Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!columbia!rutgers!clyde!cbatt!ucbvax!ucsfcgl!pett
From: pett@socrates.ucsf.edu (Eric Pettersen%CGL)
Newsgroups: comp.sys.atari.st
Subject: Patch Librarians/Generators (Part 1)
Message-ID: <9988@cgl.ucsf.edu.ucsfcgl.UUCP>
Date: Sat, 27-Dec-86 14:39:59 EST
Article-I.D.: cgl.9988
Posted: Sat Dec 27 14:39:59 1986
Date-Received: Sat, 27-Dec-86 20:48:39 EST
Sender: daemon@ucsfcgl.UUCP
Reply-To: pett@socrates.ucsf.edu.UUCP (Eric Pettersen)
Organization: UCSF Computer Graphics Lab
Lines: 138
Summary: Description and Table of Contents

Due to the response to my query about interest in ST voice librarians/generators
for the Yamaha DX100 and Casio CZ-101 (more than 40 responses), I have decided 
to post to the net.  The three postings which follow contain ARCed versions of 
the executables for each program (one archive = CZ-101, one archive = DX100) 
as well as the combined souce (third archive).  There was a lot of interest in 
the source because many people wanted to attempt conversions to various other 
synthesizers (conversion to other DX series synths should be very easy [thank
you Yamaha!] while CZ conversions will be a bit [read - a lot] tougher. These
programs should work without conversion (although I haven't *tested* them) on
the DX27 and CZ-1000 and CZ-5000 because their patch formats are identical to
one of the above synths.

If anyone converts these programs to other synths, or otherwise enhances them,
please post!  Also, if you come up with any great patches, let the net know!
With these programs available generally around the net, it suddenly becomes
extremely easy to distribute patches.  Just write the patches of interest to
disk, upload and uuencode them and post.  Everyone with the program can then
just grab the article, transform it back to file form, load it into the program
and then into the synth (no laborous patch entry!).  Patch files are relatively
short as well.  As a starting point, all the patches my friends and I have come
up with are included in the appropiate archive.  Check them out and use them
if you like them.

What these programs do:

	--> Store patches so that the ST can send them back and forth to your 
		synth and you can therefore have a large library of patches
		easily available.

	--> Allow you to give long descriptive names to your patches.

	--> Generate new patches in a semi-random fashion that you can try out
		easily and keep or discard as appropiate.  The parameters that
		control the generation of voices are external to the program
		(in an ASCII control file) and can therefore be altered or 
		fine-tuned as you see fit.

	--> Allow you to rearrange the voices in your library into the order
		you desire.

	--> Work in any resolution.

What these programs don't do:

	--> Edit the voice *using the ST*, the (I know, painful) editing
		facilities of the synth must be used. 

	--> Store the voices in a hierarchical manner.  This would be good
		in that it would allow a voices of similar function to be
		grouped or accessed together.

	--> Use GEM (although they are easy to use and *are* menu driven,
		you'll see -:)).

-----
The archives contain:

	Archive 1 (PATCHSRC.ARC)
	------------------------

	PATCH.C		Source to both CZPATCH.PRG and DXPATCH.PRG (by using
			#ifdefs)

	CONVERT.DOC	Pointers for converting the code for use by other
			synths, as well as some explanations of the functioning
			of various parts of the source code.

	CURSES.C	Don't get your hopes up.  This is the sources to the
			routines that I use commonly throughout all my programs.
			Includes a routine to do screen addressing functions
			[scr_func()] and one to get a character string from
			the user, allowing common editing functions [get_str()]
			as well as a few other goodies.

	CURSES.H	My handy-dandy do-all include file.  Used particularly
			in conjunction with the above.

	COMPILE.DOC	Describes what is necessary for compilation (this is
			Alcyon C code, by the way).

	CONVERT.PRG	Utility that converts binary files to ASCII hex and
			vice versa.  Was invaluable when creating the data
			files that CZPATCH.PRG needed due to details of the
			CZ101 MIDI system exclusive implementation.


	Archive 2 (DXPATCH.ARC)
	-----------------------

	DXPATCH.PRG	Executable patch program for the DX100 (which will also
			presumably work with the DX27).

	PATCH.DOC	File detailing the operation of the program, as well as
			the contents of the files below.

	DX100.DTA	ASCII file containing the parameters controlling random
			voice generation.

	DXVOICES.DTA	File containing the actual patches (starts out with the
			ones that I'm distributing).

	KEYTAB.DTA	Data file used internally by DXPATCH.PRG .


	Archive 3 (CZPATCH.ARC)
	-----------------------

	CZPATCH.PRG	Executable program.  Should work with CZ-1000 and 5000
			as well as CZ-101.

	PATCH.DOC	Same as PATCH.DOC above.  Can be discarded if you are
			keeping both archives.

	CZ101.DTA	Similar to DX100.DTA .

	CZ101.DOC	File detailing parameters being set by CZ101.DTA.

	CZVOICES.DTA	Similar to DXVOICES.DTA .

	CZMIDI.DTA	Contains tables (in binary) for converting parameter
			settings to the hex code necessary to transmit to the
			synth [why are these so strange, Casio?].

	KEYTAB.DTA	As in archive 2.  One can be discarded if keeping both
			archives.

I recommend that you transfer the archives to your ST and then uudecode and
de-ARC.  This seems to be the most reliable method of avoiding errors.  

If for some reason you need the source code in clear form (not ARCed, not
uuencoded) E-mail me and I will send you a copy (ucbvax!pett@socrates.ucsf.edu).

I will also be trying to upload these onto several bulletin boards [Ataribase,
MIDIworld network (in LA), STrategic Command (in SF), and The Club II (in 
Detroit)].

				Eric Pettersen
				UCSF Computer Graphics Lab