KMikMod README for version 2.04

KMikMod is a multithreaded moduleplayer for the K Desktop Environment (KDE)
(http://www.kde.org) which is based on Qt libraries (http://www.troll.no).

KMikMod is reported to work in Linux (glibc2 and libc5 - both work) and
FreeBSD (2.2.8) - well I'm not sure of that anymore since the compiler it
uses (gcc-2.7.2.1) has some troubles compiling ModClass.cpp. The other fault 
with 2.03 and FreeBSD were that libmikmods configure script didn't found the 
threading stuff in FreeBSD platform. That should be fixed now.

The platforms it should be possible to get running without too much
modifications are: Linux, FreeBSD, OpenBSD, NetBSD, AIX, HP-UX and Solaris.

The prequisities are Qt-1.4x, KDE-1.x and a working implementation of POSIX.1b
threads, not forgetting decent C++ compiler (egcs is superb).

If you like kmikmod to drive the player thread with realtime scheduler for
better sound quality suid the binary to root like this 'chmod 4711 kmikmod'.
This feature is available if your system supports POSIX thread scheduling
(checked at compile time). Beware that too low sleep time combined with
realtime scheduler may lockup your computer as the player thread eats all
available CPU time.

Beware that mikmods High Quality Mixer takes lots of CPU. For example my PC
(PPro 200) isn't powerful enough for it. With threaded drivers I've managed to 
use HQ-mixer succesfully for some 4-track modules but if the samples are good 
quality there's no benefit using it.
  
Now there's threaded drivers for OSS and Alsa. These are much nicer to the
CPU than the draditional drivers. The modifications needed for standard 
drivers were quite minimal so please if you are using kmikmod with non 
OSS/Alsa/esd driver = in non Linux/*BSD platform, try to make 'em threaded 
and send me the modified driver code to be included in the distribution.

The reduce in CPU usage is quite dramatic - I haven't found a module which
takes more that 0.02% out of my PPro to play as I've seen the "traditional"
OSS driver to take occasionally as much as 10% with some more demanding
modules. Allmost the same goes with Alsa/Thr driver too. It takes 
approximately 0.2% compared to 14% the non-threaded driver takes.
 
NOTE - reduce the sleep time in configuration dialog to something low like 50
with these drivers - it sounds really horrible with too long sleep time and
may need resetting after changing the sleep time (select/unselect some
mikmod option and hit Apply to reset player thread.)

NOTE2 - HQ mixer is a CPU killer still.

Once these drivers mature a bit they might be integrated in the libmikmod 
distribution.

The building of kmikmod is done in two stages since 2.02 because I'm too
lazy to merge libmikmod and kmikmod configure scripts every time a new
version is released so please READ the "BUILDING AND INSTALLING" section.

--------

BUILDING AND INSTALLING KMikMod

cd libmikmod
./configure
cd ..
./configure
make
make install

that's all!

--------

HINTS:

To check various options configure script supports try this: configure --help
As I have PPro, I set these variables before executing configure script:
For tcsh/csh:
setenv CXXFLAGS '-O6 -mpentiumpro -fno-exceptions -finline-functions -frerun-loop-opt'

For sh/bash/ksh:
export CXXFLAGS='-O6 -mpentiumpro -fno-exceptions -finline-functions -frerun-loop-opt'

and the same things for CFLAGS also!

Have fun!

Roope
anttiner@myy.helia.fi

