tildearrow / furnace

a multi-system chiptune tracker compatible with DefleMask modules
GNU General Public License v2.0
2.6k stars 208 forks source link

In OPLL, if 1Axx and 1Bxx is the first FM effect in the playback, they will be ignored #1649

Closed tildearrow closed 8 months ago

tildearrow commented 10 months ago

Originally reported on Discord

tildearrow commented 8 months ago

I think I may have found the cause of this bug.

When the song begins, instrument changes happen. These set insChanged (of each channel) to true, which reloads the user patch. Then 1Axx/1Bxx occur on a specific channel, which sets AR and changes that channel's patch state. However, the next channel also has a note, so it sets insChanged and yes, reloads the user patch again. The previous 1Axx/1Bxx effect is seemingly ignored due to this.

I am pretty sure this is intentional. The only way to work around it is by having 1Axx/1Bxx on the last channel with the user patch, and calling it every time another channel sets the user patch.