Music for the Atari TIA chip, featured in the Atari 2600/7800
Submission should be able to play back on real hardware (or in an emulator)!
- File Formats & Playback
- See also
The TIA (Television Interface Adaptor) is a custom chip by Atari in the Atari 2600 (a.k.a. VCS) and the Atari 7800. The TIA is the component responsible for both audio and visual graphics on the Atari 2600. On the Atari 7800 it is only responsible for audio.
This article covers a small technical specification of sound chip, available tools to compose for the format, ways to reliably play back files as well as mentioning some related tools and other useful links.
Sound is delivered through two (2) independent audio oscillators (channels) programmed through CPU, in which each channel can have 16 different types of "waveforms".
Each oscillator has a 5-bit pitch precision (by dividing a 30kHz signal by those 5 bits), which only gives it 32 values to choose a pitch from. As a result of that, the tones can get out of tune quite easily without any smart tricks.
The TIA was created for sound effects rather than music, therefor no waveform has a complete note range - one octave might miss about half of the notes, which makes the melodic creation a whole ton harder (but still worth dying for).
The audio control register has a 4-bit bus for each oscillator and can be used for selecting the "waveform". Each waveform is tuned differently; but as some of them sound similar, changing those waveforms might help in filling the notes that other waveforms lack.
As last, each oscillator also has a 4-bit volume control, giving 16 values to choose the volume from.
Several TIA music routines / tools exist out there. Not all of them are easy to use as some require the user to program directly in assembly code. Luckily there are plenty of compilers that can take a tracker module file and compile it into assembly. Most of the time you still have to compile the output of those assembly files through an assembler yourself.
New for 2016, a fully functional Atari 2600 tracker for Windows and Linux! Working in a tracker can give you huge advantages over other tools.
Firstly, TIATracker has well fleshed out instrument creation. These include volume, pitch, and even waveform envelopes.
Secondly, a piano keyboard overlay shows you the available notes and their relative detune for whichever "waveform" you have selected.
And most importantly, it is considerably easier to experiment with the TIA's odd pitch behavior via tracker playback than needing to compile your song and listen through in its entirety every time.
Be sure to see the lyceum article
for relevant downloads and further usage tips.
BotBr Irrlicht Project's new TIA music driver called "TIAtune". Unlike other TIA
music drivers, it does not rely on the on the TIA's built-in frequency dividers. That means that the detune usually associated with TIA music is absent in TIAtune. Overall a very good driver and compiler.
Get the driver + XM converter at releases
. Example output song
Be sure to read the "readme.txt" file for instructions on how to compile to .BIN output format.
TIAtune n00b tipz: if you're using windows you have to set up path variables for the compile script to work. also the xm2tiatune.exe is in the RELEASES section on irrlicht's git. additionally, even though the readme says patterns of at least length 51 should work, it's better to split up your xm into smaller patterns, lest you do a bunch of stuff in the xm and then run out of space when you try to compile it, leading you to trim down your work to make it compile.
torTIA is an .IT to TIA converter by lupe, written in Python, and based on Paul Slocum's kit.
Write your music in OpenMPT with a specially prepared .IT module that gives you a very good idea about how the music will sound on the actual console.
A very comfortable TIA tool that is around, but unfortunately it's rather limited: For the time being, the maximum song length is 512 rows, and there is no proper volume support.
torTIA is downloadable from here
Another Python .IT to TIA converter, made by GreaseMonkey. Also comes with an .IT template with sampled TIA waveforms, but unlike torTIA, it does not consider the peculiar TIA tunings. It does have volume support, however.
IT2TIA is downloadable from here
Text / Assembly (ASM)
• Paul Slocum's Sequencer Kit 2
The most popular TIA music driver out there. Used for writing music directly in assembly, so any text editor would do the thing. It's incredibly tough to get along with, however, because:
1) Instead of tracker notes, you have to use the 8-bit addresses.
2) The song structure is quite complicated — given that it consists of pattern arrays, which have words of 4 patterns with 8 rows each.
While the latter does make the navigation less cosy, it certainly makes up for bigger data recycling and, as a matter of fact, tinier song size.
Slocum's TIA driver also features relatively deep volume control (how deep it is might depend on how many waveforms you might use in the song) and the autosnare feature (which turns off on pattern 128).
Here lies the link to the music kit. And here lies a how-to for this driver, as well as the note tables.
Music driver that supports samples and variable length patterns on both channels independently. Songs are edited either in assembler or in text files, converted using a python script.
vcs-music is downloaded from here.
• Visual bB Music Editor
The Visual batari BASIC IDE has a music editor built in. Unfortunately it doesn't optimize the data at all, so unless you know your way around Batari Basic, you'll run out of memory very quickly.
Can be downloaded here.
File Formats & Playback
An assembled binary rom file for the Atari 2600.
Stella is the most popular Atari emulator and can basically play any .BIN you can chuck at it. You can download it here.
It's successor, the GTIA, is met on the early Atari line of home computers and is specialized exclusively for processing graphics and has no audio part inside — although the computers have a 1-bit speaker inside, it still can make music by directly controlling the speaker through the CPU. See zxbeep (format) for more info.