Philadelphia, PA

For quite some time now, us at Battle of the Bits have been messing around with GreaseMonkey's IT2TIA tool -- .  It's buggy, not documented, and limited, but it at least works.  What sets IT2TIA aside from what is currently available is that you can make TIA music by tracking the IT format.  It also almost tunes notes by timed warbles between frequencies.

Here's an example of something I did for a One Hour Battle.  It has a few skips in Stella and it's not perfectly tuned, but it works.  Heck it was done in an hour as well.

Now, GreaseMonkey's tool IT2TIA requires a few things.

1.)  Python
2.)  An IT tracker.  (I use ModPlug.)
3.)  An Atari 2600 emulator.  (I use Stella.)

No assembler is required.

You must already have Python installed and save to so it can be an "executable".  If you are running Linux or Mac OSX w/ Darwin, I assume you know how to use chmod; and won't be referencing you lot much from here on out.  You also need the "sunds.bin".  This is the assembled binary program itself.  IT2TIA just injects the sequencer data.  In summary, basically you just need those two things: and sunds.bin

If you execute by itself, it generates an IT pack with all the TIA waveforms; even the ones removed from Paul Slocum's Music Kit.  Your next step is to start composing your song in your IT tracker.

Keep in mind that the TIA only has 2 hardware sound channels.  You can use the example found in the directory if you choose.  Yes, I know that the has 3 channels (one being unused), but channels other than the first two are ignored.

Inside is the strange README.  Pasted here:

# IT2TIA converter by Ben "GreaseMonkey" Russell, 2011 -- PUBLIC DOMAIN
# You will need the IT2TIA driver (sunds.bin).
# Some requirements:
# - Full channel volumes, tempo 150.
# - Mono, samples, compat Gxx off, old effects off, Amiga slides.
# - Bxx on last pattern played.
# - If it's not an effect, don't put it past the second channel.
# - Same goes for effects that affect pitch/volume/waveform.
# Notes:
# - Cxx should only be C00 and NOT in any other form.
# - Same for Pxy, Xxx, Yxy (no panning).
# - Same for Mxx, Nxy, Vxx (no multiplies, so no chvol/glbvol).
# - Same for Oxx, Zxx, SAx (no sample modification).
# - Same for S3x, S4x, S5x (triangle mod only - also S5x == panning).
# - Same for SBx (ruins linearity + this converter won't like you).
# - Some stuff has not been implemented yet. Check this script.
# - There are no voleffects other than "set volume" at this stage.
# - Don't use separators (+++) in your orderlist, it's STUPID and IT'LL BREAK.
#   If you want anything playing at a different speed or something,
#   copy/paste into a new pattern.
#   By the way, playback ordering pertains to the orderlist.
# - Don't put too much on the last tick of a pattern.
#   This is a converter limitation. YOU WILL LEAK EXTRA TICKS INTO THE PATTERN.
#   In fact, it's best not to put too much on ANY tick.
# Space specific notes:
# - Orders + (Patterns * 2) <= 256.
# - Patterns cannot change info more than 256 times.
#   You may need smaller patterns.
# - Try not to use vibrato (Hxy) too much. (NOT IMPLEMENTED YET)
# - Unused patterns will be ignored

In summary it supposes that you are familiar with IT effects commands, it tells which ones are supported, and that tempo 150 is necessary,

One thing that this doesn't tell you is that the sequencer data is very bloated and you will soon run out of the Atari 2600's 4K ROM space very quickly if you create songs that are too complicated.

Once you've composed your song, the syntax for outputting to Atari 2600 format is: output.bin.  The is the filename of your IT module.  The output.bin is the Atari 2600 program that's ready to be run in an emulator or a Melody/Harmony cart.  I wrote a batch file to do this for me:

@echo off test.bin

You can either add a line for Stella to run your binary or create a shortcut of Stella in your directory to drag the binary file to to execute your song.

A couple things..  If it2tia gives you an error, to be honest, I told you it was buggy and even the code says to talk to GreaseMonkey about the issue.  Try to keep things simple and follow the guidelines provided.  If the track assembles properly without errors but it does not play audio properly, you have run out of ROM space.  Again this is an issue with the code.

IT2TIA is a fun little program that I hope gets tested and bugfixed by issues spawned from this thread.

Cheers, GreaseMonkey!

Last edited by B00daW (May 25, 2011 8:47 pm)


looking forward to having a play when I'm back home :-)  I was hoping this would surface at some point!!  Nice work on the IT auto generator.

Nomad's Land

my thoughts on this: it's of course wonderful to have all these IT/XM2something converters. on the other hand i'm getting increasingly weary of them, because they are generally too cumbersome to use. if i have to compile the whole piece 50 times just to get rid of a little detuning or timbre problem, i'm not going to get very far with the music, as i constantly have to fight with the limitations of the converter rather than focusing on the limitations of the actual soundchip. so please, dear developers: we need more proper trackers!


Well, with a full table of sounds in an IT you have all the tuning and timbre options. Just stick to two channels, and be wary that it might sounds slightly different (more rounded, less bright) once compiled.  It would be nice to have something allows a realtime preview on the hardware but it would require a dedicated cart with additional onboard RAM and an interface converter.