amblight.xm F00 weirdness and possibly other stuff

Started by A11CF0, April 13, 2023, 19:32:53

Previous topic - Next topic

A11CF0

Hello.
Recently I've stumbled upon an old module called "Ambient Light" and found, that it gets strangely cut in the middle when played with OpenMPT. However, libopenmpt-based players play it up to the end, as do Bass-based ones.
After a quick look into the file itself I found a lot of F00 commands in the 4th pattern. Removing them makes the module fully playable with OpenMPT.
And here's something really surprising: These F00 commands seem to break the accessibility of the pattern editor. After moving to any row containing them, accessibility announcements stop working until Stop is pressed.
Here's the link to the module: https://modarchive.org/index.php?request=view_by_moduleid&query=33429.

Saga Musix

In FT2, F00 sets the ticks per row to 65536, effectively ending the song. However, even though it may appear as if audio playback has stopped, the song is in fact playing (if you wait long enough, the next row will eventually be played...), hence there won't be any accessibility announcement (just like during regular playback). The difference between libopenmpt and OpenMPT is that libopenmpt currently ignores F00 commands, because the 65536 ticks/row behaviour is not very useful there. In the future, song playback should simply stop there (maybe after all voices that might still be playing have finished playing). BASS might be doing something similar, because XMPlay (which is based on the same engine as BASS) does in fact recognize those F00 commands as the end of the song and divides it into two sub-songs (which is something that BASS does not support).
All in all, it's hard to reason what the intention here was I but would say that the module clearly contains two separate short songs, with the second song starting after those F00 commands. The only issue in OpenMPT right now is that the second subsong was not detected in the song length estimation, as it completely stopped scanning the module after encountering the first F00. This will be fixed in the next OpenMPT update, so two subsongs will be reported for this module.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

A11CF0

Quote from: Saga Musix on April 13, 2023, 21:42:29In FT2, F00 sets the ticks per row to 65536, effectively ending the song. However, even though it may appear as if audio playback has stopped, the song is in fact playing (if you wait long enough, the next row will eventually be played...), hence there won't be any accessibility announcement (just like during regular playback). The difference between libopenmpt and OpenMPT is that libopenmpt currently ignores F00 commands, because the 65536 ticks/row behaviour is not very useful there. In the future, song playback should simply stop there (maybe after all voices that might still be playing have finished playing). BASS might be doing something similar, because XMPlay (which is based on the same engine as BASS) does in fact recognize those F00 commands as the end of the song and divides it into two sub-songs (which is something that BASS does not support).
All in all, it's hard to reason what the intention here was I but would say that the module clearly contains two separate short songs, with the second song starting after those F00 commands. The only issue in OpenMPT right now is that the second subsong was not detected in the song length estimation, as it completely stopped scanning the module after encountering the first F00. This will be fixed in the next OpenMPT update, so two subsongs will be reported for this module.

Thanks for the great explanation of the 65536 ticks per row quirk. Now everything is clear in this case.