"Remove unused instruments" thinks unchecked sequences are used

Please post about bugs here.
Forum rules
When making a bug report, please try to be as specific as possible. Include information on how to reproduce the bug and an example file if possible.
If the application crashed, please include the generated memory dump file as well.
User avatar
Posts: 59
Joined: Fri Oct 13, 2017 11:18 pm

"Remove unused instruments" thinks unchecked sequences are used

Postby PinoBatch » Sat Feb 17, 2018 12:44 am

"Edit > Cleanup > Remove unused instruments" isn't as thorough as it could be. It doesn't remove unused sequences that are referred to by used instruments but unchecked, and the excess unused sequences caused confusion for a user of FamiTracker's text export.

I reproduced this bug in FamiTracker 0.4.6 and FamiTracker 0.5 beta 5 (Jul 13 2015). It is fixed in 0CC-FamiTracker

Steps to reproduce

  1. Open FT and let it create a new file.
  2. Create a new 2A03 instrument with "volume" set to 8 and "duty" set to 1. This should be instrument 00 with volume sequence 0 and duty sequence 0 checked.
  3. Place at least one note with instrument 00 in Pulse 1.
  4. Create a new 2A03 instrument with "volume" set to 12 and "arpeggio" set to 40 36 33, fixed. This should be instrument 01 with volume sequence 1 and arpeggio sequence 0.
  5. Place at least one note with instrument 01 in Triangle.
  6. Remembering that volume in Triangle can only be zero or positive, open instrument 01 and uncheck Volume.
  7. Edit > Cleanup > Remove unused instruments
  8. Open instrument 01 and look at volume sequence 1.
  9. File > Export text... and choose a name.
  10. Open the text export in Notepad.

Result: The '12' stays in volume sequence 1 despite no checked sequence referring to it. Volume sequence 1 (MACRO 0 1) is also present in the export.

Expected: Volume sequence 1 is removed because it is not checked. It shows up in neither the instrument editor nor the exported text.

What's happening is that if a used instrument refers to a particular sequence number, FamiTracker doesn't consider whether it's checked or unchecked before determining whether or not to remove the sequence. So a workaround is to change all unchecked sequences to use either a used Sequence # or a nonexistent one before removing unused instruments.
If MMC5/VRC6 is a crutch, then VRC7 is a wheelchair ♿