View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001934 | OpenMPT | Playback Compatibility | public | 2025-12-09 13:29 | 2025-12-10 03:47 |
| Reporter | Lachesis | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | new | Resolution | open | ||
| Platform | x86_64 | OS | Wine | OS Version | 10.15 (Staging) |
| Product Version | OpenMPT 1.32.05.00 / libopenmpt 0.8.3 (current stable) | ||||
| Summary | 0001934: XM invalid instrument number inaccuracies :) | ||||
| Description | I found some interesting new things about invalid instrument numbers while trying to fix libxmp's Fasttracker 2 default volume implementation. I've attached the new libxmp test module for these quirks, but to summarize the suspected OpenMPT bugs: 1) When a channel currently has an invalid instrument active, instrument numbers should not apply default volume/pan or reset the envelope positions. Row 4 of the example (rows 4-5, 20-21 of the module) plays too loud in OpenMPT, presumably because it reset the envelope positions. This also causes row A of the example below (rows 10-11 of the module) to play when it should be silent. 2) When activating an invalid instrument cuts the channel, it should also zero the channel volume—the volume number by row 4 (rows 4, 20 of the module) is actually necessary for the note to be heard. Rows 28-29 in the module should be silent, but they can be heard in OpenMPT. | ||||
| Steps To Reproduce | Compare the attached module's playback with OpenMPT (or openmpt123) to Fasttracker 2 (or clone). The left channel contains the invalid instrument lines, and the right channel contains equivalents using normal constructs. Both channels should play the same, aside from some clicks in the left channel in the original FT2. | ||||
| Additional Information | https://github.com/libxmp/libxmp/pull/927 (please extend the bug report form timeout if possible) | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Has the bug occurred in previous versions? | |||||
| Tested code revision (in case you know it) | |||||