Saturday, December 3, 2011

Invaluable resources for making an IT player

I'll probably get killed by Google for posting a crapton of links, but here we go.

First things first, everyone loves ITTECH.TXT. There's a wikified 2.14v5 one on the SchismTracker wiki:
http://schismtracker.org/wiki/ITTECH.TXT

Then of course there's the changelogs. I've started working on an IT player library and these are absolutely invaluable (they even tell you when each feature was introduced):
http://gm.64pixels.org/stuff/others/impulse_tracker_versions.txt

The old ITTECH.TXT/.DOC files mentioned a few things...
  • For IT 2.03, the Convert flag was defined, but in versions before that it was simply mentioned that it was used internally for conversion and it came with a warning not to stick anything in there.
  • Voleffects were implemented in IT 2.08, but originally proposed in 2.03, although while Ax-Dx were the same, Ex and Fx were for pan slides, and Gx/Hx were only mentioned as "193->255 WILL probably be assigned meanings too..".
There's a link to Storlek's tracker museum if you want to take a look into these. Just note that the documentation can be quite incomplete - the changelog might be more worth looking into.

Jeffrey Lim was kind enough to document the resonant filters, even providing a bit of source code for calculations... when someone asked, that is. Oh yeah, it's also documented in MikIT.
http://schismtracker.org/wiki/Resonant%20Filters

He wasn't kind enough to document the IT214 sample compression, though. Fortunately, someone else worked out how it worked. It's documented in some huge comment here:
http://xmp.sourcearchive.com/documentation/2.0.4d-12/itsex_8c-source.html

Some notes though.
  • By 0x8000 bytes, they mean each block decompresses to 0x8000 bytes (except for the last one in most cases). I was foolish enough to misread this.
  • If a block decompresses badly, I forget exactly what happens, but it moves onto the next block. I don't want to implement this in munch.py though, as SchismTracker doesn't like it, and neither does anything else
  • IT215 compression is indicated by Cvt bit 2 (0x04 / delta coding). It is done per-block.
  • The only thing that implements stereo compressed samples as far as I know is XMPlay, which essentially treats them as two individual samples compressed one after another. munch.py will write these.
Needless to say, http://modarchive.org has a crapton of .it files for your testing pleasure (as well as a bunch of other formats).

Finally, the most important resource, the trackers themselves. Storlek's tracker museum has a bunch of versions starting from IT 1.03, and I suggest you download them all and mirror the crap out of them before they disappear FOREVER (like for instance IT 1.04):
http://rigelseven.com/tracker_museum/impulse_tracker/

So let's make the world a modplug-free place, and start coding some good IT players for once.

No comments:

Post a Comment