Devin Posted March 18, 2008 Share Posted March 18, 2008 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). Quote Link to comment Share on other sites More sharing options...
vdub_bobby Posted March 18, 2008 Share Posted March 18, 2008 (edited) 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 March 18, 2008 by vdub_bobby Quote Link to comment Share on other sites More sharing options...
+batari Posted March 18, 2008 Share Posted March 18, 2008 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. Quote Link to comment Share on other sites More sharing options...
Devin Posted March 18, 2008 Author Share Posted March 18, 2008 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. Quote Link to comment Share on other sites More sharing options...
+batari Posted March 18, 2008 Share Posted March 18, 2008 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. Quote Link to comment Share on other sites More sharing options...
Devin Posted March 18, 2008 Author Share Posted March 18, 2008 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! Quote Link to comment Share on other sites More sharing options...
+batari Posted March 18, 2008 Share Posted March 18, 2008 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! Yes, you will hear both tones being rapidly cycled, and worse, will also hear an undesirable 60Hz buzz. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 19, 2008 Share Posted March 19, 2008 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 Quote Link to comment Share on other sites More sharing options...
+batari Posted March 19, 2008 Share Posted March 19, 2008 (edited) 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 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 March 19, 2008 by batari Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 19, 2008 Share Posted March 19, 2008 EDIT: oh, and I'd still keep the octave thing for tweaking individual SID voices, and the percentage as a global adjustment. Fine, I'll see if I can add that feature tonight Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted March 19, 2008 Share Posted March 19, 2008 Even if the two tones are changed every 1/60 of a second? Curses! "Flicker" doesn't work here. The human ear cannot be fooled that easily as the human eye. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 19, 2008 Share Posted March 19, 2008 Even if the two tones are changed every 1/60 of a second? Curses! "Flicker" doesn't work here. Just depends on the speed, or? Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 19, 2008 Share Posted March 19, 2008 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 Quote Link to comment Share on other sites More sharing options...
supercat Posted March 19, 2008 Share Posted March 19, 2008 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? Quote Link to comment Share on other sites More sharing options...
Devin Posted March 19, 2008 Author Share Posted March 19, 2008 (edited) 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 March 19, 2008 by Devin Quote Link to comment Share on other sites More sharing options...
Devin Posted March 21, 2008 Author Share Posted March 21, 2008 (edited) 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 March 21, 2008 by Devin Quote Link to comment Share on other sites More sharing options...
+grafixbmp Posted March 22, 2008 Share Posted March 22, 2008 (edited) 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 March 22, 2008 by grafixbmp Quote Link to comment Share on other sites More sharing options...
vdub_bobby Posted March 28, 2008 Share Posted March 28, 2008 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 Quote Link to comment Share on other sites More sharing options...
supercat Posted March 28, 2008 Share Posted March 28, 2008 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. Quote Link to comment Share on other sites More sharing options...
Devin Posted April 2, 2008 Author Share Posted April 2, 2008 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. Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted October 22, 2010 Share Posted October 22, 2010 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 Quote Link to comment Share on other sites More sharing options...
Impaler_26 Posted October 22, 2010 Share Posted October 22, 2010 (edited) ... P.S., I actually have the MIDI for this tune as well, which I think is longer and would suit the game better. Have a look at this thread, hope it helps: MIDI to Atari 2600 Edited October 22, 2010 by Impaler_26 Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted October 22, 2010 Share Posted October 22, 2010 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. Quote Link to comment Share on other sites More sharing options...
PacManPlus Posted October 22, 2010 Share Posted October 22, 2010 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.