In this directory are a set of basic sample "interfaces" to RTcmix.
These programs don't really present much of an 'interface', but they
do demonstrate the basic idea of connecting to an RTcmix process
across the RTcmix socket.  Generally these can be run on the same
machine (and the "hostname of server" can be localhost), but
they can actually be modified to send data to remote machines.

Here's a quick description of each program (check the source files for
more information):

strumscale -- very simple, sends a scale to the STRUM instrument

arpeggiate -- sends random notes chosen from an *extremely* pleasant-sounding
	array to the STRUM instrument.

crudeLooch -- a simple version of the "Looching" program I wrote for
	NeXT machines years ago.  Uses the WAVETABLE instrument.

happykeys -- play the ASCII keyboard like a real keyboard!  STRUM again...

funplay -- trigger soundfiles from the keys "a" "b" and "c".  NOTE: you
	will have to enter your own soundfile names into the code;
	look right after the "main()" function.

mixit -- randomly slice up a soundfile (prompts for the soundfile name)

poems -- written by Luke Dubois, this is a modified version of "happykeys"
	to do some timbre generation using makegen/WAVETABLE.  I also
	kept much of Luke's original code to show what the lower-level
	socket functions in ../lib/RTsockfuncs.c do.

poemify -- a simple program that generates characters to pipe to the "poems"
	program to make automagical music.  Say:

		poemify | poems

	and it goes.


NOTE:  These instruments are designed to start the RTcmix core process
("CMIX") and then dynamically load the correct instrument ("poems" is the
exception).  Again, this can be modified to invoke a process on a remote
machine, or changed to connect to an already-running process.  If
you do not have the DSO-capable RTcmix (2.0 or later), you should probably
get it, or you will have to change all the code here to invoke the instruments 
as standalone programs.

Most of these also shut down quietly, but occasionally a CMIX process
will become zombified and continue to run after the interface has
died.  The command "killem" (in the RTcmix/bin directory) should clean
up any processes that get hung.

Sometimes you will see an error:

	bind: Address already in use
	Child process exited, so we will too.

when trying to start one of these interfaces.  This means that a CMIX
process may still be running (check and killem if you need to), or it may 
be that the network address has not been freed by the OS yet -- you will 
usually have to wait a minute or two when this occurs before you can run 
the command.

Have fun -- I hope these are enjoyable and instructive!

brad
