Here is today's update: I have finally implemented
Note Portamento + Volume slide (5xy) and
Vibrato + Volume Slide (6xy) effects.
I discovered a bug in my code which resulted in the last effect command being left on for a single tick when a new pattern starts.
It turned out to be a very pernicious bug, caused by some vestiges of legacy code from the old tracker still remaining. I decided to eradicate the buggy code, and re-implement large chunks of the old music player.
Anyway ... that's all done now. Phew! The current line up of available effects is:
- (0xy) Arpeggio
- (1xx) Portamento Up
- (2xx) Portamento Down
- (3xx) Portamento To Note
- (4xy) Vibrato
- (5xy) Portamento To Note Plus Volume Slide
- (6xy) Vibrato Plus Volume Slide
- (Axy) Volume Slide
I did not get around to implementing Tremolo (7xy), but the night is young, so ... let's see ...
I've attached a copy of the algorithm I wrote describing my new music player, in case anybody out there is interested. This is what I used as a guide when re-writing the player today.
It is written in a "C-ish" pseudo-code, so it may or may not be easy to follow. I apologize in advance if my ugly pseudo-code burns anybody's eyes.
-dZ.