1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333
|
Hello folks !
This is libmikmod, version 3.1.6, a portable sound library for Unix.
This version is mainly a bugfixed 3.1.5 version...
Check out the file 'NEWS' for more information.
BUILDING LIBMIKMOD
------------------
If you're building libmikmod under OS/2, please refer to the 'README' file
located in the 'os2' subdirectory.
If you're building libmikmod under Windows, please refer to the 'README' file
located in the 'win32' subdirectory.
You'll need an ANSI C compiler to build libmikmod. If you're building on a
32 bit architecture, your compiler must provide a 64 bit integer type
(usually 'long long').
To prevent clobbering the sources, I recommend building libmikmod in an
alternate directory, for example 'build' :
mkdir build
cd build
In this directory, run libmikmod's configure script :
../configure
The configure script will attempt to guess correct values for various
system-dependent variables used during the build process, and will
create appropriate Makefiles for proper compilation.
If you're not familiar with configure scripts and their standard
options, you can find more general information about them in the file
INSTALL.
The default behaviour of the configure script is to create both a static and
a shared library, with as many drivers as possible, which are dynamically
loaded whenever possible. However, it can be given several options to tweak
your configuration of libmikmod :
The --enable-af, --enable-alsa, --enable-esd, --enable-oss and --enable-ultra
options will compile respectively the Digital AudioFile, Advanced Linux Sound
Architecture (ALSA), Enlightened Sound Daemon, Open Sound System (OSS) and
Linux Ultrasound drivers.
Since the configure script will search for the appropriate include
files and libraries, to compile as much drivers as possible, these
options are mostly useful in their negative form :
../configure --disable-esd
will configure libmikmod without the Enlightened Sound Daemon driver, even
if all the necessary files for compiling are present on the system.
The --enable-dl option enables the dynamic load of the alsa, esd and ultra
drivers at runtime, if your systems support it. This option is enabled by
default if the build system supports it, so it is more useful in its negative
form :
../configure --disable-dl
will configure libmikmod without the dynamic loading facility.
The --enable-threads option enables the creation of a thread-safe libmikmod
library, if your system provides POSIX threads. This option is enabled by
default, so it is more useful in its negative form :
../configure --disable-threads
will configure for a non thread-safe version of libmikmod.
The --enable-shared and --enable-static options control whether a static
library, a shared library or both should be built.
The --enable-debug option creates a debug version of libmikmod.
After you've successfully run configure, simply run
make
to get all things build. Then, run
make install
to have the library installed. Depending on where you choose to install it
(using the --prefix= option to configure), you may need root privileges for
this operation.
STATUS
------
The following platforms are known to work :
- Linux/i386 :
o with the built-in OSS driver in kernels 2.0.*, 2.1.* and 2.2.* ; it may
work with 1.* kernels but has not been tested.
o with the EsounD driver (on top of OSS and ALSA).
o with the ALSA driver (including multi sound card configurations).
- Linux/Alpha :
o with the built-in OSS driver in kernels 2.0.*, 2.1.* and 2.2.*
o with the EsounD driver.
- FreeBSD 2.2.x and 3.x with the built-in OSS driver.
- NetBSD/i386 1.3.2 and 1.3.3, with the NetBSD audio driver.
- OpenBSD/i386 2.2 and 2.4, with the OpenBSD audio driver.
- HP-UX 10 on HP 9000 hardware, with the HP audio driver.
- IRIX 6 on various SGI hardware :
o with the SGI Audio library driver.
o with the EsounD driver.
- Sun IPX, SparcStation (4,5,10,20), UltraSparc (5,30) running Solaris 2.5,
2.5.1 and 2.6, with the Solaris audio driver.
- OS/2 3.0 and 4.0 :
o with the MMPM/2 drivers.
o with the DART driver when supported.
The following platforms were supported in the past, but the latest versions
couldn't be tested on such machines :
- DEC Alpha running OSF/1 with the AudioFile driver
- IBM RS/6000 running AIX 3
If your favorite system is not supported, please drop me a note and I'll
see what I can do for you.
ALSA DRIVER SPECIFIC INFORMATION
--------------------------------
The Advanced Linux Sound Architecture (ALSA) project aims to provide
better sound facilities than the current OSS drivers. Although it is
still in beta, it appears to be very stable and very easy to program
compared to the OSS.
Besides, it works much better than OSS for Gravis-type soundcards.
You can find more information on ALSA on the web :
http://alsa.jcu.cz
The Advanced Linux Sound Architecture (ALSA) is still in beta, and may
change slightly until it reaches the 1.0 release. Thus, this libmikmod
version might not work with future versions of ALSA.
The version of the libmikmod ALSA driver coincides with the latest ALSA
release available when this version of libmikmod was released ; for the
3.1.6 release, these are alsa driver v0.3.0-pre4 and alsa C library
v0.3.0-pre4.
If the sound comes out jerky, you can use the environment variable
MM_NUMFRAGS to tweak the ALSA driver settings. The default value (if this
variable is not set) is 4 ; the slower your machine is, the greater this
value has to be, but the allowed range is 2 to 16. However, the ALSA
generally finds good settings for your configuration, so I doubt you'll
have to use this variable.
ENLIGHTENED SOUND DAEMON SPECIFIC INFORMATION
---------------------------------------------
The Enlightened Sound Daemon (EsounD) is still experimental and may
change a lot until it reaches the 1.0 release. Thus, this libmikmod version
might not work with future versions of EsounD.
You can find more information on EsounD on the web :
http://www.tux.org/~ricdude/EsounD.html
The version of the libmikmod EsounD driver coincides with the latest EsounD
release available when this version of libmikmod was released ; for the 3.1.6
release, this is EsounD v0.2.8, but libmikmod should work with any 0.2.x
version, although the latest version is recommended.
If the esd daemon dies, libmikmod will try to reconnect every 5 seconds and
every new module, if a module ends. So, you can safely restart esd and
wait 5 seconds, and voila ! Sound is back...
If you run esd and a libmikmod application on the same machine, everything
should work fine. However, if there is a real network connection,
synchronization problems can occur.
If sound clicks or gets chopped, then you've likely got a synchronization
problem. Pausing the player for a second should cause the problem to
disappear. If there's still problems, perhaps your network is not fast
enough. Lowering the playback rate will hopefully solve the problem.
Also, the performance of the esd is really abominable if the esd playback
frequency can't be divided by the libmikmod playback rate. For example,
runinng a libmikmod application at 42000 Hz with esd at 44100 Hz will sound
horrible, and take a lot of CPU time due to resampling.
SGI DRIVER SPECIFIC INFORMATION
-------------------------------
The SGI audio driver was written by Stephan Kanthak in 1996 and its author
grants to distribute it with the libmikmod package under the same restrictions
as the library.
The SGI audio driver supports two environment variables:
MM_SGI_FRAGSIZE - sets size of audio buffer of the libmikmod library
MM_SGI_BUFSIZE - sets size of audio buffer in audio library
If you encounter any problems concerning crackles or short stops while
playing, feel free to experiment with the values of these variables. The
default values are 20000 for MM_SGI_FRAGSIZE and 40000 for MM_SGI_BUFSIZE.
Increasing MM_SGI_BUFSIZE might result in nonstop sound on slow machines,
but increases latency of interactive applications. MM_SGI_FRAGSIZE should
be set to about half of MM_SGI_BUFSIZE in most cases and needs to be
increased if you own a very slow SGI.
Note that you need to set the variables by setenv (tcsh) or export (bash)!
Common problems
- libmikmod does not compile on my SGI?
First check out whether you have the SGI audio library (libaudio) or not.
If the audio library is missing you should upgrade to IRIX 5.3 or newer
and you will obtain the media development package automatically with it.
If you own the audio library check out if it is in the linker path.
- Sound is _very_ noisy?
Change sample size to 16 bits.
- Sound crackles or stops temporarily?
Try to increase the value of the environment variable MM_SGI_FRAGSIZE.
Default is 20000. Switch to mono mode if necessary.
- libmikmod applications only react very slowly?
This is a typical effect on SGI machines because the audio library sets
up an internal buffer that seems to be quiet large on many installations.
Try to decrease MM_SGI_BUFSIZE. Default is 40000.
How to contact the driver author
Stephan Kanthak
e-mail: kanthak@i6.informatik.rwth-aachen.de
SUNOS, SOLARIS, NETBSD AND OPENBSD DRIVER SPECIFIC INFORMATION
--------------------------------------------------------------
The above mentioned Unices use the same interface to the audio device. The
libmikmod driver for this interface is the Sun driver. It was coded by Valtteri
Vuorikoski <vuori@sci.fi> and updated to libmikmod 3 by Tor Norbye
<tor@cs.stanford.edu>, and has been modified to work under NetBSD and OpenBSD
by the current maintainer.
This driver works with old sound hardware using 8 KHz mono ulaw, and with
modern hardware using pcm mono or stereo at any frequency. If your settings
aren't supported by the audio device, sound initialization will fail. Refer
to the audio(7) man page under SunOS/Solaris and the audio(4) man page under
NetBSD/OpenBSD for more details on your audio hardware and its capabilities.
On Sun workstations, you might be interested in using the --enable-headphone
switch to configure to force output on the headphones, since plugging the
headphones is not enough.
If you can't get libmikmod to work with your hardware, you can use its raw disk
writer driver, in 8 bit mono 8 kHz, and send the music.raw file to /dev/audio
with sox, using the following command line :
sox -t raw -c 1 -r 8000 -u -b music.raw -t raw -U -r 8000 -c 1 -b /dev/audio
Or if you played in 16 bit stereo, you can convert the file to a .au file :
audioconvert -o music.au -f sun \
-i rate=44.1k,channels=stereo,encoding=linear16 music.raw
and play the file :
audioplay -p headphone -v 10 music.au
Legal notes
Parts of the Sun driver have their roots in the SOX package by Lance Norskog
and Jef Poskanzer, which include the following license :
Sound Tools may be used for any purpose. Source distributions must include
the copyright notices. Binary distributions must include acknowledgements
to the creators.
The files I wrote are copyright Lance Norskog.
The contributed files are copyright by their respective authors.
** Copyright (C) 1989 by Jef Poskanzer.
**
** Permission to use, copy, modify, and distribute this software and its
** documentation for any purpose and without fee is hereby granted, provided
** that the above copyright notice appear in all copies and that both that
** copyright notice and this permission notice appear in supporting
** documentation. This software is provided "as is" without express or
** implied warranty.
Fix to load_xm.c to play correctly on big-endian machines by
Sebastiaan A. Megens <samegens@xs4all.nl>.
Tighter integration with the rest of the Unix mikmod package by
Steve McIntyre <stevem@chiark.greenend.org.uk>.
THANKS
------
I would like to thank everyone who contributed to libmikmod. Their names
are in the AUTHORS file. Thanks a lot !
LICENSE
-------
The libmikmod sound library is covered by the GNU Library General Public
License, which you can find in COPYING.LIB.
CONTACT INFO
------------
Please send all your libmikmod related e-mail to me, at :
miodrag@multimania.com
libmikmod home page is located at :
http://www.multimania.com/miodrag/mikmod
Latest releases of libmikmod can be found on the official homepage, as
well as on
ftp://metalab.unc.edu/pub/Linux/apps/sound/libs
and all metalab (formerly known as sunsite) mirrors.
I hope you'll enjoy using this version of libmikmod as well as I enjoyed
debugging and improving it. Yes, really, I enjoy debugging coredumps... at
least when gdb works...
-- Miodrag ("Miod") Vallat, 03/24/1999
miodrag@multimania.com
|