Summary of changes between libmikmod 3.3.11 and libmikmod 3.3.12:
========================================================================

libmikmod v3.3.12 was released on Dec. 31, 2024.

- Add WebAudio support (see webaudio/README.md for details.)
- Dynamically load pulseaudio library at runtime.
- New configuration option to exclude module depackers (off by default.)
- Fix high cpu usage in ALSA output driver (reported by David Lindsay.)
- Add WinMM driver (drv_win) command line options for buffer size and
  count (github bug #29, PR #30.)
- Merge vibrato tables/math, fix tremolo ramp down, fix IT vibrato.
  (github PR #28.)
- Fix XM fine volume slide effects (was broken between libmikmod-3.1.6
  and 3.1.7 - github PR #20.)
- Changed XM effect L to behave correctly (e.g. Graff/ant attack.xm or
  villgust.xm - github PR #56.)
- Implement MODPlugin ADPCM4 support (github PR #57 and #61.)
- Fix playback of Impulse Tracker modules with more than 99 instruments
  (e.g. many MPT-created ITs -- github bug #33.)
- Fix MOD retrigger (E9x) effect bug that would cause it to always
  retrigger on tick 1. (github bug #21, PR #22.)
- Fix handling of FAR pattern break byte (github bug #5.)
- Add support for Mod's Grave WOW files to MOD loader (github bug #7.)
- Detect more MOD variants: TDZ#, FA04/6/8, LARD, NSMS (github PR #59.)
- Check M&K! and CD61 signatures in Octalyser modules (github PR #12.)
- Don't load STM samples with volume==0, fix sample offset calculation
  (github bug #6.)
- Fix volume event handling for FAR modules. (github PR #14.)
- Multiple fixes to FAR modules: (github PR #37)
  * Fix player to handle empty patterns.
  * Handle invalid pattern numbers in position list.
  * Add support for effect 1 and 2 (porta slide up/down).
  * Implement effect 3 (tone porta) the right way.
  * Play with the real tempos.
  * Support for effects D and E (fine tempo up/down).
  * Fix effect 6 (vibrato).
  * Fix effect 4 (retrigger) by adding a new effect.
  * Fix bug in the sample loader when loading 16-bit samples.
  * Support for restart position.
- Fix GDM empty notes, fine volslide/portamento, and sample volume.
  (github PR #15.)
- Fix GDM set pan position effect. (github PR #27.)
- Fix MED 9xx command in tempo mode and various BPM mode bugs (github
  bug #17).
- Implement missing OctaMED effects and fix several other MED effects
  (github bug #19, PR #23.)
- Add support for MED song/instrument transpose and octave wrapping.
  (github bug #24, PR #25.)
- Use more accurate BPM values for 8-channel mode tempos in OctaMed
  loader (github PR #26)
- Allow speed values of 128-255 for S3M/IT/DSMI/GDM/IMF (github PR #42,
  also see github PR #35.)
- Multiple fixes to DSMI AMF loader. (github PR #36)
- Support for version 8, 9, and older AMF 1.0 modules (github PR #51.)
- Fix note tuning for 669 modules. (github PR #16.)
- Fix sample loop-end for 669 modules. (See e.g. in 'Lost in Germany',
  github PR #34.)
- Fix UltraTracker sample speed calculation. (e.g. 'Break the beat.ult'
  now plays correctly. github PR #40.)
- Fix UltraTracker portamento to note (github PR #40.)
- Fix STM blank patterns handling. (github bug #9, PR #55.)
- Fix sample loop and detection for invalid values in Scream Tracker 2
  loader. (e.g. N.S. Beat.stm and Batman.stm. github PR #38.)
- Fix unimod version 4 sample flags. (e.g.: 'hundrapporten!' and
  'mulla on porkkanaa' modules now play correctly. github bug #47.)
- Fix unimod version 5 sample flag at bit 6 to be SF_OWNPAN (github
  bug #47.)
- Fix ASYLUM Music Format restart byte (github PR #58.)
- DoPTEffectB, DoPTEffectD: bounds-check the jump target.
- StartEnvelope: workaround invalid envelopes with 0 pts.
- Sanity-check against bad effects in Asylum loader.
- Sanity-check that position values can't be higher than patterns in
  several loaders.
- Fix access to uninitialized memory in M15, IT, STM and STMIK loaders
  in case of short files.
- Fix access to uninitialized memory elsewhere in code (github bug #67.)
- Refuse zero instrument and pattern numbers in STMIK loader.
- Revise sanity checks and add boundary checks in UMX loader.
- Remove bogus lastnote handling from ConvertNote() in Aylum loader.
  (github bug #49).
- Fix inverted argument fed to UniExpand in UniNewline (github bug #43).
- Fix off-by-one source buffer boundary check in PP20 depacker.
- Fix misaligned pointers in XPK depacker checksum routine.
- Add missing sanity check for vebatim block in unsqsh (xpk) depacker.
- Fix shifts by invalid exponents in S404 depacker.
- Add best case compression ratio bounding to S404 depacker.
- Improved sanity checks in S404 depacker to prevent out-of-bound reads.
- Updated macOS CoreAudio output driver (based on xmp player.)
- Added Nintendo64 output driver -- based on old work by 'dragonminded'.
- The library is free of libm dependency.
- Multiple other cleanups throughout the code.
- Several build and portability fixes/updates.
- Removed support for lcc-win32 compiler.

Thanks to:
- Lionel Debroux, for providing fuzz files which helped finding defects.
- Alice Rowan, for providing DSMI AMF, FAR, GDM, IT, STM, and many other
  loader fixes.
- Thomas Neumann, for providing 669, DSMI AMF, STM, UNI and other loader
  fixes.
- Carlos Rafael Gimenes das Neves for WebAudio support.
- Victor Vieux, for providing and testing the N64 driver.


Summary of changes between libmikmod 3.3.10 and libmikmod 3.3.11:
========================================================================

libmikmod v3.3.11 was released on June 14, 2017.

- 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.


Summary of changes between libmikmod 3.3.9 and libmikmod 3.3.10:
========================================================================

libmikmod v3.3.10 was released on 31-Aug-2016.

- Fixed windows builds when UNICODE is defined. (Thanks S. Michel).


Summary of changes between libmikmod 3.3.8 and libmikmod 3.3.9:
========================================================================

libmikmod v3.3.9 was released on 12-Aug-2016.

- 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.


Summary of changes between libmikmod 3.3.7 and libmikmod 3.3.8:
========================================================================

libmikmod v3.3.8 was released on 15-Nov-2015.

- 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 must 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.


Summary of changes between libmikmod 3.3.6 and libmikmod 3.3.7:
========================================================================

libmikmod v3.3.7 was released on 31-Aug-2014.

- 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...)


Summary of changes between libmikmod 3.3.5 and libmikmod 3.3.6:
========================================================================

libmikmod v3.3.6 was released on 20-Mar-2014.

- 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.


Summary of changes between libmikmod 3.3.4 and libmikmod 3.3.5:
========================================================================

libmikmod v3.3.5 was released on 10-Jan-2014.
This is a minor bugfix / maintenance release.

- 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...)


Summary of changes between libmikmod 3.3.3 and libmikmod 3.3.4:
========================================================================

libmikmod 3.3.4 was released on 08-Dec-2013.

- 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.


Summary of changes between libmikmod 3.3.2 and libmikmod 3.3.3:
========================================================================

libmikmod 3.3.3 was released on 15-Oct-2013.
This is a bug fix/maintenance release, with a new umx loader as the
new feature.

- 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.)


Summary of changes between libmikmod 3.2.0 and libmikmod 3.3.2:
========================================================================

libmikmod 3.3.2 was released on 05-Oct-2013.

This is a serious bug fix release after the previous 3.2.0 series, with
some 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.

THANKS

- Paul Spark <sparkynz74@gmail.com> for Microsoft Visual C 6.0 fixes.
- Ozkan Sezer: many changes.

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.


Summary of changes between libmikmod 3.1.11 and libmikmod 3.2.0 (Xorigad):
==========================================================================

libmikmod 3.2.0 was released on 01-June-2012.

THANKS

- Axel "awe" Wefers <awe@fruitz-of-dojo.de>, for creating the CoreAudio
  driver, the new AIFF driver, and fixes for the wav output driver.
- Frank Loemker, for sending me his collection of patches for libmikmod.
- Anders F Björklund <afb@algonet.se>, for updates, fixes and tests on
  Mac Platforms and rpm support.
- Ivan Shmakov, for the NAS audio driver.
- Various downstream patch writers (from Mandriva, SuSE, Red Hat/Fedora,
  Debian, etc.)
- P. Martin - the macports maintainer for some patches.
- Stéphan Kochen for two patches: one to change MDRIVER fields to "const",
  and the other with putting variable declarations at the start of block
  (which is more C89 compliant and fixes compilation on Microsoft Visual
  C++).

NEW FEATURES

- MacOS X CoreAudio driver
- Carbon support
- Loader for ASYLUM Music Format v1.0 (.amf) modules, as used in crusader
  games.
- New function 'Player_QueryVoices' added, which is used to return
  dynamic channel information about the module player. (Mikmod 3.2.2 uses
  it for its dynamic panels).
- Mixing with floating point output. The MacOSX CoreAudio driver uses it.
  Thanks goes to Anders F Björklund for implementing this.
- AIFF disk writer driver.
- RPM support. To build a rpm, download the tar.gz, and run this:
   % rpmbuild -tb libmikmod-3.2.0-beta2.tar.gz
- New NAS driver (Network Audio System). Tested with nasd and NCD X
  terminals.
- MREADERs now have an iobase member (previously was a static variable
  in mmio.c). This permits to have many MREADERs with different iobase
  base values.
- Created an example/ subdirectory, to hold programming examples.
- Added functions to read from memory (Player_LoadMem, Sample_LoadMem...)
  and a memory reader in mmio.c
- renamed internal _mm_malloc function to MikMod_malloc, which is now
  part of the API.
- Raw samples can now be loaded using the new Sample_LoadRaw* family of
  functions for sound effects.
- PowerPC 64 support
- ALSA (Advanced Linux Sound Architecture) driver is now working with
  "recent" (actually a few years back) ALSAs.
- Change MDRIVER "char *" fields to "const char *".
    - Thanks to Stéphan Kochen.
- Implement a fix to the ALSA driver in MIKMOD_DYNAMIC mode so it will
  allow linking against libmikmod when "-Wl,--no-undefined" is passed.
    - Reported by Andrey Bondrov from Mandriva.
    - The problem was that we used some snd_... identifiers indirectly in
    some macro expansions.

BUGFIXES

- The sun driver now compiles on solaris (Thanks to Nicolas Gros d'Aillon
  for sending me Jonathan Perkin's fix)
- The wav output driver had problems on big endian systems. Thanks to
  Axel "awe" Wefers for fixing this.
- A warning reported by Stéphane LOEUILLET in libmikmod.m4 with autoconf
  1.8 was fixed.
- The 'card' argument, supported by the OSS driver was not documented via
  the MDRIVER->CmdLineHelp string.
- libmikmod-3.1.11-CVE-2010-2546,2971.diff (from Mandriva/Mageia).
- libmikmod-3.1.11-CVE-2009-3995,3996.diff (from Mandriva/Mageia).
- Now checking for linking against -lm (from Mandriva/Mageia).
- Modified patch of libmikmod-CVE-2009-0179.patch (from Mandriva/Mageia).
- Apply the libmikmod-CVE-2007-6720.patch (from Mandriva/Mageia).
- Implement a fix for sprintf-of-list
    - sprintf(list, "%sSOMETHING", list) does not work as expected and
    suffers from the
    http://en.wikipedia.org/wiki/Schlemiel_the_Painter%27s_algorithm
    syndrome.
- Apply a patch for non-blocking opening of the OSS driver.
  (from Mandriva/Mageia).
- Fixed the prototypes of vc_callback (thanks to P. Martin).
- Cast a vc_callback parameter to "unsigned char *" instead of "char *",
  because the former is what it accepts (thanks to P. Martin).
- Check for Samples' validatity in virtch_common.c (thanks to P. Martin).
- Fix compilation on MSVC.
    - Thanks to Stéphan Kochen.


Summary of changes between libmikmod 3.1.10 and libmikmod 3.1.11 (Thiers):
==========================================================================

libmikmod 3.1.11 was released on 01/21/2004.

This is a small maintenance release. I know there are not many changes,
but since it has been a very long time since the last one, and meanwhile
libmikmod changed maintainer, I think it is justified.

THANKS

- Ingo Saitz, the maintainer of the mikmod packages for debian, for
  bugfixes.
- Frank Loemker, for the lcc-win32 stuff and fixes for the direct sound
  driver.

BUGFIXES

- Playback problems in MODs of length >128. This fixes the file beatwave.mod. Thanks
  to Emmanuel Coirier for pointing this out.
- Applied debian patches:
  - Fix for broken volume fadeouts of IT instruments
  - Fixed configure test for pthread
  - devfs support for Linux OSS

- Makefile for lcc-win32. To compile libmikmod with lcc-win32 a rather new
  version is needed. I currently use version 3.7 compiled on Jan 20 2002.
  A version half a year old did not work. To compile
  - check that you have the lcc bin directory in the PATH
    (and no other compiler bin dirs),
  - change to libmikmod-3.1.11/win32,
  - check Makefile.lcc for any needed changes, and
  - use make -f Makefile.lcc.

- Different fixes for the direct sound driver:
  - Pausing did only work for half of the buffer.
  - Restarting the player did not work as the output thread was removed
    in DS_PlayStop().
  - Removed busy waiting for end of thread.
  - Sound output is started immediately on the first call to DS_Update()
    to be consistent with other non threaded drivers.
  - Different small clean ups.

- In MikMod_Reset() the raw output driver driver did not use the
  filename set via the cmdline.


Summary of changes between libmikmod 3.1.9 and libmikmod 3.1.10 (Arlanc):
=========================================================================

libmikmod 3.1.10 was released on 01/24/2002.

This version is yet another bugfix release. I have more contributions coming,
especially a native MacOS X driver, that will not be present in 3.1.10 but
will be in 3.1.11.


THANKS

- Most of the bugs mentioned below have been squished by ``UFO'',
  Holger Jakob, Thomas Neumann, Mark Page and Juan Linietsky.


BUGFIXES

- Systematic coredumps on library initialization and calls to
  MikMod_InfoDriver have been eliminated. Sorry, and thanks to Shlomi
  Fish for the best fix.

- The fix for spurious effect memory for portamentos in MOD files shouldn't
  have been applied to the ``porta to note'' (effect 3) effect. Fixed in this
  release. In the process, the aforementioned fix was perfected, as it
  broke a few modules by accident.

- IT Panbrello effect with random wave did not work.

- IT Tempo slide (T0x, T1x) was not updated accurately, and the effect memory
  was not implemented. The only tempo slide command which worked accurately
  was T10, which is a no-op (-:

- IT effect SC0 (cut note with no delay) is now correctly interpreted as SC1.

- XM effect 6 (porta + volume slide) didn't have memory.

- ProTracker effect F (change speed or bpm) should now be correctly handled
  when its value is 32, depending on the module type (some formats will use
  it as a speed value, others as a bpm value).

- XM playback stopped when reaching pattern 255 in the order list.

- Corrupted envelopes in XM instruments are detected and some repair is
  attempted.

- Some valid AMF, IMF and IT modules refused to load.

- Fine volume slide effects in volume column of IT modules, when using the
  effect memory (i.e. A0 and B0) were misinterpreted as AF and BF, thus
  causing unwanted large slides.

- Portamento to note effect in volume column of IT modules was not rendered
  correctly.

- S3M files marked as created by ScreamTracker will honour the limit of 64000
  bytes (not 64KB!) for sample length and sample offset effect position.

- Loops in instrument envelopes were processed one tick too fast.

- In-song message in FAR modules were not displayed correctly.

- ProTracker effect E9 (Retrig) was not played correctly.


NEW FEATURES

- Modules which are not panning-aware (not using any panning effects and
  with the tracker's default panning) use a recentered panning, so as to
  sound better with headphones. Suggested by Urpo Lankinen.

- Retrigger and panning effects are now recognized in FAR modules.

- All arpeggio effects are now played in OKT modules.

- FLT8 modules (8 channel StarTrekker) are now recognized and played.


PLATFORM SPECIFIC

- The Windows DirectSound driver has been improved and will use less
  resources during playback.

- The native audio driver for NetBSD and OpenBSD should work better with
  recent versions of these systems, as well as with old sound cards such
  as the SoundBlaster Pro.

- Mac OS X is supported, although no native sound driver is available for
  it yet, thanks to Juha Kaunisto.

- Dynamically loading drivers is now supported on HP-PA systems running
  under HP-UX, as well on systems using the a.out binary file format.



Summary of changes between libmikmod 3.1.8 and libmikmod 3.1.9 (Vorey):
=======================================================================

libmikmod 3.1.9 was released on 02/14/2000.

This version is a bugfix release, and was primarily considered as a public
patch for 3.1.8 (namely, version 3.1.8-a). However, due to the very important
bug fix in XM playback, among other things, it's worth being 3.1.9...


THANKS

- Many thanks to ``UFO'', Thomas Neumann, James Kehl and Vito Caputo for their
  help, code and feedback.

- Special thanks to Gerd Rausch, for writing both the Linux sam9407 driver and
  the associated Mikmod driver. Nice work !

- Thanks to Bastien Nocera for letting me do some tests under Linux/PPC.


BUGFIXES

- Envelopes weren't loaded correctly for IMF and XM modules. In the average
  case, the first envelope point was correct, the remaining half points were
  bogus, and the other half completely random. This fix is definitely worth
  the upgrade.

- In MOD files, effect 0xc (set channel volume) with effect parameter 0xff was
  misplayed as a note cut.

- In MOD files too, effects 0x1, 0x2 and 0x3 (portamentos) with effect
  parameter 0x00 were using the command memory, but these commands do not have
  effect memory for MOD files.

- The Wuzamod check for STM modules wasn't present in 3.1.8, despite what the
  release notes said )-:

- Enabling the envelope (with an effect) for a sample with no associated
  envelope would cause immediate coredumps. Now fixed.

- Panning was ignored in GDM modules.

- Sample rate was incorrect for STM and STX modules.

- Arpeggio memory (for IT modules) was ignored.

- Tempo slide for IT modules was not processed correctly.

- Toggling surround sound didn't have effect until the driver was reset.


NEW FEATURES

- New loader for Amiga Oktalyzer (.OKT) modules.

- UNI loader recognizes recent APlayer modules (.APUN format level 0x104).

- Due to popular request, the function Player_LoadTitleFP() has been added to
  the library.

- Under Unix systems, make targets "check" and "uninstall" have been added.
  However, due to a bug in automake, "make uninstall" will only work correctly
  with the next release of automake (or the current CVS tree).

- New output driver for sam9407-based soundcards under Linux, featuring
  hardware playback.


PLATFORM SPECIFIC

- Support for the latest Linux Ultra driver development versions (2.99) has
  been added. Also, a few bugs in this driver have been fixed.

- The DirectSound driver (win32) shipped with the previous release didn't
  compile. It should now - at least things are better !

- The OSS driver from 3.1.8 didn't work very well with some versions of the
  Linux kernel, as well as under Linux/PPC. The problems should be gone now.
  Also, the OSS driver now handles multi-soundcard configurations.



Summary of changes between libmikmod 3.1.7 and libmikmod 3.1.8 (Tence):
=======================================================================

libmikmod 3.1.8 was released on 10/25/1999.


THANKS

- Many thanks (in no particular order) to Frank Loemker, Bjornar Henden, Joshua
  Shagam, Vito Caputo, Thomas Neumann, Zach Metzinger, and Kevin Langman for
  their help, code and feedback.

- Special thanks to Andrew Zabolotny for his huge work on the OS/2 drivers.
  The rest of your code is not lost, it will go into 3.2...


BUGFIXES (more details can be found in file ``PROBLEMS'')

- IT global volume slide effect was played too fast.

- IT effect S6x (pattern delay for x ticks) was misunderstood as SEx (pattern
  delay for x rows).

- Finetune effect was not handled correctly for some XM modules.

- Software mixer incorrectly produced extra clicks in interpolated mode (fix by
  Frank Loemker).

- Under Unix systems, the piped output driver (drv_pipe), as well as the output
  to file drivers (drv_raw, drv_wav) had security issues if the libmikmod
  application is setuid root.

- Trying to read data from a file, with the data not located at offset 0,
  didn't work correctly since 3.1.5.

- Almost any text file beginning with "if" was considered as a valid module by
  Player_LoadTitle(), yet hopefully rejected when trying to load it.

- AMF effect 4 and variants lacked memory.

- IT modules featuring patterns with less than 32 rows could not be loaded.

- Some samples and effects in APlayer converted modules (.apun) were not played
  correctly.

- Linefeeds in the song message in IT modules weren't loaded correctly.


NEW FEATURES

- IMF effect XE (ignore envelope) implemented.

- Support for uLaw output with the OSS driver, for Linux/sparc.

- Started to modularize semaphore usage when possible. The Player_LoadTitle()
  function can be used while a module is playing without causing a short pause
  in playback.

- STM modules with the Wuzamod signature can now be loaded.

- More ``slightly corrupted'' XM modules can be loaded.


PLATFORM SPECIFIC

- libmikmod 3.1.7 didn't compile out of the box under IRIX (sorry !)

- The EsounD driver didn't compile under Solaris

- Solaris driver forced playback to either headphone or speaker, instead of
  using the current output setting as default. This is now fixed.

- Under SunOS 4, libmikmod should compile with the non-ansi C compiler bundled
  by default.

- The ALSA driver now works with ALSA 0.4.

- The OSS driver should now work with Linux/ppc.

- Under OS/2, the MMPM/2 and DART driver have been almost rewritten by Andrew
  Zabolotny and work much better. And they are now somewhat configurable, too.

- libmikmod 3.1.8 should work as a DLL under win32 environments. And the
  non-directX driver is now registered in MikMod_RegisterAllDrivers().


Summary of changes between libmikmod 3.1.6 and libmikmod 3.1.7 (Sauxillanges):
==============================================================================

libmikmod 3.1.7 was released on 06/28/1999.


THANKS

- Anders Bjoerklund did a terrific job of creating a Macintosh driver !
  I'm proud to add the MacOS to the list of supported systems.

- Bjornar Henden provided a non-directX driver for Windows NT users. This
  makes libmikmod more portable than ever. Thanks a lot !

- Simon Hosie contributed speed optimizations and bug fixes to the software
  mixer. Thanks for your work !

- Timo Taipalus pointed out several severe problems and helped me to get rid
  of them. Thanks for your efforts !


BUGFIXES (more details can be found in file ``PROBLEMS'')

- Very long samples were truncated when played with the normal software
  mixer.

- Invalid notes using non-existent instruments caused the current note to
  be retrigged instead of being ignored.

- Porta to note effects did not restart the sample envelopes.

- Note cut with non empty volume column on the same row resulted in the note
  cut being ignored.

- Disabling/enabling envelopes had no effect.

- 15 instrument modules embedding a ``Music Channel BBS'' ad were rejected.

- Huge (>64Kb) sample offsets were ignored with the hiqh quality mixer.

- Delay note effect was incorrectly converted to pattern jump, and porta to
  note was incorrectly converted to tremor, for GDM modules.

- Dual effect Lxx in S3M and IT was misconverted to L00 (this bug was
  introduced in 3.1.5-beta2, thanks to Timo Taipalus for noticing it)

- Pitch envelope was not played accurately (IT).

- XM modules in format 1.03 couldn't be loaded.

- XM modules with the tracker name empty made the library coredump on some
  platforms.

- Set finetune effect (E5x) wasn't handled correctly for XM modules.

- Fine slides (X1x,X2x) didn't play correctly for XM modules (thanks to Frank
  Loemker for reporting it).

- If the MikMod_InitThreads() function was called more than once, the library
  did not behave correctly.

- Sample loops were not computed correctly for Oktalyzer modules.


NEW FEATURES

- Modules can be played with a speed shift (suggested by Roope Anttinnen).

- MikMod_Init() and MikMod_Reset() have been extended to pass specific
  parameters to the drivers. This makes libmikmod 3.1.7 incompatible with the
  previous versions, but updated libmikmod-based players will be released soon.
  The shared library version has increased (now 2.0). This number scheme is
  going to be as crazy as ncurses' one...


PLATFORM SPECIFIC

- It was not possible to create a multithreaded library on FreeBSD (fix by
  Roope Anttinnen).

- HP-UX driver used to reset mixer settings at initialization.

- Added MacOS support, thanks to Anders Bjoerklund.

- Solaris driver now works on Solaris/Intel edition.



Summary of changes between libmikmod 3.1.5 and libmikmod 3.1.6 (Romegier):
==========================================================================

libmikmod 3.1.6 was released on 03/24/1999.


BUGFIXES

- When the library was built thread-safe, calls to Player_SetPosition
  resulted in a deadlock.

- The OSS driver was too strict and didn't allow OSS to select a different
  playback frequency.

- A volume bug has been removed from the module player (thanks to Thomas
  Neumann for the report).


NEW FEATURES

- Volume ramping has been ported from the high quality mixer to the regular
  mixer, and is enabled when interpolated mixing is requested. You should hear
  less clicks in interpolated mode from now ! (Suggested by Bjornar Henden)

- The UNI loader recognizes APlayer format 1.3 modules.


PLATFORM SPECIFIC

- The NetBSD and OpenBSD driver should work with recent NetBSD and OpenBSD
  versions.

- Some Windows code has been merged. Feedback will be appreciated. Note that,
  as I don't have a windows development system (and no plan to have one in the
  near future), I can't test or debug the Windows part myself.



Summary of changes between libmikmod 3.1.2 and libmikmod 3.1.5 (Pradelles):
===========================================================================

libmikmod 3.1.5 was released on 03/01/1999.


THANKS

- Many thanks to Lutz Roeder and Uwe Thoma, who send me the description of
  the Imago Orpheus file format (IMF), as well as some of Imago's code, which
  made the creation of the IMF loader a pure C exercise (-:

- Many thanks to Claudio Matsuoka, Tobias Gloth, C. Ray C. and Ben Collver for
  their contributions and bug reports.

- Also big thanks to Jan Havelka for his help in tracking and fixing bugs.

- I almost forgot to thank Cedric Hebert for pointing out the gcc 2.x
  optimization options bug !

- And as a last-minute add-on, Kev Vance submitted a GDM loader.


BUGFIXES

- The OSS driver used much more memory than necessary without reason.

- Samples longer than 1 Mb were not played correctly. However, the fix now
  requires that your C compiler provides a 64 bit integer type. As a result,
  libmikmod will not compile anymore on AIX with old versions of xlC.

- Samples with ping pong loops could make the library segfault on some rare
  conditions. This bug was also present in MikIT and in the module plugin
  of winamp, which are also based on old MikMod 3 sources...

- The sample loaders will now load samples with extra information blocks in
  them, and has been made more robust.

- More checks to detect empty song messages.

- The song message loading routine was bugged and could make the library
  coredump.

- AMF modules in formats 1.0, 1.2 and 1.3 couldn't be loaded.

- MED loader now loads instrument names and song message if they exist.

- More check have been added to the 15 instrument MOD loader to prevent it
  from hanging on non-mod files ; let me know if you still experience
  problems with it.

- STM loader rejected STM created by MOD2STM ; the last pattern was never
  played ; also, in some STM modules the samples were not loaded correctly.

- XM modules in format 1.02 couldn't be loaded.

- Envelope sustain loops in XM modules were not processed correctly.

- Porta to note using the command memory used sometimes an incorrect value
  when playing AMF, IT, S3M and ULT modules.

- Volume slides for IT (Dxx) and XM (Axx) modules didn't continue in the
  background.

- Porta down effect in the volume column of IT modules was not played
  correctly.

- Problems occuring when compiling libmikmod when an older version of libmikmod
  is installed are now fixed.


DOCUMENTATION FIXES

- The documentation incorrectly referred to PAN_MIDDLE instead of PAN_CENTER.


NEW FEATURES

- On platforms that support POSIX.4 threads, the library is now thread-safe.

- Depending on your system's capabilities, ALSA and EsounD driver can now
  be dynamically loaded when a libmikmod application is run, so if you built
  your binary with the shared ALSA or EsounD libraries (which is the default),
  it will run on other systems lacking those libraries.

- New loaders for GDM (General Digital Music), IMF (Imago Orpheus) and STX
  (STMIK 0.2) modules.

- UNI loader is back, for those who need to play the ``Acid Tetris'' songs.

- S3M loader correctly identifies S3M modules created by Impulse Tracker
  an Imago Orpheus.

- IT effect T (slide tempo) is now implemented.

- The driver for the Linux Ultrasound project (the ancestor of ALSA) is back,
  too.

- The selection of the standard or high-quality software mixer is now made at
  runtime.

- New interfaces Voice_Get{Frequency,Panning,Volume} and
  Player_GetChannelPeriod (this one is for x11amp's MikMod plugin).

- Due to the addition of the new driver and loaders, library version has
  increased.


PLATFORM SPECIFIC

- Compiling with gcc 2.x under Linux on x86 platforms performed aggressive
  optimizations which had nasty interferences with the channel volumes on
  some modules. Hopefully this is now fixed, so gcc users will get the same
  sound quality as egcs users.
  I apologize to everyone told me of this volume problem for the time it took
  me to figure out where it came from.


Previous versions of libmikmod were bundled with the MikMod player ; refer to
its ``NEWS'' file for older changes information.
