You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found in a bad module I made in 2007: if the volume envelope has two overlapping points at the end, the first of the two points will be treated as the end of the envelope, even if the first point is the sustain loop. This module plays correctly in Impulse Tracker. (Note: this envelope is from a module made with Modplug Tracker 1.16 that I copied into a new module. OpenMPT doesn't allow constructing envelopes like this anymore, but it appears to somehow be completely valid in IT regardless.)
edit: my description of the bug is slightly wrong. libxmp actually skips the sustain point entirely and ends up using the second point instead thanks to a loop in get_envelope.
The text was updated successfully, but these errors were encountered:
Unfinished patch to work around this. It fails 11 tests and hasn't been verified at all against other formats with envelopes, so it needs further work.
Maybe worth mentioning here for documentation's sake, but should probably not influence the fix for this:
Every envelope segment is at least one tick long in IT, meaning that placing two points on the same x value causes the second point to be delayed by one tick in IT. This causes envelopes from older MPT/OpenMPT modules to end up desynchronizing with the rest of the track.
Found in a bad module I made in 2007: if the volume envelope has two overlapping points at the end, the first of the two points will be treated as the end of the envelope, even if the first point is the sustain loop. This module plays correctly in Impulse Tracker. (Note: this envelope is from a module made with Modplug Tracker 1.16 that I copied into a new module. OpenMPT doesn't allow constructing envelopes like this anymore, but it appears to somehow be completely valid in IT regardless.)
dmad4_test.it.zip
edit: my description of the bug is slightly wrong. libxmp actually skips the sustain point entirely and ends up using the second point instead thanks to a loop in
get_envelope
.The text was updated successfully, but these errors were encountered: