Jump to content
IGNORED

Atari Music Sheet


Devin

Recommended Posts

Hello everyone, I am curious if any knows of an excellent Atari 2600 sound to music note tables.

I found two guides by Glenn Saunders and Eckhard Stolberg - and they should be helpful by themselves.

 

My ultimate goal is to be able to create an array in a programs that just contains encoded notes: quarter-C, full-F#, etc.... The Atari would then look up the pitch and distortion codes in an table and recreate the sounds. For non-supported notes, I might try to iterate between two close notes to create a blended one.

 

Overall the plan is to be able to convert MIDI to Atari. I'll already created a program that converts MIDI to the QBasic Play Statement codes - which are pure notes. A conversion from QBasic Play to Atari 2600 should be incredibly straight-forward (knock on wood).

Link to comment
Share on other sites

I don't think there are any other sound-to-note tables besides Eckhard's document, though Paul Slocum's music guide may be of some help.

 

I have to say that I don't think that approach to TIA music is a very good one, though Cybergoth has had some success with it (going SID-to-TIA rather than MIDI-to-TIA). The TIA is so limited that I think you really have to transcribe music by hand or write original music.

Edited by vdub_bobby
Link to comment
Share on other sites

Cybergoth's SID-to-TIA program works, but almost always produces music with a few bad notes. I've had success with hand-optimizing the output. It helps that this program can transpose, however, it can do so only an octave at a time. What would be nice is a music converter that has the ability to transpose by any amount, not just an octave. Doing so should allow for a closer match to the TIA's limited scale.

Link to comment
Share on other sites

Cybergoth's SID-to-TIA program works, but almost always produces music with a few bad notes. I've had success with hand-optimizing the output. It helps that this program can transpose, however, it can do so only an octave at a time. What would be nice is a music converter that has the ability to transpose by any amount, not just an octave. Doing so should allow for a closer match to the TIA's limited scale.

 

I was thinking of creating a two tables - about 60 bytes each (5 octaves). Each table would essentially be redundant except for cases where I have to transpose two notes to create a missing one. This might be too simple a solution since playing two frequencies at 50% of the time each, might not create the desired result.

 

Anyway, the Play statement in QBasic is quite advanced in the sense that octaves can be moved absolutely or relatively. The solution I was looking at would implement both - allowing songs to be created that can be changed during game play. The initial octave could be increased or decreased depending on game play. Naturally, to even attempt to get the full note range, I will have to stick to the "pure tones".

 

This is just a thought now. Once I fix the ball bug in my homebrew, I'm going to attempt to tackle sound.

Link to comment
Share on other sites

I was thinking of creating a two tables - about 60 bytes each (5 octaves). Each table would essentially be redundant except for cases where I have to transpose two notes to create a missing one. This might be too simple a solution since playing two frequencies at 50% of the time each, might not create the desired result.
Apparently, the human ear is too sharp to be fooled in that way.
Link to comment
Share on other sites

I was thinking of creating a two tables - about 60 bytes each (5 octaves). Each table would essentially be redundant except for cases where I have to transpose two notes to create a missing one. This might be too simple a solution since playing two frequencies at 50% of the time each, might not create the desired result.
Apparently, the human ear is too sharp to be fooled in that way.

 

Even if the two tones are changed every 1/60 of a second? Curses! :x

Link to comment
Share on other sites

I was thinking of creating a two tables - about 60 bytes each (5 octaves). Each table would essentially be redundant except for cases where I have to transpose two notes to create a missing one. This might be too simple a solution since playing two frequencies at 50% of the time each, might not create the desired result.
Apparently, the human ear is too sharp to be fooled in that way.

 

Even if the two tones are changed every 1/60 of a second? Curses! :x

Yes, you will hear both tones being rapidly cycled, and worse, will also hear an undesirable 60Hz buzz.

Link to comment
Share on other sites

Cybergoth's SID-to-TIA program works, but almost always produces music with a few bad notes. I've had success with hand-optimizing the output. It helps that this program can transpose, however, it can do so only an octave at a time. What would be nice is a music converter that has the ability to transpose by any amount, not just an octave. Doing so should allow for a closer match to the TIA's limited scale.

 

What I'm doing right now to transpose an octave up or down is just multiplying/dividing frequencies by two, I hope that is correct?

 

Are you now simply suggesting that I should additionally offer a linear shift value (+- XXX) or are you talking something more complicated?

 

BTW: I still have plans to enhance SID2TIA some day so that it can also be fed from SAP(Pokey) and/or MIDI files, but basically as long as I'm not needing it for myself it has a rather low priority :ponder:

Link to comment
Share on other sites

Cybergoth's SID-to-TIA program works, but almost always produces music with a few bad notes. I've had success with hand-optimizing the output. It helps that this program can transpose, however, it can do so only an octave at a time. What would be nice is a music converter that has the ability to transpose by any amount, not just an octave. Doing so should allow for a closer match to the TIA's limited scale.

 

What I'm doing right now to transpose an octave up or down is just multiplying/dividing frequencies by two, I hope that is correct?

 

Are you now simply suggesting that I should additionally offer a linear shift value (+- XXX) or are you talking something more complicated?

 

BTW: I still have plans to enhance SID2TIA some day so that it can also be fed from SAP(Pokey) and/or MIDI files, but basically as long as I'm not needing it for myself it has a rather low priority :ponder:

Yes, you are correct about octaves.

 

Transposing by any factor is just a simple matter of multiplying or dividing all frequencies by the same amount, not necessarily by two. I'd suggest a box where you can enter a percentage, and it defaults to 100, and all frequencies are then multiplied by that percentage before TIA conversion.

 

EDIT: oh, and I'd still keep the octave thing for tweaking individual SID voices, and the percentage as a global adjustment.

Edited by batari
Link to comment
Share on other sites

Attached is SID2TIA V1.62

 

It has a new Edit field "Transpose" in the Filter section.

Note that this works like an additional frequency multiplier for all three channels.

 

If you select two octaves up for example and enter a transpose value of 80,

then all frequencies will get multiplied with 4*0,8 = 3,2!

 

Let me know how this works for you, Fred! :)

sid2tia.zip

Link to comment
Share on other sites

Just depends on the speed, or? :)

 

With some sound chips, rapid modulation of a frequency register between two values will yield a reasonably clean tone whose frequency is between those the values would produce provided that the modulation occurs at a steady rate which is significantly above the frequencies in question. The TIA is not very amenable to such techniques.

 

Each sound channel on the TIA operates by taking a 31.5Khz signal, putting it through a programmable counter/divider (controlled by AUDFx), and feeding that into a wave shaper circuit controlled by AUDCx. Each divider contains a 5-bit counter, comparator, and reset circuit. With every pulse of the input clock, the counter will be compared to AUDFx and the result of that comparison is latched. If it didn't match, the counter will be incremented; otherwise, the counter will be loaded with zero and a pulse will be output to the wave shaper. One nasty consequence of this design is that if, e.g., both AUDFx and the counter equal '6' but the comparator result hasn't been latched yet, and the programmer writes '5', the counter will have to count all the way to 31 and wrap before the next pulse will be output.

 

If a program keeps track of the counter state, it would be possible to avoid writing to AUDFx when the counter was about to reach its terminal count. On the other hand, if the program is keeping track of counter state, why bother with AUDFx at all? Why not just write the desired waveform out to AUDVx directly?

Link to comment
Share on other sites

Ah. Thanks everyone. It appears my grandiose idea is nothing but a pipe-dream - and I'm not talking Mario Brothers :)

 

I'll play around with sound some more. Its the only major "unknown" I still need to tackle. The documentation on the this site and the Internet is very helpful.

Edited by Devin
Link to comment
Share on other sites

I did some analysis of the note charts that I found on the Internet for the TIA sounds vs. natural note frequencies. Although, the TIA is a tad off-key (understatement), most of the notes can be matched.

 

I've attached a chart I created with a series of different octaves and where each AUDCn and AUDFn falls in the range. The pure tones have the best coverage of the notes.

 

Anyway, I have a question and would like your feedback. If I was to substitute the "pure" tone for the "buzzy", "semi-buzzy", etc.... distortions during a melody, would it sound okay? In the chart, notice that A#2 has a matching "buzzy" value, but not a "pure" one.

Octaves___NTSC.zip

Edited by Devin
Link to comment
Share on other sites

I did some analysis of the note charts that I found on the Internet for the TIA sounds vs. natural note frequencies. Although, the TIA is a tad off-key (understatement), most of the notes can be matched.

 

I've attached a chart I created with a series of different octaves and where each AUDCn and AUDFn falls in the range. The pure tones have the best coverage of the notes.

 

Anyway, I have a question and would like your feedback. If I was to substitute the "pure" tone for the "buzzy", "semi-buzzy", etc.... distortions during a melody, would it sound okay? In the chart, notice that A#2 has a matching "buzzy" value, but not a "pure" one.

 

don't know if this help but how about this. For tones you can't match you have to alternate between 2 notes fast enough to get a buzzy note that has the right tone, right?

 

so inorder for the pure notes to more match how about you alternate between sound and no sound for them.

 

like pure tone on/off

 

aprox tone lower tone/higher tone

 

just curious if this might blend the audio of them better. make it more fluid.

 

of course you could always look into the atari synthsound subroutine or a variation of it. It takes alot of clock cycles to work though. I think it changes the audio channels every 2 scanlines. you actualy get extra audio channels with it too like atleast 3 instead of 2. Or there is always the option of using the atari audiovox or ataivox (not sure which it is called) plug for port 2

Edited by grafixbmp
Link to comment
Share on other sites

I did some analysis of the note charts that I found on the Internet for the TIA sounds vs. natural note frequencies. Although, the TIA is a tad off-key (understatement), most of the notes can be matched.

 

I've attached a chart I created with a series of different octaves and where each AUDCn and AUDFn falls in the range. The pure tones have the best coverage of the notes.

 

Anyway, I have a question and would like your feedback. If I was to substitute the "pure" tone for the "buzzy", "semi-buzzy", etc.... distortions during a melody, would it sound okay? In the chart, notice that A#2 has a matching "buzzy" value, but not a "pure" one.

I've done it with some tunes and it works...ok. Listen to the title screen song from the 2005 Minigame Multicart or the one from Thrust+. Depends on the music, mostly. Also, the "buzzy" tones tend to be *much* louder than the pure tones, so you have to adjust the volume.

songc10312005.bin

Link to comment
Share on other sites

of course you could always look into the atari synthsound subroutine or a variation of it. It takes alot of clock cycles to work though. I think it changes the audio channels every 2 scanlines. you actualy get extra audio channels with it too like atleast 3 instead of 2.

 

The BTP2 music driver can play four channels (two out of each TIA channel), with reasonably decent pitch accuracy and a five octave range. It does gobble up some ROM and CPU cycles (46 cycles/line, and nine pages worth of tables) but the audio quality is pretty decent. EBTBTP2 could be even better, though--stay tuned.

Link to comment
Share on other sites

of course you could always look into the atari synthsound subroutine or a variation of it. It takes alot of clock cycles to work though. I think it changes the audio channels every 2 scanlines. you actualy get extra audio channels with it too like atleast 3 instead of 2.

 

The BTP2 music driver can play four channels (two out of each TIA channel), with reasonably decent pitch accuracy and a five octave range. It does gobble up some ROM and CPU cycles (46 cycles/line, and nine pages worth of tables) but the audio quality is pretty decent. EBTBTP2 could be even better, though--stay tuned.

 

Sounds excellent. I created a thread on the homebrew page with some songs I imported from MIDI. It is extremely primitive at the moment.

Link to comment
Share on other sites

  • 2 years later...

Hi Guys:

 

Sorry to bump an old thread, but I am having trouble getting the SID2TIA to work with this SID file (I had to zip it here to get it to attach).

 

I'm actually using Pokey to add this song to 'Super Circus AtariAge' for the 7800 so once I get this file, I then have to convert it to Pokey notes.

 

All I get when I convert this file is a header full of #SILENCE constants. :(

 

Does anyone know what I'm doing wrong?

 

(As a side note, Cybergoth, if you have another version of this program i.e. SID2POKEY, that would be awesome) :)

 

Thanks,

Bob

 

P.S., I actually have the MIDI for this tune as well, which I think is longer and would suit the game better.

entry_of_the_gladiators.zip

Link to comment
Share on other sites

Does anyone know what I'm doing wrong?

 

Just changing the ending of a file from *.MUS into *.SID doesn't magically transmogrify it into a working SID file ;)

 

Can't help you any better though, that's the first time I've seen a *.MUS file myself.

 

Thanks - I didn't change anything, actually... I've been programming for almost 30 years, I think I know that much. ;) That was how the file was listed on the website I found it on. :(

 

That would explain why it didn't work in your converter. :( Damn. I'll keep searching.

 

Thanks again for the reply,

Bob

 

@Impaler_26: Thank you for the link... I'll have to figure something out.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...