View Issue Details

IDProjectCategoryView StatusLast Update
0001170OpenMPT[All Projects] Playback Compatibilitypublic2018-11-25 17:18
ReporterSlenderAssigned ToSaga Musix 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product VersionOpenMPT 1.27.11.00 / libopenmpt 0.3.13 (current stable) 
Target VersionOpenMPT 1.28.01.00 (goals)Fixed in VersionOpenMPT 1.28.01.00 (goals) 
Summary0001170: section is skipped in this SoundFX module
Description

In operation stealth - bond32.sfx, http://modland.com/pub/modules/SoundFX/Jean%20Baudlot/operation%20stealth%20-%20bond32.sfx, starting around 0:16 in to the module, there is a section that seems to be skipped when it shouldn't be. The section plays normally when played with another player with SoundFX support, such as UADE.

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

Activities

Saga Musix

Saga Musix

2018-11-23 20:53

administrator   ~0003730

There is a pattern break effect that is also present when playing the song in MMS 1.18 (the 31-instrument version). I cannot get earlier versions of the program to run properly to verify if they would ignore this effect, but then I wonder how the author of the tune would have even managed to enter the effect if they used such a version.

Slender

Slender

2018-11-23 21:17

reporter   ~0003731

So is the behavior here actually correct and UADE is getting it wrong?

Saga Musix

Saga Musix

2018-11-23 21:18

administrator   ~0003732

It's hard to tell because I cannot get the exact tracker version that was used to create this song to run. OpenMPT's behaviour is certainly weird and UADE sounds more correctly, but without knowing if there is a version of SoundFX that ignores pattern break commands, I cannot be confident to change the behaviour.

Saga Musix

Saga Musix

2018-11-23 23:04

administrator   ~0003734

I had a look at the original game data, and the original files are not plain SoundFX files but they are converted to a more compact format. Someone wrote a tool to rip those files and convert them back to SFX (http://aminet.net/package/mus/misc/OpStealth_rip). After reading through the code that generates the final file (make_song.e), I found that it touches the note values, and it seems like this code is not aware of the "Note Cut" (FFFE) command and as a result converts it into a Pattern Break (FFFC). SoundFX 1.8 did not support Pattern Break and plays the file "as intended"; From my understanding SoundFX 1.9 is supposed to be able to interpret these commands (thus playing the file "wrongly") but I was not able to verify this myself. I will try to get in contact with the author to confirm this.

Saga Musix

Saga Musix

2018-11-23 23:41

administrator   ~0003735

r10990 contains an initial workaround for this problem (only applied to BOND23 and BOND32 files from the Operation Stealth soundtrack), but I am still waiting for a working version of SoundFX 1.9 or its replayer sources to confirm whether this workaround is really necessary or if Pattern Breaks should only be supported in version 2.

Slender

Slender

2018-11-24 14:30

reporter   ~0003739

Incidentally, with this fix in place, the skipped section sounds slightly more faithful to the original in OpenMPT than UADE, UADE will often produce clicks in between some of the notes, most noticeable in BOND32.

Saga Musix

Saga Musix

2018-11-24 14:48

administrator   ~0003740

Yup, that's because the UADE player will play a note at very low frequency rather than stopping the previous note as it was intended.

Saga Musix

Saga Musix

2018-11-25 13:29

administrator   ~0003741

Now also backported to libopenmpt 0.3 in r10993.

Saga Musix

Saga Musix

2018-11-25 17:18

administrator   ~0003743

After some nice chats with the SoundFX developer, we came to the conclusion that the heuristics for detecting those Operation Stealth tracks are the only possible way to "fix" those broken files. SoundFX 1.8 (the version that the UADE player is based on) was indeed the last version without support for the BreakPat command, and there is no way to tell files saved with 1.8 and files saved with 1.9 apart. The heuristics will have to stay in place.

Issue History

Date Modified Username Field Change
2018-11-23 13:47 Slender New Issue
2018-11-23 20:53 Saga Musix Note Added: 0003730
2018-11-23 21:17 Slender Note Added: 0003731
2018-11-23 21:18 Saga Musix Note Added: 0003732
2018-11-23 23:04 Saga Musix Note Added: 0003734
2018-11-23 23:40 Saga Musix Assigned To => Saga Musix
2018-11-23 23:40 Saga Musix Status new => assigned
2018-11-23 23:41 Saga Musix Note Added: 0003735
2018-11-24 14:30 Slender Note Added: 0003739
2018-11-24 14:48 Saga Musix Note Added: 0003740
2018-11-25 13:29 Saga Musix Note Added: 0003741
2018-11-25 13:30 Saga Musix Status assigned => resolved
2018-11-25 13:30 Saga Musix Resolution open => fixed
2018-11-25 13:30 Saga Musix Product Version => OpenMPT 1.27.11.00 / libopenmpt 0.3.13 (current stable)
2018-11-25 13:30 Saga Musix Fixed in Version => OpenMPT 1.28.01.00 (goals)
2018-11-25 13:30 Saga Musix Target Version => OpenMPT 1.28.01.00 (goals)
2018-11-25 17:18 Saga Musix Note Added: 0003743