mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.4k stars 1.26k forks source link

Module playback: Replace libmodplug with libopenmpt #9862

Open mixxxbot opened 2 years ago

mixxxbot commented 2 years ago

Reported by: mxmilkiib Date: 2020-01-13T19:03:57Z Status: Confirmed Importance: Low Launchpad Issue: lp1859511 Tags: soundsource


libmodplug has seen very little development in the last several years.

libopenmpt is the "spiritual successor" of libmodplug - https://lib.openmpt.org/libopenmpt/faq - with an actively developed modern codebase, more faithful sonic renderings of modules, support for more formats, security fixes, and more.

Possibly Mixxx uses some libmodplug playback FX DSP that isn't present in libopenmpt, so even though libopenmpt has a libmodplug compatibility build, maybe an upgrade might take a few development steps.

mixxxbot commented 2 years ago

Commented by: Be-ing Date: 2020-01-17T01:02:12Z


Removing a dependency on an unmaintained library would be nice. I'm not sure any current developers use this feature, so it would probably be up to you to work on this.

JosepMaJAZ commented 1 year ago

We are in 2023. The currently supported Ubuntu version is 22.04 libopenmpt is present in that version https://packages.ubuntu.com/search?keywords=libopenmpt&searchon=names&suite=jammy&section=all

We also use vcpkg in windows and mac, and libopenmpt is also there (Although currently it is a bit older and it misses the libopenmpt-modplug1 which would ease the migration of Mixxx to the new library). If we don't like the version in vcpkg, we simply need to add to our fork of vcpkg as we do with some other components.

So I think it's time to revive this Issue, since using libmodplug instead of libopenmpt with Mixxx has a fatal bug, because it is not thread safe, and loading (or analysing) more than one track at a time completely damages the sound.

JoergAtGithub commented 1 year ago

There is already a build with libopenmpt available, but no one tested it: https://github.com/mixxxdj/mixxx/issues/11119#issuecomment-1396143346

JosepMaJAZ commented 1 year ago

There is already a build with libopenmpt available, but no one tested it: #11119 (comment)

I understood that the change is only implemented for macOS (which was missing it), and other OS were still using the old one. Can you confirm?

daschuer commented 1 year ago

https://github.com/daschuer/vcpkg/actions/runs/3949418187 is a link to vcpkg build environment that includes libopenmpt and its development files. This is the foundation to start fixing that bug when you are on macOS or Windows. The replacement itself is still waiting for a contributor.

JosepMaJAZ commented 1 year ago

That action run is expired since it is already 3 months old.

JosepMaJAZ commented 1 year ago

building your branch locally right now.