View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001323||OpenMPT||Audio I/O||public||2020-05-15 05:46||2020-05-16 11:30|
|Reporter||teimoso||Assigned To||Saga Musix|
|Product Version||OpenMPT 1.29.00.* (old testing)|
|Target Version||OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first)||Fixed in Version||OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first)|
|Summary||0001323: During playback (using OPL?), Channel 1 may stop being processed if no free NNA/preview channels can be found|
While playing back MPTM modules with OPL instruments in use, and if the user (keyjamming) plays multiple notes at the same time at the immediate start of a pattern, Channel 1 seems to stop being processed (even when it only plays sample instruments). I say "stop being processed" because Channel 1 either becomes silent or hangs on the last note.
|Steps To Reproduce|
In my experience, (human) reproduction is difficult due to the precise timing needed.
I've reproduced it a few times with these steps:
A module file is attached, and can be used to skip steps 1-3.
If successful, Channel 1 will no longer be processed until playback stops.
Perhaps coincidentally, I have not been able to reproduce the issue without OPL instruments, without instrument mode, or keyjamming with the same instrument as Channel 1.
I have not tested with any other formats than MPTM, or without any free channels.
Originally, I encountered the issue in an MPTM module with 10 channels while playback was locked to two patterns. In the first row of both patterns, Channel 1 only contained a Note Off event. As the problem was occurring, pitch sliding effects in Channel 1 were inaudible (it did not contain any other type of effect).
It might be relevant that OpenMPT crashed once while I was trying to reproduce. It froze at the instant a pattern looped back to the beginning, while I was rapidly playing notes using an OPL instrument. Unfortunately, no memory dump was created, and at the time I wasn't aware I could try to get one through other methods.
|Tags||No tags attached.|
|Has the bug occurred in previous versions?||Unknown|
|Tested code revision (in case you know it)||r12808|
ch1_example.zip (537 bytes)
I couldn't reproduce it so far, so I think a few more things need to be clarified:
To me it seems more likely that the problem is related to song looping rather than pattern transitions, although the former of course implies the latter. Either way this is rather mysterious, because keyjazz uses a different set of playback channels than pattern notes.
Maybe a short video demonstrating the problem would also help. You can use the Windows Game Bar (Win+G) for that.
I found one suspicious code path that could cause problems in instrument mode, but only if lots of NNA-ed notes (about 250) stack up. Maybe you're somehow managing to trigger that path but so far I can't, especially with such a simplistic module.
The pattern editor.
With "Loop Song" activated, the issue occurs with or without "Loop Pattern" enabled.
I was mistaken; it turns out the issue is not related to the start of the pattern at all, and can happen at any row. I suspect it has something to do with Note Off / Note Cut events, but this is just a guess.
I never used instruments with an NNA setting other than "Note Cut" when seeing this problem, so I'm not sure if that's related.
And yes, my bad, the previous example module wasn't so great for testing; for what it's worth, after changing the file, I've had success by just mashing keys during playback.
vid_vibrato.zip (459,167 bytes)
vid_slide.zip (457,509 bytes)
ch1_example-2.zip (1,207 bytes)
The issue appears to be gone in r12838. Thanks for the quick response!
|2020-05-15 05:46||teimoso||New Issue|
|2020-05-15 05:46||teimoso||File Added: ch1_example.zip|
|2020-05-15 05:47||teimoso||Description Updated|
|2020-05-15 13:57||Saga Musix||Note Added: 0004313|
|2020-05-15 14:01||Saga Musix||Note Added: 0004314|
|2020-05-15 17:13||Saga Musix||Note Added: 0004320|
|2020-05-15 18:15||Saga Musix||Assigned To||=> Saga Musix|
|2020-05-15 18:15||Saga Musix||Status||new => assigned|
|2020-05-15 19:02||Saga Musix||Note Added: 0004322|
|2020-05-15 19:02||Saga Musix||Status||assigned => feedback|
|2020-05-15 19:02||Saga Musix||Target Version||=> OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first)|
|2020-05-15 19:25||teimoso||Note Added: 0004323|
|2020-05-15 19:25||teimoso||File Added: vid_vibrato.zip|
|2020-05-15 19:25||teimoso||File Added: vid_slide.zip|
|2020-05-15 19:25||teimoso||File Added: ch1_example-2.zip|
|2020-05-15 19:25||teimoso||Status||feedback => assigned|
|2020-05-15 20:36||Saga Musix||Status||assigned => feedback|
|2020-05-15 20:36||Saga Musix||Note Added: 0004327|
|2020-05-15 22:33||teimoso||Note Added: 0004329|
|2020-05-15 22:33||teimoso||Status||feedback => assigned|
|2020-05-15 22:34||Saga Musix||Status||assigned => resolved|
|2020-05-15 22:34||Saga Musix||Resolution||open => fixed|
|2020-05-15 22:34||Saga Musix||Fixed in Version||=> OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first)|
|2020-05-16 11:30||Saga Musix||Summary||During playback (using OPL?), Channel 1 may stop being processed if the user plays notes at the start of a pattern => During playback (using OPL?), Channel 1 may stop being processed if no free NNA/preview channels can be found|