MikMod homepage (original) (raw)
What is MikMod?|News|Features|Screenshots|License|Files|Version Control|Documentation|Mailing list|Ports and other versions|Where to get music
Mikmod is a module player and library supporting many formats, including mod, s3m, it, and xm. Originally a player for MS-DOS, MikMod has been ported to other platforms, such as Unix, Macintosh, BeOS, and Java(!!)
Mikmod main authors are Jean-Paul Mikkers (MikMak), Jake Stine (Air Richter) and Frank Loemker. Steve McIntyre was the first Unix maintainer, followed by Peter Amstutz, Miodrag Vallat and finally Raphaël Assénat.
Unfortunately, since Raphaël Assénat did not have enough free time to work on MikMod those days, releases somewhat came to an halt. This is why he handed the baton to Shlomi Fish in order to add new features, fix bugs and bring the project further. As of September 2013, Shlomi handed the baton to Ozkanas the maintainer for the project.
- Fixed lots of possible crashes in the IT, XM, S3M, STM, STX, AMF, IMF, GDM and MED module loaders.
- Fixed a possible endless loop in the IT loader with malformed files.
- Fixed signed integer overflow leading to crashes in the sample loader.
- Fixed a possible crash in MMCMP depacker with malformed files.
- Fixed the broken fixed-line comment reader which might possibly lead to crashes, and also badly translated several song messages. The new code is adapted from libopenmpt.
- Support for building the Windows version using Open Watcom compiler.
- A few minor OS/2 fixes.
- CMake updates.
- Other minor fixes/tidy-ups.
Thanks to:
Lionel Debroux, for providing fuzz files which helped finding defects.
Johannes Schultz (sagamusix), for allowing us to use a piece of code from libopenmpt.
Fixed several warnings from clang static analyzer.
Fixed a misleading indentation warning from gcc6.
A few minor OS/2 fixes.
Support for building the Windows version using Open Watcom compiler.
Other minor fix/tidy-ups.
Fixed lots of possible crashes in the IT, XM, S3M, STM, STX, AMF, IMF, GDM and MED module loaders.
Fixed a possible endless loop in the IT loader with malformed files.
Fixed signed integer overflow leading to crashes in the sample loader.
Fixed the broken fixed-line comment reader which might possibly lead to crashes, and also badly translated several song messages. The new code is adapted from libopenmpt.
Support for building the Windows version using Open Watcom compiler.
A few minor OS/2 fixes.
Other minor fixes/tidy-ups.
Thanks to:
Lionel Debroux, for providing fuzz files which helped finding defects.
Johannes Schultz (sagamusix), for allowing us to use a piece of code from libopenmpt.
Fixed windows builds when UNICODE is defined. (Thanks S. Michel).
Fixed windows builds when UNICODE is defined. (Thanks S. Michel).
RAW file writer: Changed to use ansi stdio functions instead of posix unistd, for better portability.
Playercode: Allocate the right channel reverb buffers only if the mixer is setup for stereo mode. (Helps with ports to memory-tight platforms. Patch from Andrew Rossignol.)
Added a configuration option to exclude the hqmixer (off by default.)
Using locale-insensitive ctype.h and casecmp functions in library.
Configury: New --disable-alldrv option to disable all of the audio output drivers. If additional --enable-xxx options are given, the specified drivers will be enabled.
Other minor tidy-ups.
Amiga, AHI driver: Fixed a crash upon driver shutdown.
Amiga: Updates. Added standalone makefiles with cross-build support.
RAW file writer: Changed to use ansi stdio functions instead of posix unistd, for better portability.
Playercode: Allocate the right channel reverb buffers only if the mixer is setup for stereo mode. (Helps with ports to memory-tight platforms. Patch from Andrew Rossignol.)
Fixed access to uninitialized memory in the simpleplayMEM example program.
Added a configuration option to exclude the hqmixer (off by default.)
Using locale-insensitive ctype.h and casecmp functions in library.
Configury: New --disable-alldrv option to disable all of the audio output drivers. If additional --enable-xxx options are given, the specified drivers will be enabled.
Handle the FastTracker2 pattern loop (E60) bug. Modules abusing this bug (roadblas.xm) should play correctly now. Thanks to Eugene Toder.
AMF loader: Fixed segmentation fault in case of bad sample offsets in broken files. (sf.net bug #26, thanks to 'Saga' of OpenMPT project for the report and analysis.)
AMF loader: Fixed loading of v10 files where sample loop start and end values should be read as 32 bits, not 16 bits. (tested with Maelcum's "the tribal zone" and "the way its gonna b". noticed in OpenMPT source)
Fixed a possible undefined behavior in the XM loader.
Support for MMCMP, Amiga PP20 (PowerPack), STC (Stone Cracker S404) and XPK compressed module formats, based on public domain code from libmodplug and libxmp.
Support for OpenBSD sndio.
Fixed SDL output driver, so that it doesn't crash upon resetting.
Disabled the gt2 loader until it is completed properly. (It has been always non-functional since its introduction in v3.2.0.)
Updated configury. The aix, hpux, bsd/sunaudio and sgi audio drivers are now configurable and not built unconditionally. Haiku support thanks to Jérôme Duval.
Documentation update.
Update DOS build for the new djgpp-2.05 release.
Minor fix/tidy-ups.
Documentation update.
Update DOS build for the new djgpp-2.05 release.
Handle the FastTracker2 pattern loop (E60) bug. Modules abusing this bug (roadblas.xm) should play correctly now. Thanks to Eugene Toder.
AMF loader: Fixed segmentation fault in case of bad sample offsets in broken files. (sf.net bug #26, thanks to 'Saga' of OpenMPT project for the report and analysis.)
AMF loader: Fixed loading of v10 files where sample loop start and end values should be read as 32 bits, not 16 bits. (tested with Maelcum's "the tribal zone" and "the way its gonna b". noticed in OpenMPT source)
Fixed a possible undefined behavior in the XM loader.
Support for OpenBSD sndio.
Updated configury. The aix, hpux, bsd/sunaudio and sgi audio drivers are now configurable and not built unconditionally. Haiku support thanks to Jérôme Duval.
Documentation update.
Minor fix/tidy-ups.
Android support, thanks to Radovan Cervenka, with the OpenSL ES driver adapted from the old libmikmod-android project.
Support for AmigaOS and its variants like MorphOS, AROS, and a new AHI driver thanks to Szilárd Biró.
Build system configuration and packaging simplifications, tidy-ups.
Several portability tweaks.
New PSP driver. (untested. suggested by Jon Daniel, based on older ports from pspdev.)
Fix some OS/2 bit rot. (for nostalgia...)
Fix curses linkage on some setups. (add -ltinfo if necessary.)
Windows version now relies on %USERPROFILE% instead of %HOME% for its config and playlist.
The dos version doesn't check %HOME% anymore and simply uses C: for its config and playlist.
Support for AmigaOS and its variants like MorphOS, AROS. (thanks to Szilard Biro for lots of help.)
Build system configuration and packaging simplifications, tidy-ups.
Configury: fix link tests for older binutils.
Cmake updates and improvements. Several makefile clean-ups.
Several portability tweaks.
Fix some OS/2 bit rot. (for nostalgia...)
Removed ancient convert_playlist script which used to supposed to convert pre-ancient mikmod playlists. Documentation updates.
Build system configuration and packaging simplifications, tidy-ups.
Several portability tweaks.
Fix some os/2 bit rot. (for nostalgia...)
UMX loader: Minor corrections to the container parse code with relation to upkg file format. (for correctness' sake only...)
ALSA and ESD drivers: Fixed a dlopen() issue.
PulseAudio driver: Simplified its command line parser procedure, so that it always sets server and sink to some value, NULL or otherwise, and fix a very minor memory leak on some occasions.
Configury, OSS driver: Removed useless check for /dev/sndstat presence, added <soundcard.h> check to cover all our bases for less common setups.
Configury, NAS driver: Use the configury detected X header and library locations when necessary, not just hardcoded /usr/X11R6/.
Several configury and makefile clean-ups.
Added Dreamcast driver from the old 3.2.0b2 dreamcast.es port.
ALSA and ESD drivers: Fixed a dlopen() issue.
Configury, OSS driver: Removed useless check for /dev/sndstat presence, added <soundcard.h> check to cover all our bases for less common setups.
Several configury and makefile clean-ups.
New PulseAudio driver for audio output, using pa_simple_* api.
Improved ALSA driver.
mikmod.texi: Fixed document generation using newer texinfo.
Updates and fixes to configury (autotools) and to cmake support. Cmake support covers more targets and options now.
Made the aiff, wav and raw file writer drivers configurable: the library can be configured and compiled without any audio output drivers if so required, except for drv_nos ('nosound') of course.
DOS (djgpp): fixed the sound blaster SB16 driver.
Fixed a few potential sources of crash, several code clean-ups.
Minor compilation fixes against ancient software versions.
Merged an updated gp32 driver (it is still an untested driver...)
Improved ALSA driver.
mikmod.texi: Fixed document generation using newer texinfo.
Updates and fixes to configury (autotools).
Made the wav and raw file writer drivers configurable: the library can be configured and compiled without any audio output drivers if so required, except for drv_nos ('nosound') of course.
Minor compilation fixes against ancient software versions.
Backported pkg-config file and rpm spec file from HEAD branch.
New CMake build system.
Small autotols updates.
Fix configury $datadir variable expansion in PACKAGE_DATA_DIR.
Fix ALSA driver options menu for libmikmod2 versions >= 3.1.13.
Fix compilation against ancient libmikmod1 versions <= 3.1.6.
Several code clean-ups.
libmikmod.m4: fixed so that it works with C++ compilers.
cmake: fixed a cpack version number issue.
Fix CVE-2006-3879 (Secunia 21196) for Graoumf tracker (gt2) loader. (the loader is non-functional yet but the issue was there.)
Fix memory leaks in the Graoumf tracker (gt2) loader.
UMX loader: Support umx music files from Unreal 1997/98 beta version.
S3M loader: Enforce the 64000 bytes sample length limit, which has been in effect since libmikmod-v3.1.10, only for tracker id 1, i.e. only if setting the S3MIT_SCREAM flag during track conversion. Fixes playback of some rare brokenly prepared files - e.g. Arena2.umx from the unreal game community add-on level decyberduel.
ULT loader: Fix version array size (was 1 less then its initializer.)
ESD driver: Fix signature for esd_playstream function pointer (const)
ALSA driver: Remove unused function pointers.
The library is compilable using C++ compilers.
libmikmod.m4: fixed so that it works with C++ compilers.
S3M loader: Enforce the 64000 bytes sample length limit, which has been in effect since libmikmod-v3.1.10, only for tracker id 1, i.e. only if setting the S3MIT_SCREAM flag during track conversion.
ULT loader: Fix version array size (was 1 less then its initializer.)
ESD driver: Fix signature for esd_playstream function pointer (const)
ALSA driver: Remove unused function pointers.
New loader to load modules contained in UMX files from games like Unreal, DeusEx, etc. (Developers: custom MREADER implementations must respect the 'iobase' field for umx loading to work for them. see the splayMEM example app source.)
AIFF file writer now silently ignores and clears float output mode.
Fixed a small memory leak in samples freeing (thanks to S. Michel.)
Fixed calling the previous position while at position 0 resulting in an invalid read. (noticed while running mikmod under valgrind.)
Memory reader now fills the available bytes to destination buffer when a short read is happening, while still returning false.
Memory reader now respects the iobase value of the reader struct. (doesn't change normal behavior, but may help with new features.)
Updated simpleplayMEM example application.
Fix return types for MREADER->Seek and MWRITER->Put to be int, and not BOOL. (identical functionality but non-misleading.)
Documentation fixes with relation to free()/MikMod_free().
Marked the SIMD (SSE2/AltiVec) option as unstable in the makefiles and configury/cmake: not recommended until it is fixed properly.
Provided new Visual Studio 6 and Visual Studio 2005 project files. The latter imports into newer Visual Studio versions, e.g. VS2012.
Fixed some driver version signatures which I missed changing in the previous release. (cosmetic change.)
Addressed some snprintf issues and MSVC6 compilation issues.
New MSVC6 and VS2005 project files. The latter imports into newer Visual Studio versions, e.g. VS2012.
Use MikMod_free() on the string returned by Player_LoadTitle() if it is available.
Fixed some compiler warnings, minor cleanups.
Fixed a small memory leak in samples freeing (thanks to S. Michel.)
Fixed calling the previous position while at position 0 resulting in an invalid read. (noticed while running mikmod under valgrind.)
Fix return types for MREADER->Seek and MWRITER->Put to be int, and not BOOL. (identical functionality but non-misleading.)
Provided new Visual Studio 6 and Visual Studio 2005 project files. The latter imports into newer Visual Studio versions, e.g. VS2012.
Oct. 05 2013: libmikmod-3.3.2 (final) is released:
This is a serious bug fix release after the previous 3.2.0 series, with additional new features. All who are using libmikmod-3.2.0 (or the interim 3.3.1-beta) must upgrade to the new libmikmod-3.3.2 version.
Download from here:
http://sourceforge.net/projects/mikmod/files/libmikmod/3.3.2/
Here is the ChangeLog:
NEW FEATURES
- New CMake build system.
- Updated configury, support for cross-compilation, support for building in a separate directory, support latest autotools.
- New SDL driver - works both with SDL-1.2.x and with SDL2, supports floating point output if compiled against SDL2.
- New OpenAL driver, originally suggested by 'kervala', with fixes and updates and with floating point output support.
- The multi-platform SDL and OpenAL drivers, if they are compiled, have priority over OS-specific hw drivers for MikMod_RegisterAllDrivers().
- New windows xaudio2 driver, originally suggested by 'honza.c', with updates, xaudio2.8 support and with floating point output support.
- ALSA driver now supports only the contemporary ALSA 1.0.x versions. All of the ancient ALSA 0.3.x-0.4.x code were removed.
- Floating point output mode support for ALSA, OSS, Direct Sound, WinMM drivers and for WAV file writer.
- The pipe and stdout drivers are now configurable
- Raw file-writer now has the lowest priority among the file-writers.
- GCC elf and macho symbol visibility attributes now supported.
- Windows: dllexport/dllimport attributes work properly for MinGW[-w64], as well as windows compilers. Static builds using MSVC, LCC, etc are now named mikmod_static.lib. When compiling against static libmikmod, MIKMOD_STATIC should be defined so that dllimport wouldn't be assumed.
BUGFIXES
ALSA fixes from Fedora.
ALSA fixes for "Write error: File descriptor in bad state" crashes, e.g. RedHat bug #915121. Now works stable.
ESD (esound) updates from Fedora. Add esd back to configury which was removed in 3.2.0b3, now requiring >= 0.2.18.
Minor OSS fixes.
The NAS driver now actually compiles.
64 bit detection fixes.
Fix BOOL type use all over the source.
Several const correctness fixes.
Fixes for CVE-2007-6720 and CVE-2009-0179.
mmio: memreader fixes and updates.
Fixes for access violations introduced in 3.2.0b3.
Fixes for broken memory allocation wrappers introduced in 3.2.0b3.
Fix MikMod_strerror() might read beyond end of a static array.
Fix looping volume in Player_SetVolume(), based on an old patch by Yi-Huang Han.
XM loader now reads songlength amount of orders from the file and then seeks to mh->headersize+60 (sf.net bug #10.)
Fix "unclick" code to consider loop lengths shorter than 16: fixes crashes seen with several xm files (sf.net bug #12, mpd bug #3425.)
Mac OS X: new standalone makefile with cross-compilation support.
DJGPP build fixes.
Windows: fixes/updates, win64 fully supported. MinGW[-w64] fully supported along with MSVC and LCC. new standalone MinGW makefile with cross-compilation support.
SIMD (AltiVec and SSE2) option is now disabled by default. Can be enabled by --enable-simd configury option, similarly with cmake. (the standalone makefiles or project files are added instructions on how to enable the feature if required.)
Many compiler warning fixes, other small cleanups.
Made MikMod compilable against older versions of libmikmod without MikMod_Free().
Fixed a minor buffer overrun (sf.net bug #2).
Fixed a minor string format issue.
Updated configury to support latest autotools.
Fixed djgpp builds.
Fixed windows mingw builds, proper win64 support.
BUGFIXES backported from the HEAD branch:
- 64 bit detection fixes.
- Fixes for CVE-2007-6720, CVE-2009-0179, CVE-2009-3995, CVE-2010-2546.
- Fix MikMod_strerror() might read beyond end of a static array.
- Fix looping volume in Player_SetVolume(), based on an old patch by Yi-Huang Han.
- Fix "unclick" code to consider loop lengths shorter than 16: fixes crashes seen with several xm files (sf.net bug #12, mpd bug #3425.)
- XM loader now reads songlength amount of orders from the file and then seeks to mh->headersize+60 (sf.net bug #10.)
- A double driver registration fix.
- MikMod_InfoDriver and MikMod_InfoLoader list print fixes.
- Fix a possible crash on accessing the samples menu in mikmod.
- Fix wav file writer for big endian platforms.
- Fix wav file writer to output a correct rifflength in header.
CLEANUPS backported from the HEAD branch:
- Updated configury, proper support for cross-compilation, support for building in a separate directory, support latest autotools.
- Fix BOOL type use all over the source.
- Multiple compiler warning fixes, other small cleanups.
PLATFORM SPECIFIC stuff backported from the HEAD branch:
- Linux: backport ALSA driver from HEAD branch to support contemporary ALSA versions.
- Unix: ESD driver updates from Fedora, now require >= 0.2.18.
- Unix: minor OSS fixes.
- Windows: fixes/updates, win64 fully supported. MinGW[-w64] fully supported along with MSVC and LCC. new standalone MinGW makefile with cross-compilation support.
- Windows: dllexport/dllimport attributes work properly for MinGW[-w64], as well as windows compilers. Static builds using MSVC, LCC, etc are now named mikmod_static.lib. When compiling against static libmikmod, MIKMOD_STATIC should be defined so that dllimport wouldn't be assumed.
- GCC elf and macho symbol visibility attributes now supported.
- Linux: the old Alsa-0.3.x/0.4.x driver is now retired. the source is still in the drivers directory but not tested, nor will be maintained any more.
- Linux: the old sam9407 and ultra drivers haven't been maintained for quite some time and they now default to disabled in the configury. the ultra driver had got an update in the 3.2.0 releases, which won't be back merged.
- Misc: the pipe and stdout drivers are now configurable.
**Sep. 28 2013:**The MikMod home page is now setup here at sourceforge: http://mikmod.sourceforge.net/
- Support for the following modules formats:
669 (Composer 669, Unis 669), AMF (DSMI Advanced Module Format),AMF (ASYLUM Music Format V1.0), APUN (APlayer),DSM (DSIK internal format), FAR (Farandole Composer),GDM (General DigiMusic), IT (Impulse Tracker),IMF (Imago Orpheus), MOD (15 and 31 instruments),MED (OctaMED), MTM (MultiTracker Module editor),OKT (Amiga Oktalyzer), S3M (Scream Tracker 3),STM (Scream Tracker), STX (Scream Tracker Music Interface Kit),ULT (UltraTracker), UNI (MikMod), XM (FastTracker 2) - Can play files in archives formats: zip, lha, lzh, zoo, rar, gz, bz2, tar, tar.gz and tar.bz2
- Curses player interface. With optional color and themes.
- Playlist support.
- Configuration file.
- Works on most Unixes and win32
Releases here are source only.
For previous releases, visit theprevious releases page.
Filename | Released | Description | Size |
---|---|---|---|
Player (Mikmod) | |||
mikmod-3.2.8.tar.gz | 14 June 2017 | New color interface by Andrew Zabolotny, with themes (built-in editor), file selector, recursive directory scanning, threaded player. If built with libmikmod3, samples and instrument panels are dynamic, and there is a new volume bar panel. Proper win64 support. New CMake build system. Several bug fixes. See the NEWS file for more details. | Checksums: 01478623b273d7d2e2c6e45c1c478533 - MD5 dbb01bc36797ce25ffcab2b3bf625537b85b42534344e1808236ca612fbaa4cc - SHA-256 |
Library (libmikmod) | |||
libmikmod-3.3.11.1.tar.gz | 20 June 2017 | Latest version of libmikmod3: Fixes several bugs, plugs several security holes, etc. See the NEWS file for details. | Checksums: f69d7dd06d307e888f466fc27f4f680b - MD5 ad9d64dfc8f83684876419ea7cd4ff4a41d8bcd8c23ef37ecb3a200a16b46d19 - SHA-256 |
libmikmod-3.1.21.1.tar.gz | 20 June 2017 | Latest libmikmod2 release. Fixes several bugs, plugs several security holes, backports a new improved ALSA driver, etc., to keep the 3.1.x series up to date. See the NEWS file for more details. | Checksums: 8af05b19c967d6ed33471df1f7e023a5 - MD5 1a88922b5a67c308899c1d991ddfb62b5d851f8a94175612b33856854938b2fb - SHA-256 |
All current and previous releases can also be downloaded from here:
http://sourceforge.net/projects/mikmod/files/
libmikmod and mikmod's sources are available from itsnew Git repository (based on the new SourceForge interface). In order to checkout the sources by cloning the repository, use the following command:
git clone git://git.code.sf.net/p/mikmod/mikmod.git mikmod-git