BASED ON SOME COMMENTS I have received, especially in response to Reindeer Rescue, I thought I'd attach some of the stuff I use to help with 2600 tunes.
First off, gotta give big props to my brother. He created these worksheets and has helped with almost all of the 2600 music I've done. Except for Reindeer Rescue, curiously.
Tommy made this worksheet for me; based on P Slocum's music guide and E Stolberg's music chart. I find this much easier to use, plus it really shows what you have to work with:
Second, here is an example of what Tommy creates for me; that I then translate into code:
--hope you don't mind me sharing these with the world, T.
The music driver I have written allows for note length between 32nd notes and half notes, and all 32nd-note steps in between. Each note has a volume (0-15), can be articulated (or not), and can be any frequency of any of 4 (predefined, hard coded) distortions.
Also, a hi-hat plus two other percussion sounds can be laid over the top, though I just today cut the rhythm tracks out of the Metroid tunes since they are so rarely used and I ran out of ROM space.
The tonal data is laid out in byte pairs like this:
.byte %LLLLVVVV, %ADDFFFFF
LLLL = note length, 00 = 32nd note, %1111 = half note
VVVV = note volume (0 - 15, written directly to AUDVx)
A = articulate note (1 = yes, 0 = no)
DD = distortion lookup number (0 - 3; generally, 0 = distortion 4 (square), 1 = distortion 12 (lead), 2 = distortion 6 (bass), and 3 = distortion 1 (saw))
FFFFF = frequency (0 - 31, written directly to AUDFx)
I terminate with $FF - seems unlikely that I'll ever want to play a half note at full volume