------------------------------------------------------------------------
jol v0.1 - plays MODs with 8-bit mono /dev/dsp devices under Linux
------------------------------------------------------------------------

The goal of my project was to get decent MOD playback under Linux.
My aims were low cpu usage and high quality output with all of the
ProTracker 3.0 effects emulated perfectly. These goals havent been
achieved yet, but theres always another day. As a side goal I want
to contribute something back to the FSF. They've done a great job,
and IMHO the best repayment is producing more free software.

This player supports the /dev/dsp device supplied through VoxWare.
I developed jol using version 2.99 and believe this is the minimum
requirement. This version is distributed with Slackware 2.1 so you
probably already have the correct drivers. Jol will then work with
any soundcard supporting /dev/dsp with 8-bit mono output.

This player can load the following MOD formats.
	- original 15 sample MODs
	- extended 31 sample MODs
	- protracker extra track MODs
	- startrekker 4, 8 channel MODs
	- taketracker 4, 6, 8, 16, 32 channel MODs

Several ProTracker effects are implemented, hopefully correctly!  Most
of the ProTracker effects which deal with periods and volumes work fine.
The simple effects which manipulate the current position also work. Many
MODs use the SetSampleOffset effect, so I have a temporary fix which
almost implements this.

I believe the timings are now useable. I use the beats-per-minute and
ticks-per-division method used with ProTracker.  My sampling frequencies
are all PAL based so unfortuantely NTSC modules will play slightly flat
(though at the correct rate). I dont know how to distinguish between PAL
and NTSC so I default to PAL.

Jol doesnt support many command line options. Its mainly designed for me
to listen to MODs while I read mail and news. Jol will accept 1 MOD file
for playing and will return 0 upon successful completion and 1 for error
-- i/o error, corrupt file error or memory allocation error.  The default
mixing frequency is 20khz but may be modified through the -f command line
option. You may also specify -v for the current version

Jol was written using g++ v2.4 and Linux v1.1.59. I chose C++ because it
has stronger prototypes and typecasting. If you've only installed C then
tough. The code has assumed that integers are 32-bits wide, done because
I just wanted Linux support and not every-architecture-ever support. The
code is also pretty heavily based around 8-bit mono mixing. Upgrading to
support 16-bit or stereo could be pretty contorted.

Bug reports are always welcome. I encourage people to find the bugs and
correct them (makes my life easier :) but please mail me what youve done.
Then I can include it into the next release and make everyone happy. I
also love suggestions. If you think the design will cause problems, is
grossly inefficient or think Ive implemented an effect wrong... dont be
shy. Tell me and I'll correct the code. You can send any constructive or
helpful critiscm to.

	nathanh@bin.anu.edu.au
	N.Hand@student.anu.edu.au
	h9304891@student.anu.edu.au

One of them should work. My preference is from top to bottom in the given
order. Glowing praise is always welcome, but never expected :)


Nathan Hand -- 1995
Engineering/Computing Student
Australian National University
