View Issue Details

IDProjectCategoryView StatusLast Update
0001384OpenMPTFile Format Supportpublic2020-10-26 18:59
ReporterLachesis Assigned ToSaga Musix  
PrioritylowSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Platformx64OSWindowsOS Version10
Product VersionOpenMPT 1.29.05.00 / libopenmpt 0.5.3 (upgrade first) 
Target VersionOpenMPT 1.29.06.00 / libopenmpt 0.5.4 (upgrade first)Fixed in VersionOpenMPT 1.29.06.00 / libopenmpt 0.5.4 (upgrade first) 
Summary0001384: OctaMED timing edge case bugs :(
Description

I noticed a couple of (VERY edge case) issues that still exist with OctaMED timing in OpenMPT.

https://github.com/OpenMPT/openmpt/blob/master/soundlib/Load_med.cpp#L353

1) When a .MED file has both 8-channel mode and BPM mode enabled, OctaMED will ignore BPM mode entirely and use 8-channel mode timing (can just if(bpmMode && !is8Ch) at line 355). I've only found three tracks so far that have both of these set. When 8-channel mode and BPM mode are both enabled, OctaMED will completely ignore the beats per row slider and the BPM slider behaves like the tempo slider in 8-channel mode.

2) OctaMED has a very obscure bug in BPM mode that I've only seen used by two tracks so far: when a BPM of 1 or 2 is set, OctaMED seems to revert to the default tempo (TEMPO(125) might work) until the BPM is changed again. When this "BPM" is set, OctaMED ignores the beats per row slider until a normal BPM is set. libxmp and the Windows copy of OctaMEDPlayer I have don't check for this, so they play the ends of the two affected tracks much slower than intended.

Steps To Reproduce

1) These are the three affected tracks. superaxel.med is the most noticeable since it plays at a VERY low BPM in OpenMPT.

2) Load either of these files in OpenMPT. The buggy usage of those low BPMs occurs in the final order of both modules. OpenMPT translates these to relative tempo changes (not sure if that's just a UI issue).

I've been working with OctaMED 4.00 (via FS-UAE) and MMD0/MMD1 modules only so far so there might be more of these in the MMD2/MMD3 collections.

Additional Information

My research into OctaMED timing for MikMod... :( I'm glad almost everything I found here is already correct in OpenMPT though.

https://github.com/sezero/mikmod/issues/17

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2020-10-26 08:05

administrator   ~0004492

Thanks for the detailed report. A lot of these small details changed between OctaMED versions (as you can see in the OpenMPT code) so I think some more tests with OctaMED 5 and Med for Windows will indeed be in order.

Lachesis

Lachesis

2020-10-26 09:13

reporter   ~0004493

For the issue re: 8-channel mode, OctaMED 4.03 (I was wrong, it's not 4.00...), OctaMED 5.00, the OctaMED 6.00 demo, and OctaMED Soundstudio 1.03 all have the behavior I described above, including how the sliders behave. OctaMEDPlayer and MED Soundstudio 2.1 play these tracks correctly but they convert these to regular BPM mode (nikolaus and techfunk from 8-channel tempo 10 to 99 BPM / 4 LPB, superaxel from 8-channel tempo 9 to 103 BPM / 4 LPB).

The ending of Electrosound 64 plays correctly in all of the Amiga versions of OctaMED I tried but the F02 at the end is treated as a regular BPM by Windows OctaMEDPlayer and MED Soundstudio 2.1.

Lachesis

Lachesis

2020-10-26 09:52

reporter   ~0004494

Minor update: I meant 104 BPM for superaxel, not 103 BPM. I also forgot to try the OctaMED Soundstudio 2 Amiga demo; it behaves the same as the Windows players in both a) converting 8-channel mode to BPM mode and b) treating F02 like a regular BPM.

Saga Musix

Saga Musix

2020-10-26 18:24

administrator   ~0004495

MED Soundstudio (on Windows) also doesn't support the second quirk, which is a bit unfortunte because I think there is no way to distinguish it from earlire OctaMED releases in the general case (it outputs regular MMD3 files), unless you use some specific features like VST you probably cannot tell if the file was written in OctaMED or MED Soundstudio.

I just hope that noone used F01 or F02 in MED Soundstudio so that I can apply this quirk unconditionally. ;)

Saga Musix

Saga Musix

2020-10-26 18:59

administrator   ~0004496

Changes as of r13787:

  • BPM mode is no longer enabled if 8-channel mode is active
  • F01 and F02 reset the tempo to 112 BPM (determined in OctaMED 5)
  • Tempos below 32 BPM are no longer treated as tempo slides. In OpenMPT they are now clamped to 32 BPM (due to having to convert MED to either MOD or XM), while in libopenmpt they are handled as expected.

Issue History

Date Modified Username Field Change
2020-10-26 06:22 Lachesis New Issue
2020-10-26 08:03 Saga Musix Assigned To => Saga Musix
2020-10-26 08:03 Saga Musix Status new => assigned
2020-10-26 08:05 Saga Musix Note Added: 0004492
2020-10-26 09:13 Lachesis Note Added: 0004493
2020-10-26 09:52 Lachesis Note Added: 0004494
2020-10-26 18:24 Saga Musix Note Added: 0004495
2020-10-26 18:59 Saga Musix Note Added: 0004496
2020-10-26 18:59 Saga Musix Status assigned => resolved
2020-10-26 18:59 Saga Musix Resolution open => fixed
2020-10-26 18:59 Saga Musix Fixed in Version => OpenMPT 1.29.06.00 / libopenmpt 0.5.4 (upgrade first)
2020-10-26 18:59 Saga Musix Target Version => OpenMPT 1.29.06.00 / libopenmpt 0.5.4 (upgrade first)