Project

General

Profile

Bug #1219

Incorrect range for stereo separation in OpenMPT plugin

Added by Chris Spiegel 11 months ago. Updated 6 months ago.

Status:
Closed
Priority:
Minor
Assignee:
-
Category:
plugins/openmpt
Target version:
Start date:
August 19, 2023
Due date:
% Done:

100%

Estimated time:
Affects version:

Description

When I wrote the OpenMPT plugin I incorrectly assumed the stereo separation range was from 0% to 100%, when in reality it's 0% to 200%, where 0% is no separation and 200% is complete separation.

Briefly, since some MOD formats have complete L-R separation (half the channels on one side, half on the other), libopenmpt provides a stereo separation setting, which allows you to choose how much mixing of channels to perform; this is especially useful with old modules (e.g. Protracker) and headphones. You can choose anywhere between complete separation and complete mixing (i.e. mono).

To the topic at hand, the Audacious libopenmpt plugin restricts the range to 100%. But 100% separation in libopenmpt is actually 50% in reality. It's impossible to select full stereo separation in the current Audacious plugin.

It's trivial to expand the range, but there are a few considerations:

A range of 0% to 200% would be confusing to most users; why should 200% be the top? So in my opinion displaying a range of 0-100 to the user is the right thing.

Displaying a range of 0-100 and then scaling to 0-200 for libopenmpt is also trivial, but there's one problem: if somebody has changed their stereo separation value, that new value will now sound different than their old value. For example, if they set the value to 100%, that used to be 50% in reality, but now would be scaled to 100% in reality.

Which leaves two options I can think of:

1. Apply the scaling and change how separation sounds for those users who have actually updated the setting (which I suspect is an extremely low count).
2. Create a new setting name for the scaled separation: if the user has the old setting name but not the new one, "migrate" it over by scaling it. If the user has a new one, use it directly and ignore the old one if it exists.

I'm fine fixing it either way.

Finally, the plugin sets a default stereo separation of 70%, which corresponds to a "real" setting of 35%. Changing this would change the setting for all users, so maybe we just have to stick with the current setting, but in an ideal world I'd want to use the default libopenmpt setting, which is 100% (corresponding to a "true" separation of 50%). However, given that it does affect everybody who uses the plugin, maybe that's a bridge too far.

History

#1 Updated by John Lindgren 11 months ago

My suggestion:

- Keep interpreting the existing setting as-is.
- Increase the range of the setting in the UI to 200.
- Don't call it a "percent" in the UI but just say: "Stereo separation (0=mono, 100=default, 200=full):"
- Change the default to 100 to match libopenmpt (this will affect only users who haven't changed the setting).

#2 Updated by Chris Spiegel 11 months ago

Sounds good. I'll create a pull request to implement this.

#3 Updated by John Lindgren 9 months ago

  • % Done changed from 0 to 100
  • Status changed from New to Closed
  • Category set to plugins/openmpt

#4 Updated by Thomas Lange 6 months ago

  • Target version set to 4.4

Also available in: Atom PDF