26 june 1995

	Hello one and all.  SoundSmith is a 14 channel music composer/tracker
for the Apple IIGS computer written by Parik Rhoe.  The song file format is a
complete hack and a major pain to deal with.  To top that off, SoundSmith has
almost no effects.
	So, why did I make a player for this quite twisted, stupid format?  I
wrote the player because I was first introduced to computer music on the GS and
it happened to be SoundSmith.  Ever since then, I thought it would be awesome
if I could play those same songs that I love on my IBM computer.
	The player is not complete.  It will be someday.  It will also
eventually be able to load and play NoiseTracker GS modules.  I also plan on
writing a graphics based editor/compser/tracker for the program.  I suppose I
will someday finish incorporating the loader into gmod, too.
	You may notice that the music skips sometimes.  That's because I'm
using read() instead of select() because select() doesn't work properly.  The
problem with this is that read() isn't that great when something else is
sucking up CPU time.  I hope that this will change soon.
	What I would like to is make it timer (interrupt) driven.  I did do
this, just to see if I could.  Well, anyone else who's tried doing the same
already knows why it doesn't work.
	Also, PLEASE don't think that this is the best coding I can do.  Most
of this program is a hack just to do the job.
	This code requires the Voxware sound driver v2.9+(?) and a Gravis
Ultrasound in order to work.  You probably also want a POSIX system like Linux
because I have no idea if this will compile under anything else.

	Some info on options an loading music:

-m	I added the no stereo option because, by default, the GS doesn't play
	in stereo.
-d	Don't turn on debugging output unless you REALLY want to.  Sorry I
	haven't bothered to fix it so it prints in a sensible order since I
	modified the code a long while back.
-V	Someone might want to know what the names of the instruments are.
-r	The infinite repeat exists because a lot of songs are meant to be
	repeated forever.
-t	I like trackers.  It helps if you have a wide screen (98 cols).  The
	tracker output is in hex and is formatted thus: 2113ff
	                                                |/||||
	The MIDI note value of the note ----------------+ ||||
	The instrument number of the note ----------------+|||
	The effect value of the note ----------------------+||
	Effect data 1 --------------------------------------+|
	Effect data 2 ---------------------------------------+
-a	This feature will cause the player to not synchronize itself with the
	sound output.  This is usefull because the player won't jump when other
	processes are eating up CPU time.  Unfortunately, you have to wait
	until the sound driver is done emptying the event buffer before any you
	can give any keypresses and have them do anything.  When you can give
	keypresses, you have to be very quick about it, or just wait.  Try it,
	you'll see what I'm talking about.
-R	I liked the ability to randomize songs with gmod so I added it here.
-I	The instruments for the songs are searched for in the following order:
	1. In the directory specified here.
	2. In the directory specified by the environment variable 'SS_INST_DIR'.
	3. In the current directory of the program.
	4. In the default directory '/library/sound/ss/instruments'.
-M	The music files are searched for in the following order:
	1. In the current directory.
	2. In the directory specifie here.
	3. In the directory specified by the environment variable
	   'SS_MUSIC_DIR'.
	4. In the default directory '/library/sound/ss/music'.

	Some info on keys:

q	Quit
^C	Quit
^Z	Suspend
>	Next song
<	Previous song
t	Toggle tracker output
m	Toggle stereo output
p	Pause
+	Increase volume by 1
-	Decrease volume by 1
5	Previous position
8	Next position
4	Previous row
6	Next row

An example (assuming no environment variables are set):
	ss -I/usr/local/lib/ss/inst -r -t Moon\ Music\ 2
	This would first search for the song 'Moon Music 2' in the current
directory, then in '/library/sound/ss/music'.  The instruments would be
searched for in '/usr/local/lib/ss/inst', then in the current directory.  The
song would repeat indefinately and the tracker would be displayed.

This could also be written:
	ss -I/usr/local/lib/ss/inst -rt Moon\ Music\ 2
As well as:
	ss -rtI/usr/local/lib/ss/inst Moon\ Music\ 2
Also, right now, all options MUST come before any songs.

A note:  song files can be compressed in most popular compression formats. 
Instrument files can not (it would be really easy to do, but it just hasn't
been done yet.

Another note:  The reason I am releasing this in its current state is because
I've had it like this for months (except for one fix I made not too long ago)
and my current school schedule doesn't allow for much time to work on it.  I
figure people should at least be able to use the thing until I have more time
to make it better.

Yet another note:  Unlike ProDOS, unix is case sensitive for file names.  So is
this player.

To build:
	Edit the Makefile to suit your needs.  Also change the default
instrument and music directories in 'SSmith.h' or in the Makefile if you are so
inclined.
	Type make.
	If all goes well, you'll have a SoundSmith player.
To try out:
	Type ./ss JCD\ Megablaster

	So sit back and enjoy listening to your favorite demo tunes by the FTA
and remember to say 'No!' to tools.
	I hope you like it.
	Peace....

	- Hemlock

PS:	Send bug reports, modifications, suggestions, and greetings to
allanon@u.washington.edu.  No flames please.  Please give us feedback on the
player.

The Authors:
-----------
Hemlock Solmes (Peter Federighi)	peter@night.pc.cc.cmu.edu
	loader/player/research

The Great Druid Allanon (Ethan Fischer)	allanon@u.washington.edu
	backgrounding/decompression routines/GS info/help/knowledge

other members of T.S.I include:
------------------------------
Eternal Night (Anton Staaf)		root@night.pc.cc.cmu.edu

The Space Cowboy (Steve Troy)		allanon@u.washington.edu

                         Apple II Forever!
