libopenmpt released

category: code [glöplog]
libopenmpt is a BSD-3-clause-licensed, cross-platform C and C++ module playback library. It is based on the player code of the Open ModPlug Tracker project.

Since libmodplug, which is based on an earlier version of the original ModPlug code base, had been released, the code bases of other ModPlug descendants (most notably Schism Tracker and Open ModPlug Tracker) had diverged significantly from the libmodplug code base. libmodplug did, in our opinion, not maintain pace all that well - especially regarding playback accuracy in corner cases.

Over the last year, OpenMPT developers refactored the OpenMPT code base in a way such that a player library can be built separately from the tracker GUI again, as it had been possible with the original ModPlug Tracker source code drop by Olivier Lapicque.
In order to avoid possible future source code fragmentation, libopenmpt is, and will continue to be, developed together with OpenMPT itself in the same source code repository.

libopenmpt comes together with a stand-alone command-line/terminal-based player called openmpt123 as well as player plugins for XMPlay (xmp-openmpt), Winamp (and compatible) (in_openmpt) and foobar2000 (foo_openmpt). A gstreamer plugin, gst-nonstream-audio, is currently in the works at https://github.com/dv1/gst-nonstream-audio. A Debian package is also being worked on.

Get more information at the libopenmpt website at lib.openmpt.org.
How platform-independent is it? (E.g. endianness)
added on the 2013-12-31 16:15:57 by Gargaj Gargaj
Endianness is no problem, we have automated tests on a variety of platforms including big-endian ones. Platforms that don't support unaligned memory access at all might still have trouble, but this will probably be fixed in the near future. Basically, this means that it will run on a great number of widespread platforms, way more than libmodplug actually.
The reason I'm asking because MIKMOD seriously needs a replacement on Rockbox :D
added on the 2013-12-31 16:34:43 by Gargaj Gargaj
Well, if a reasonably recent C++ compiler can be used for that (requirements are on the project page), it shouldn't be a problem, I guess. :) The mixing code doesn't use floating-point in any time-critical places (floating point mixer is in the works but will be optional), so it should work fine on older embedded devices as well.
From a quick glance at the Rockbox source, it looks like they do not support any on-device C++ code at all. This would completely rule out libopenmpt.
added on the 2014-01-02 13:53:46 by manx manx
As a small update, with today's updated release, emscripten is now a fully supported platform for libopenmpt. Time to get those modules into your websites! :) (example player)
I get an error here; this.bufferFinishTime = this.config.context.currentTime; on line 69 of chiptune2.js.
added on the 2014-09-06 16:34:52 by mdx mdx
You may want to report it to the creator on github - it works without problems on Firefox here, no idea about other browsers.