sezero / mikmod

Mikmod Sound System (mirror of git repo at https://sf.net/projects/mikmod/)
http://mikmod.sourceforge.net/
69 stars 21 forks source link

[Feature Request] - New module formats #65

Open neumatho opened 2 years ago

neumatho commented 2 years ago

It seems that libxmp can load more different module formats than MikMod. It would be nice, if those can be adapted to MikMod.

I don't mind to give it a try at some point, if it is ok to take the code from libxmp (more or less) and make a MikMod loader from them.

AliceLR commented 2 years ago

My take on this: it's a fairly absurd amount of work to make sure some module formats are supported correctly (see: #18 #23 #25 #37) and MikMod has deficiencies in the formats it already does support. This isn't a problem unique to MikMod, either: libxmp's FAR support was barely better off than MikMod's before I started my patch, its MED/OctaMED effects edge cases are worse than MikMod, and I've had to put quite a bit of work into Impulse Tracker and Digital Symphony modules. More formats would be nice, but I think continuing to fix the formats MikMod already does support would probably be better.

Formats that should be mostly fine:

Formats with well known deficiencies:

Formats in desperate need of a deep dive to find bugs. Said bugs are almost guaranteed to exist:

sagamusix commented 2 years ago

Fully agree with Alice here. mikmod's support of some of the most popular formats is abysmal, and before anything else this must be fixed. It doesn't make sense to offer more formats while so many files are played incorrectly already, and it really doesn't make sense to have so many different module playback libraries available that are all mediocre at best at playing the most popular formats. Otherwise the outcome of this request is simply "libxmp with mikmod library interface, but worse". Really, I don't think adding any new features to mikmod makes sense at this point without a serious rewrite because the library itself is already stuck in the past - not being threadsafe by using global variables everywhere being one of the biggest issues of the current library design.

AliceLR commented 2 years ago

I don't think adding any new features to mikmod makes sense at this point without a serious rewrite because the library itself is already stuck in the past - not being threadsafe by using global variables everywhere being one of the biggest issues of the current library design.

Right. What MikMod really needs right now pretty much is a new major version to address the following issues:

I don't know that there's a way to make the drivers reentrant but I doubt it'd be necessary, if you're doing that you pretty much need to bring your own software mixer anyway. I'm not familiar enough but going off everything else in this library, they could probably use some additional safety checks after the other stuff is done.

sezero commented 2 years ago

Major overhaul, yes - and I like the idea :)