This happens because SE_Play does not check if there are any free channels.
Could be e.g. fixed by initializing a Semaphore to se channel count (7?) and then aquiring the Semaphore at the beginning of SE thread-for-loop and releasing it at the end of the for-loop.
The main thread could check this semaphore and when it is 0 (= would block) issue a Output::Warning and ignore that SE (like the SDL audio version does).
A game where this could be easily reproduced for testing?

Here is an artificial test.
I only accept patches that show 493 "No free channels available" warnings in the 500 SE testcase ;)
Most helpful comment