Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: OpenMPT Module Decoder (Read 23807 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

OpenMPT Module Decoder

Hi kode54,

I just compared foo_openmpt54 with its predecessor foo_dumb, so far the experience in terms of speed and quality is quite satisfying. However I found a couple features missing:

  • Interpolation cannot be toggled off. foo_dumb allows to disable interpolation by setting it to "0", this does not work for foo_openmpt.
  • The correct total channel count is not reported, instead it always shows 2 channels for every module.
  • Display of total patterns and dynamic pattern position is unavailable.
  • Display of currently used channels and maximum used channels is unavailable.

Would you mind adding these to foo_openmpt as well? That would be great.

As always, thank you very much for your time, dedication and efforts, it's highly appreciated.

Re: OpenMPT Module Decoder

Reply #1
1. Can be fixed by changing the configuration option to "1", but I added a workaround for setting it to "0".
2. Fixed.
3. Fixed.
4. Fixed.

Re: OpenMPT Module Decoder

Reply #2
How accurate is this compared to say bubsy's shenanigans when it comes to XM/S3M/MOD?

Re: OpenMPT Module Decoder

Reply #3
Thank you for adding the requested features.

1. Can be fixed by changing the configuration option to "1", but I added a workaround for setting it to "0".
That was the first thing I tried before posting. According to the description 1 = nearest, 2 = linear, 4 = cubic, 8 = sync, but there is no setting for "interpolation OFF" available. Your mentioned workaround for v0.4.0-pre.3+1 does not work, i.e. the setting does NOT accept value "0".

I just noticed that the interpolation setting also accepts values 3, 5 and 7 which are supposed to be rejected.

Re: OpenMPT Module Decoder

Reply #4
Just checked the update v0.4.0-pre.3+2, which now sports its own configuration dialog, like foo_dumb.

A binary comparison of the output of v0.4.0-pre.3+1 (interpolation = 1) with v0.4.0-pre.3+2 (interpolation = 0) provides bit-identical results. Turns out the interpolation term "nearest" was just a little misleading, IMHO "none" is definitely the better choice.

Thank you very much for your swift response. (virtual hat off)

Re: OpenMPT Module Decoder

Reply #5
Enjoy the real configuration dialog (you'll need to change your settings from defaults again), and enjoy the new pattern visualization, whose renderer was carefully ported from the official OpenMPT XMPlay plugin, to a UI Element of my own design, based on the foo_gep SPC visualization's design. It takes system colors, or foobar2000 Default UI colors, based on background, selection, and text colors.

Re: OpenMPT Module Decoder

Reply #6
More a general OpenMPt question than anything, but I've noticed that modules that have short, chippy samples, such as dunderklumpen.xm by Loonie, have a bit of an attack added on to their samples, which can sound yucky with some modules, something that DUMB didn't do before. I'm curious why? Is it something the original tracker did? Additionally, the attack seems to be module dependent, chip 7.xm by Saxxonpike doesn't do it.

Re: OpenMPT Module Decoder

Reply #7
Try reducing or turning off volume ramping, but note that many XMs will sound bad without it, since the tracker implemented it and many composers assume it will be featured in the player.

Re: OpenMPT Module Decoder

Reply #8
Enjoy the real configuration dialog (you'll need to change your settings from defaults again) [...]
I did not had to update the settings, those were transferred from v0.4.0-pre.3+1 to v0.4.0-pre.3+2. It might be noteworthy that I update foobar2000 and user components manually only, except for the initial installation of foobar2000 which probably makes a difference regarding the preservation of the settings.

[...] enjoy the new pattern visualization [...]
Awesome! After all these years we get to have a live pattern viewer. That's a neat surprise. Thank you very much!
Unfortunately I have to report a bug regarding the pattern visualization right away:

  • foobar2000 crashes upon attempt to advance the playlist when reaching the end of any module AND if the next playlist item is a module OR if the current module is going to be repeated
  • The crash does NOT occur if the next playlist item is not a module OR if the user forces to advance to the next/previous playlist item OR if the user creates/loads a new playlist before the currently played module reaches its natural end.


I'd like to suggest a couple items regarding the pattern visualization. I leave it to your expertise and motivation whether these are feasible, of course:

  • Color customization for the highlight bar
  • Font, style and size customization (foobar2000 default UI settings seem not to apply)
  • Option for continuous pattern display
  • Display presets for 4/8/16/32/64 channels with varying detail (similar to Impulse Tracker UI)
  • Context menu allowing for quick change of continuous pattern display and channel presets

 

Re: OpenMPT Module Decoder

Reply #9
Hi kode54,

Thank You for your work!
I have the following comments:

1. In the attachment the MOD file that DUMB and OpenMPT opens incorrectly in the number of 64 separate modules.
XMPlay opens it correctly like one module. Check, please.

2. Could you make pattern visualization for Columns UI ?

Best regards.

Re: OpenMPT Module Decoder

Reply #10
Quick Note: My foo_openmpt has been renamed to foo_openmpt54. You'll need to uninstall the previous one and install the new one separately to get future changes. The update checker cannot do this for you.

Enjoy the real configuration dialog (you'll need to change your settings from defaults again) [...]
I did not had to update the settings, those were transferred from v0.4.0-pre.3+1 to v0.4.0-pre.3+2. It might be noteworthy that I update foobar2000 and user components manually only, except for the initial installation of foobar2000 which probably makes a difference regarding the preservation of the settings.
You may need to reset the filter setting, since it's probably the only default you changed.

[...] enjoy the new pattern visualization [...]
Awesome! After all these years we get to have a live pattern viewer. That's a neat surprise. Thank you very much!
Unfortunately I have to report a bug regarding the pattern visualization right away:

  • foobar2000 crashes upon attempt to advance the playlist when reaching the end of any module AND if the next playlist item is a module OR if the current module is going to be repeated
  • The crash does NOT occur if the next playlist item is not a module OR if the user forces to advance to the next/previous playlist item OR if the user creates/loads a new playlist before the currently played module reaches its natural end.
This crash bug has been fixed by shifting to use of proper STL shared_ptr for the module instances that are shared with the pattern viewer, rather than attempting to use my own piss-poor reference counting mess.

I'd like to suggest a couple items regarding the pattern visualization. I leave it to your expertise and motivation whether these are feasible, of course:

1. Color customization for the highlight bar
Currently, the highlight bar is just an InvRect. I could add more color customization, or even change it so it's a custom inverse that only inverts the brightness and not the hue, or so the alpha level can be customized.

2. Font, style and size customization (foobar2000 default UI settings seem not to apply)
It needs to be a fixed width font, for obvious reasons. Style and size can be customized, I guess. They're currently inherited from the dialog defaults. I need to make them inherit from the panel settings.

3. Option for continuous pattern display
Currently, it only renders one pattern at a time, and it can only know what the current pattern is. Knowing future or past patterns would require charting out the entire song, and I don't know if there's a fast way to do that with libmodplug. I could ask their developers if there's a way to do that easily. Considering that there are modules that progress in a non-linear fashion, and even progress backwards.
4. Display presets for 4/8/16/32/64 channels with varying detail (similar to Impulse Tracker UI)
It currently changes detail automatically, depending on how many channels the song has, and how wide you make the window.

5. Context menu allowing for quick change of continuous pattern display and channel presets
Yeah, I could add a context menu, but then I'd need to add the settings you mentioned. I'd also need to add font settings, and restrict that dialog to displaying fixed width fonts, defaulting to what it currently has hard coded, Lucida Console.

Hi kode54,

Thank You for your work!
I have the following comments:

1. In the attachment the MOD file that DUMB and OpenMPT opens incorrectly in the number of 64 separate modules.
XMPlay opens it correctly like one module. Check, please.
This is up to libmodplug and its subsong detection capability. I could discard short subsongs, but then what if someone actually does want short subsongs? Please report this one to the OpenMPT project, as it is an issue in their library. I can report it for you, though.

2. Could you make pattern visualization for Columns UI ?
I make no guarantees, as I don't use Columns UI, and I have no components on hand to base a Columns UI dockable panel on.

Re: OpenMPT Module Decoder

Reply #11
This crash bug has been fixed [...]
Many thanks.

Currently, the highlight bar is just an InvRect. I could add more color customization, or even change it so it's a custom inverse that only inverts the brightness and not the hue, or so the alpha level can be customized.
Well, whatever you think suits the purpose best. If I can assist you in testing various solutions or get another opinion I'm glad to help you out.

It needs to be a fixed width font, for obvious reasons.
There should be a couple system fonts available sufficient for the task. Perhaps you can add support for a fixed set of system fonts that meet the requirements? Again, I'm happy to assist and provide feedback if required.

I could ask their developers if there's a way to do that easily. Considering that there are modules that progress in a non-linear fashion, and even progress backwards.
Yes, please do ask. For example Milky Tracker has optional support for continuous pattern display. Its source code should provide some clues if required.

It currently changes detail automatically, depending on how many channels the song has, and how wide you make the window.
Yes, I noticed. I would like to be able to use the available space of a fixed size window efficiently. Displaying pattern data of a 4-channel module leaves a lot space of a fixed size window unused.

Yeah, I could add a context menu, but then I'd need to add the settings you mentioned.
No problem, if you don't see fit for it then just leave it be. I just threw some ideas for discussion, I'm aware that not every suggestion gets realized for one reason or another.

I make no guarantees, as I don't use Columns UI, and I have no components on hand to base a Columns UI dockable panel on.
I can point you to some Columns UI plugins that I regularly use since many years without any issues:


Re: OpenMPT Module Decoder

Reply #12
This is up to libmodplug and its subsong detection capability. I could discard short subsongs, but then what if someone actually does want short subsongs? Please report this one to the OpenMPT project, as it is an issue in their library. I can report it for you, though.
Dear kode54,
I suggest to solve this problem, I think it is actual.
For example, there are several such MODs in my collection. I think others people also have such.
If you think that will help, please report to OpenMPT project about the issue.
By the way ZXTune Player http://www.foobar2000.org/components/view/foo_input_zxtune works correctly.

I can point you to some Columns UI plugins that I regularly use since many years without any issues:
Dear deus-ex, thanks for the support )

Best regards.


Re: OpenMPT Module Decoder

Reply #14
ZXTune doesn't use DUMB or OpenMPT, it uses XMP (not to be confused with XMPlay) for some module support. How fast does it scan for subsongs? This should be fast.

E: Added back the muting control, now with pitch and tempo.

Before anyone asks, I did not intend to override the official component, or to stealthily upgrade people using the stable version. In fact, I don't intend to continue using the SVN / prerelease version of libopenmpt. I only wanted it for the J2B quick fix that was added late in the game. As soon as a stable release is out, hopefully also with fixes for these spurious subsong detection issues, assuming I don't have to add a length threshold and possibly lose wanted short subsongs, I'll forcibly deprecate this whole 0.40-pre.* line, and link against a stable release.

Re: OpenMPT Module Decoder

Reply #15
Will you continue to compile and release updates of foo_openmpt via the foobar2000 components page, or will you retreat from contributing altogether and leave it with the OpenMPT developers?

Re: OpenMPT Module Decoder

Reply #16
No, I'll release updates to my fork as foo_openmpt54, as I have been for several releases now. I was asked to rename my component, because they got pissed off that the auto updater replaced their component with mine, especially since it's based on "unstable" "pre-release" code. I tend to think that bleeding edge is sufficient for daily use, but will be force-deprecating these 0.40-pre plugins when a new stable release appears.

Re: OpenMPT Module Decoder

Reply #17
17:02 <+mudlord> i found a tagging bug
17:02 <+mudlord> with titleformat syntax
17:03 <+mudlord> i thought anything in [ ] is to be cleared if its not present
17:03 <+mudlord> so adding a - in there makes the - present even when it shouldnt be
17:05 <+mudlord> no
17:05 <+mudlord> its a openmpt bug


Simple repro : [%artist% -] %title%
The "-" is present when that field should be completely NULL.

Re: OpenMPT Module Decoder

Reply #18
I was asked to rename my component, because they got pissed off that the auto updater replaced their component with mine, especially since it's based on "unstable" "pre-release" code. I tend to think that bleeding edge is sufficient for daily use, but will be force-deprecating these 0.40-pre plugins when a new stable release appears.
Are you telling us you wouldn't be pissed off if it was the other way around? I was under the impression that this is a amicable coop between you and the OpenMPT developers, but apparently that assumption was wrong. If so I recommend you to take a step back and rethink your point of view.

Re: OpenMPT Module Decoder

Reply #19
Apparently, it would have been an amicable form of cooperation if I had kindly asked first and waited a few months to release anything with their blessing. I also have a friend who doesn't even know that I marked foo_dumb as obsolete on the components repository, so he doesn't know that every component update will attempt to delete it from his system, nor does he know why I did that.

It makes me think that I'm a hypocrite, because I want to tell others what software they can use on their systems, but not have others do the same to me.

Re: OpenMPT Module Decoder

Reply #20
I can't play compressed module (.gz and .lha which I happened to know from un4seen forum) with foo_openmpt54. I can play it with foo_dumb. I wonder if it's the limitation of libopenmpt as official component (foo_openmpt) doesn't seem handle these files. Thanks. Regards.

Re: OpenMPT Module Decoder

Reply #21
You need a .gz or a .lha archive component to read those. foo_dumb requires the same. Please upload a non-working file so I may examine it.

Re: OpenMPT Module Decoder

Reply #22
The samples are here and here. Originally got from this forum. Yes, I'm aware about the required archive reader components. Regards.

Re: OpenMPT Module Decoder

Reply #23
Ah, right, I don't support Amiga style filenames with this plugin. I wasn't even aware I supported them with foo_dumb. I guess I can work around that.

Re: OpenMPT Module Decoder

Reply #24
Updated again, to match the official plugin, and now with minimum subsong length threshold, so you don't get spammed if you don't want to.