I got the MOD player running at 3-4ms/f on the 486DX2 at 66mhz with a 4-channel MOD file playing at 22khz. Doing okay, but not perfect.
The vibrato effect (4xx) has been implemented. I had to write another program to generate the 2kb tables of precomputed fixed-point (1.15, don’t ask) vibrato pitch shift values, and aside from the per-sample branch to check if the vibrato is active, it doesn’t have performance overhead unless you’re using it.
The vibrato was one of the more complicated effects, and I had been putting it off for a while. Now that it’s out of the way, other effects are being added much faster.
The glissando effect (E3x) on the slide-to-note effect (3xy) is also in. This one is just a modification to some per-tick code, adding an extra branch, so performance impact is negligible when not in use.
Progress is poking along. I might get this working natively on my Linux machine just so I can get some compiler warnings. Apparently Watcom 10.0a doesn’t warn when you pass a pointer into a function that’s the wrong type. You can probably imagine how long that took to track down.
Also, it’d be nice to have a native MOD player kicking around for other projects.