Repaired a broken preset in the tracker.#230
Conversation
|
Able to replicate. I have a hunch what is going on: the unconnected send manages to write to the section of the memory reserved for the delay buffers? Fortunately, not a major bug, as normally user would optimize away unconnected sends anyway, but I'll make this handling more robust, deleting the disabled units, unconnected sends, and sends targeting disabled units, from the patch altogether before compiling it. |
|
So, I found this comment and line in the code (LOL): Line 191 in 6a331f7 That address there has the most significant bit set, so it should be "global send" aka cross-instrument send aka address relative to the start of the synth object. And, in the uncompiled version, nothing bad happens, cause the functionality for global sends is included. HOWEVER, during compilation, due to some "clever logic", it detects that global sends are not used (cause the send was unconnected), and thus we can optimize the functionality for global sends away, and all sends are relative to the start of the voice. Now, in your test patch, the send is in the second instrument, and it's now a relative send. So, the send address now targets an address just beyond all the synth workspace. And what's lurking beyond the synth workspace? That's right, the delay buffers! The "brutal" sound you hear is a sudden spike like value in the delay buffer. Oh well, this is probably an easy fix, and fortunately not terrible bug, cause normally user would optimize away all the unconnected sends. |
|
Checked the graph theory on all presets; those are the remaining unconnected sends. |
This took me a while to figure out :) Steps to reproduce:
reproducing minimal example:
testbug.yml
The mechanism was essentially an unconnected "send" which somehow only affected the x86 asm player, not the native synth in the tracker.