View Issue Details

IDProjectCategoryView StatusLast Update
0001345OpenMPTPlayback Compatibilitypublic2020-07-01 06:58
Reportersherekhan Assigned To 
PrioritynormalSeveritytrivialReproducibilityalways
Status closedResolutionno change required 
Platformx64OSWindowsOS Version10
Product VersionOpenMPT 1.29.01.00 / libopenmpt 0.5.0 (current stable) 
Summary0001345: OpenMPT does not enable ProTracker mode on specific MOD file
Description

I discovered this bug when listening to the module "Generator" by Hoffman (https://modarchive.org/index.php?request=view_by_moduleid&query=177714) in FooBar with the OpenMPT plugin. When testing, I found that the same bug is present when using OpenMPT 1.29.01, as well as the online player on ModArchive.

Hoffman likes to do a lot of trickery with his patterns and samples to squeeze as much as possible into the limited Protracker .mod-format. One of these is concatenating multiple samples into one, and then using sample offset (command 9xx) to swap between the parts, working around the 31 samples limit.

Another trick is a workaround to the fact that you can only trigger one effect command per line, which is done by triggering one or more effects without triggering a note, then triggering a note, then the effects can be repeated by entering notes without entering the sample #.

In the mentioned module, Hoffman uses these two tricks to combine 4 chord samples into one single sample (#0F), and to combine the effects 9xx (sample offset) with Cxx (volume, which is an effect rather than a separate slot in Protracker patterns).

Observe this pattern sequence:

F#30F093A <--- Trigger the sample F at offset $3A at full volume

      • 0F093A <--- slot the sample offset $3A for the next triggering of a note
      • 000000
      • 000C00 <--- set volume to 0
      • 000000
        F#3000C40 <--- trigger note F#3 without specifying sample #, at full volume.

Note that the last line specifies a note (F#3), an effect (C40, i.e. volume 64), but the sample is set to zero, i.e. no sample is specified. In Protracker, this triggers samples F at offset $3A and full volume. In OpenMPT however, this line triggers the sample from offset 0, ruining the song.

I do not know for sure, and I am nowhere near Hoffmans proficiency in pattern hacking, but my guess is this bug also applies to other combinations of commands triggered without specifying a sample #.

Steps To Reproduce

The module can be downloaded and/or played from https://modarchive.org/index.php?request=view_by_moduleid&amp;query=177714. The bug is apparent around the 1:11 mark in the module, at pos 20 in the song when it starts to play pattern 0000016.

For reference, at 1:26:17 in the following video you can hear how this part of the module is supposed to sound:
https://youtu.be/zVF-GbGHxA8?t=5177

In the video, Hoffman is doing a DJ set of his own modules on 2 Amiga 600s using a custom software called PT1210 to mix two modules on the fly. PT1210 does not appear to have any problems with this module, and I am confident Ian would not be playing that module on it if it did.

I myself tried playing back the module in a couple of players and trackers:

OpenMPT 1.29.01, FooBar 1.4.2 with foo_openmpt54 0.4.8 and TMA online player all exhibit the same bug.

Protracker 2.3d and Protracker 3.61 on Amiga plays the module correctly, i.e. as in the video linked above. I also tried OctaMED SoundStudio 1.03, which mostly handles this module fine, except that it adds a noisy hiss when the module slots the 9xx effect without a note. All Amiga programs tested using WinUAE running Workbench 3.1.

TagsNo tags attached.
Has the bug occurred in previous versions?I don't know, but probably
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2020-07-01 06:56

administrator   ~0004393

The problem here is that right in the very first pattern, there is a C-7 note, which is outside of the supported note range of ProTracker. OpenMPT thus deduces that this file cannot possibly have been written in ProTracker, and thus does not enable any ProTracker quirks.

If you remove that note and resave the file, it will play correctly.

Saga Musix

Saga Musix

2020-07-01 06:58

administrator   ~0004394

The official version on http://janeway.exotica.org.uk/release.php?id=85703#downloads doesn't have this issue by the way - I will replace the file on ModArchive with the download from Kestra.

Issue History

Date Modified Username Field Change
2020-06-30 19:20 sherekhan New Issue
2020-07-01 06:54 Saga Musix Summary Sample offset not correctly applied in Protracker module when new note is triggered without specifying sample number => OpenMPT does not enable ProTracker mode on specific MOD file
2020-07-01 06:56 Saga Musix Note Added: 0004393
2020-07-01 06:58 Saga Musix Note Added: 0004394
2020-07-01 06:58 Saga Musix Status new => closed
2020-07-01 06:58 Saga Musix Resolution open => no change required