View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001170||OpenMPT||[All Projects] Playback Compatibility||public||2018-11-23 13:47||2018-11-25 17:18|
|Reporter||Slender||Assigned To||Saga Musix|
|Product Version||OpenMPT 1.27.11.00 / libopenmpt 0.3.13 (current stable)|
|Target Version||OpenMPT 1.28.01.00 (goals)||Fixed in Version||OpenMPT 1.28.01.00 (goals)|
|Summary||0001170: section is skipped in this SoundFX module|
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.
|Tags||No tags attached.|
|Has the bug occurred in previous versions?|
|Tested code revision (in case you know it)||r10988|
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.
So is the behavior here actually correct and UADE is getting it wrong?
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.
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.
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.
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.
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.
Now also backported to libopenmpt 0.3 in r10993.
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.
|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|