The OpenMPT/libopenmpt project released the first release candidate for the new stable libopenmpt 0.3 branch.

The proper libopenmpt 0.3.0 release will follow in a few days.


libopenmpt 0.3.0-rc.1 (2017-09-24)


Changelog since libopenmpt 0.2.6774-beta20:

  • [New] New error handling functionality in the C API, which in particular allows distinguishing potentially transient out-of-memory errors from parse errors during module loading.
  • [New] New API openmpt::module::get_selected_subsong() (C++) and openmpt_module_get_selected_subsong() (C).
  • [New] Faster file header probing API openmpt::probe_file_header() and openmpt::probe_file_header_get_recommended_size (C++), and openmpt_probe_file_header(), openmpt_probe_file_header_without_filesize(), openmpt_probe_file_header_from_stream() and openmpt_probe_file_header_get_recommended_size() (C).
  • [New] New API openmpt::could_open_probability() (C++) and openmpt_could_open_probability() (C). This fixes a spelling error in the old 0.2 API.
  • [New] openmpt123: openmpt123 can now open M3U, M3U8, M3UEXT, M3U8EXT and PLSv2 playlists via the --playlist option.
  • [New] openmpt123: openmpt123 now supports very fast file header probing via the --probe option.
  • [New] Libopenmpt now supports building for Windows 10 Universal (Windows Store 8.2) APIs with MSVC, and also for the older Windows Runtime APIs with MinGW-w64.
  • [New] New API header libopenmpt_ext.h which implements the libopenmpt extension APIs also for the C interface.
  • [New] The Reverb effect (S99 in S3M/IT/MPTM, and X99 in XM) is now implemented in libopenmpt.
  • [New] For Amiga modules, a new resampler based on the Amiga’s sound characteristics has been added. It can be activated by passing the render.resampler.emulate_amiga ctl with a value of 1. Non-Amiga modules are not affected by this, and setting the ctl overrides the resampler choice specified by OPENMPT_MODULE_RENDER_INTERPOLATIONFILTER_LENGTH or openmpt::module::RENDER_INTERPOLATIONFILTER_LENGTH. Support for the MOD command E0x (Set LED Filter) is also available when the Amiga resampler is enabled.

  • [Change] libopenmpt versioning changed and follows the more conventional major.minor.patch as well as the recommendations of the SemVer scheme now. In addition to the SemVer requirements, pre-1.0.0 versions will also honor API and ABI stability in libopenmpt (i.e. libopenmpt ignores SemVer Clause 4).
  • [Change] The output directories of the MSVC build system were changed to bin/vs2015-shared/x86-64-win7/ (and similar) layout which allows building in the same tree with different compiler versions without overwriting other outputs.
  • [Change] The emscripten build now exports libopenmpt as ‘libopenmpt’ instead of the default ‘Module’.
  • [Change] Android: The build system changed. The various Android.mk files have been merged into a single one which can be controlled using command line options.
  • [Change] The Makefile build system now passes std=c++11 to the compiler by default. Older compilers may still work if you pass STDCXX=c++0x to the make invocation.
  • [Change] The Makefile option ANCIENT=1 is gone.
  • [Change] The optional dependencies on libltdl or libdl are gone. They are no longer needed for any functionality.

  • [Regression] Compiling client code using the C++ API now requires a compiler running in C++11 mode.
  • [Regression] Support for GCC 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7 has been removed.
  • [Regression] Support for Clang 3.0, 3.1, 3.2, 3.3 has been removed.
  • [Regression] Support for Emscripten versions older than 1.31.0 has been removed.
  • [Regression] Support for Android NDK versions older than 11 has been removed.
  • [Regression] Visual Studio 2008, 2010, 2012, 2013 support has been removed.
  • [Regression] Dynamic run-time loading of libmpg123 is no longer supported. Libmpg123 must be linked at link-time now.
  • [Regression] xmp-openmpt: xmp-openmpt now requires XMPlay 3.8 or later and compiling xmp-openmpt requires an appropriate XMPlay SDK with XMPIN_FACE >= 4.
  • [Regression] Support for libmpg123 older than 1.13.0 has been removed.
  • [Regression] Un4seen unmo3 support has been removed.

  • [Bug] C++ API: openmpt::exception did not define copy and move constructors or copy and move assignment operators in libopenmpt 0.2. The compiler-generated ones were not adequate though. libopenmpt 0.3 adds the appropriate special member functions. This adds the respective symbol names to the exported ABI, which, depending on the compiler, might or might not have been there in libopenmpt 0.2. The possibly resulting possible ODR violation only affects cases that did crash in the libopenmpt 0.2 API anyway due to memory double-free, and does not cause any further problems in practice for all known platforms and compilers.
  • [Bug] The C API could crash instead of failing gracefully in out-of-memory situations.
  • [Bug] The test suite could fail on MacOSX or FreeBSD in non-fatal ways when no locale was active.
  • [Bug] libopenmpt_stream_callbacks_fd.h and libopenmpt_stream_callbacks_file.h were missing in Windows development packages.
  • [Bug] libopenmpt on Windows did not properly guard against current working directory DLL injection attacks.
  • [Bug] localtime() was used to determine the version of Schism Tracker used to save IT and S3M files. This function is not guaranteed to be thread-safe by the standard and is now no longer used.
  • [Bug] Possible crashes with malformed IT, ITP, AMS, MDL, MED, MPTM, PSM and Startrekker files.
  • [Bug] Possible hangs with malformed DBM, MPTM and PSM files.
  • [Bug] Possible hangs with malformed files containing cyclic plugin routings.
  • [Bug] Excessive loading times with malformed ITP / truncated AMS files.
  • [Bug] Plugins did not work correctly when changing the sample rate between two render calls.
  • [Bug] Possible NULL-pointer dereference read during obscure out-of-memory situations while handling exceptions in the C API.
  • [Bug] libmodplug: libmodplug.pc was wrong.
  • [Bug] Cross-compiling libopenmpt with autotools for Windows now properly sets -municode and -mconsole as well as all required Windows system libraries.
  • [Bug] foo_openmpt: Interpolation filter and volume ramping settings were confused in previous versions. This version resets both to the defaults.
  • [Bug] libmodplug: The CSoundFile::Read function in the emulated libmodplug C++ API returned the wrong value, causing qmmp (and possibly other software) to crash.

  • Support for SoundTracker Pro II (STP) and Digital Tracker (DTM) modules.
  • Increased accuracy of the sample position and sample rate to drift less when playing very long samples.
  • Various playback improvements for IT and XM files.
  • Channel frequency could wrap around after some excessive portamento / down in some formats since libopenmpt 0.2-beta17.
  • Playback improvements for S3M files made with Impulse Tracker and Schism Tracker.
  • ParamEq plugin emulation didn’t do anything at full gain (+15dB).
  • All standard DMO effects are now also emulated on non-Windows and non-MSVC systems.
  • Added libopenmpt_stream_callbacks_buffer.h which adds openmpt_stream_callbacks support for in-memory buffers, possibly even only using a truncated prefix view into a bigger file which is useful for probing.
  • Avoid enabling some ProTracker-specific quirks for MOD files most likely created with ScreamTracker 3.
  • Tremolo effect only had half the intended strength in MOD files.
  • Pattern loops ending on the last row a pattern were not executed correctly in S3M files.
  • Work-around for reading MIDI macros and plugin settings in some malformed IT files written by old UNMO3 versions.
  • Improve tracker detection in IT format.
  • Playback fixes for 8-channel MED files
  • Do not set note volume to 0 on out-of-range offset in XM files.
  • Better import of some slide commands in SFX files.
  • Sample 15 in “Crew Generation” by Necros requires short loops at the beginning of the sample to not be ignored. Since we need to ignore them in some (non-ProTracker) modules, we heuristically disable the old loop sanitization behaviour based on the module channel count.
  • Both normal and percentage offset in PLM files were handled as percentage offset.
  • MT2 files with instruments that had both sample and plugin assignments were not read correctly.
  • Support for VBlank timing flag and comment field in PT36 files.
  • Improved accuracy of vibrato command in DIGI / DBM files.
  • STM: Add support for “WUZAMOD!” magic bytes and allow some slightly malformed STM files to load which were previously rejected.
  • Detect whether “hidden” patterns in the order list of SoundTracker modules should be taken into account or not.
  • Tighten heuristics for rejecting invalid 669 and M15 files.
  • Improvements to seeking: Channel panning was not always updated from instruments / samples when seeking, and out-of-range global volume was not applied correctly in some formats.
  • seek.sync_samples=1 did not apply PTM reverse offset effect and the volume slide part of combined volume slide + vibrato commands.
  • Makefile has now explicit support for FreeBSD with no special option or configuration required.
  • openmpt123: Improved section layout in man page.
  • libmodplug: Added all missing C++ API symbols that are accessible via the public libmodplug header file.
  • Autotools build system now has options --disable-openmpt123, --disable-tests and --disable-examples which may be desireable when cross-compiling.
  • Windows binary packages now ship with libmpg123 included.

Compiled binaries for various systems:

operating system architecture libopenmpt openmpt123 xmp-openmpt in_openmpt foo_openmpt
    development command-line player input plugin
for XMPlay
input plugin
for Winamp (or compatible)
decoder component
for foobar2000
Windows 7
(or later)
x86-64 libopenmpt
0.3.0-rc.1
openmpt123
0.3.0-rc.1
     
Windows 7
(or later)
x86 + SSE2 libopenmpt
0.3.0-rc.1
openmpt123
0.3.0-rc.1
xmp-openmpt
0.3.0-rc.1
in_openmpt
0.3.0-rc.1
foo_openmpt
0.3.0-rc.1
Windows Vista
Windows XP
x86-64 libopenmpt
0.3.0-rc.1
openmpt123
0.3.0-rc.1
     
Windows 7
Windows Vista
Windows XP
x86 (586) libopenmpt
0.3.0-rc.1
openmpt123
0.3.0-rc.1
xmp-openmpt
0.3.0-rc.1
in_openmpt
0.3.0-rc.1
foo_openmpt
0.3.0-rc.1
Windows 2000 x86 (586)   openmpt123
0.2.8760-beta27
xmp-openmpt
0.2.8760-beta27
in_openmpt
0.2.8760-beta27
 
Web asm.js
JavaScript
libopenmpt
0.3.0-rc.1
       
Debian 9
(or later)
any apt install libopenmpt-dev apt install openmpt123      
Ubuntu 17.04
(or later)
any apt-get install libopenmpt-dev apt-get install openmpt123      
openSUSE Tumbleweed any zypper install libopenmpt zypper install openmpt123      
other systems any distribution packages distribution packages      


Source code for developers:

build system compiler libopenmpt
    source code
Autotools
recommended on Unix-like systems
GCC 4.8 (or later)
Clang 3.4 (or later)
MinGW-W64 4.8 (or later)
any C++11 compiler
libopenmpt
0.3.0-rc.1
Autotools GCC 4.3..4.7
Clang 3.0..3.3
MinGW-W64 4.6..4.7
any C++03 compiler
libopenmpt
0.2.8760-beta27
Makefile / Android ndk-build
recommended for asm.js, JavaScript or Android targetting
GCC 4.8 (or later)
Clang 3.4 (or later)
MinGW-W64 4.8 (or later)
Android NDK 11 (or later)
Emscripten 1.31 (or later)
any C++11 compiler
libopenmpt
0.3.0-rc.1
Makefile / Android ndk-build GCC 4.1..4.7
Clang 3.0..3.3
MinGW-W64 4.6..4.7
Android NDK 9..10
Emscripten 1.21..1.30
any C++03 compiler
libopenmpt
0.2.8760-beta27
Visual Studio
recommended on Windows
VS 2015 (or later) libopenmpt
0.3.0-rc.1
Visual Studio VS 2008..2013 libopenmpt
0.2.8760-beta27


All Downloads

Source code, security patches, documentation, development versions, development libraries, older versions, VCS

version date support status source code source docs development libs binaries vcs
0.4 (SVN trunk) current development
security updates
playback fixes
new features
new file formats
Autotools
Makefile / Android
Visual Studio
browse
download
Windows 7 + (VS2017)
Windows XP, Vista (VS2017)
asm.js, JavaScript
Windows 7 +
Windows XP, Vista
browse
SVN
github
0.3.0-rc.1 2017-09-24 stable
security updates
minor playback fixes
Autotools
Makefile / Android
Visual Studio
browse
download
Windows 7 + (VS2017)
Windows XP, Vista (VS2017)
asm.js, JavaScript
Windows 7 +
Windows XP, Vista
other systems
browse
SVN
github
0.2.8760-beta27 2017-08-12 old stable
security updates
Autotools
Makefile / Android
Visual Studio
download Windows (VS2010) Windows 7 +
Windows 2000, XP, Vista
other systems
browse
SVN
github
0.2.7561-beta20.5 2017-07-07 Unix-like systems only
security fixes
Autotools
Makefile / Android

required patches:
security patch 1
security patch 2
security patch 3
security patch 4
security patch 5
security patch 6
security patch 7 (CVE-2017-11311)
download     browse
SVN
github
0.2.7386-beta20.3 2017-07-07 Unix-like systems only
security fixes
Autotools
Makefile / Android

required patches:
security patch 1
security patch 2
security patch 3
security patch 4
security patch 5
security patch 6
security patch 7
security patch 8
security patch 9
security patch 10 (CVE-2017-11311)
download     browse
SVN
github
old stable versions   unmaintained browse source
browse patches
browse docs browse development libs browse binaries browse
SVN
old source snapshots
old test builds
  unmaintained browse