Progress, you ask? Why, yes. We have some.
I fixed a bug* in which "tick-zero of a row" was confused with "first tick of a note," which caused the tick-zero handling to only be executed when a new note is started. DOH!
(* The "bug" existed in my head as well, since I wrote the code to work that way because that is how I understood it. Imagine my shock and surprise when I finally figured out that it was all wrong.)
We now have the following effects supported:
- 0xy: Arpeggio
- 1xx: Portamento Up
- 2xx: Portamento Down
- 3xx: Portamento To Note
- 4xy: Vibrato
- 5xy: Portamento To Note + Volume Slide
- 6xy: Vibrato + Volume Slide
- 7xy: Tremolo
- Axy: Volume Slide
- E1y: Fine Portamento Up
- E2y: Fine Portamento Down
- EAy: Fine Volume Slide Up
- EBy: Fine Volume Slide Down
- Gxx: Set Global Volume
That's a pretty nice roster.
All these effects have been tested and work as expected -- well, at least the way I understood them to work, based on my research, reference documents, and the feedback from this forum.
I'm quite happy with the results. I feel now that I have a rather solid framework that handles ticks and effects correctly, so adding new effects should go smoother in the future -- I mean, what could possibly go wrong?
(Said the guy that has had to re-write his tracker engine multiple times to fix design flaws ...)
Anyway, my next step is to implement a few more of the low-hanging fruit effects, such as
Set Song Speed (Fxx),
Tremor (Txx), etc., and see how it goes.
Stay tuned! (Har! Har! see what I did there?)
-dZ.
UPDATE: Added Gxx effect.