mos6507 Posted October 22, 2008 Share Posted October 22, 2008 Are you going to translate the Ballblazer "riffology" algorithmic music generator to the 2600? I'll have to look into this Here's a rough TA conversion for the start. Dude... ouch. Rough indeed! Attached is the result of a couple days experimentation on my part. I gave up trying to get the last few notes in tune. Anyone is welcome to run with this. If stuff that's 'in tune' is required, then Supercat's engine as used in the holiday cart would be the way to go. Quote Link to comment Share on other sites More sharing options...
+Nathan Strum Posted October 22, 2008 Share Posted October 22, 2008 I doubt there'd be enough cycles available. The restrictions on his music engine are pretty tight. Quote Link to comment Share on other sites More sharing options...
mos6507 Posted October 22, 2008 Share Posted October 22, 2008 I doubt there'd be enough cycles available. The restrictions on his music engine are pretty tight. For in game, yeah, but for a title screen, it would work. The holiday cart had a pretty good looking title screen. Quote Link to comment Share on other sites More sharing options...
Albert Posted October 22, 2008 Share Posted October 22, 2008 I doubt there'd be enough cycles available. The restrictions on his music engine are pretty tight. For in game, yeah, but for a title screen, it would work. The holiday cart had a pretty good looking title screen. And good sounding. ..Al Quote Link to comment Share on other sites More sharing options...
ZylonBane Posted October 22, 2008 Share Posted October 22, 2008 (edited) If stuff that's 'in tune' is required, then Supercat's engine as used in the holiday cart would be the way to go. I believe the correct notes are within the 2600's normal abilities. I just gave up trying to find them. Note-matching is an interesting challenge given the way the TIA splits linear scales across multiple distortion settings. Edited October 22, 2008 by ZylonBane Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted October 22, 2008 Share Posted October 22, 2008 please use the orginal version... the Atari800 version... the engine looks good! with this you could do games like Trailblazer? Dimension X? Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted October 22, 2008 Share Posted October 22, 2008 please use the orginal version... the Atari800 version... I got a rip of the A8 music engine already partially running on the VCS last night. Just poking the A8 data into the TIA registers sounds horrible as excpected though, so I'm currently trying to figure how to convert the data properly. And I'm still in the process of comparing A8 trace logs with Z26 trace logs to verify that the engine really works. (And some stuff like "LDA/CMP SKREST" has no match on the VCS at all, I still need to replace that with not so random LSFR code.) Quote Link to comment Share on other sites More sharing options...
Albert Posted October 22, 2008 Share Posted October 22, 2008 please use the orginal version... the Atari800 version... I got a rip of the A8 music engine already partially running on the VCS last night. Just poking the A8 data into the TIA registers sounds horrible as excpected though, so I'm currently trying to figure how to convert the data properly. And I'm still in the process of comparing A8 trace logs with Z26 trace logs to verify that the engine really works. (And some stuff like "LDA/CMP SKREST" has no match on the VCS at all, I still need to replace that with not so random LSFR code.) Can't wait to hear it! ..Al Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted October 22, 2008 Share Posted October 22, 2008 (edited) I believe the correct notes are within the 2600's normal abilities. I just gave up trying to find them. Looking at it for a bit, I suspect one might have better luck rendering it in A minor (rather than the G# minor of the original). The bassline seems to be the key issue, but if you switch between distortion settings 1 and 7, with a pitch baseline of about +30 cents, I think it can be done. Note-matching is an interesting challenge given the way the TIA splits linear scales across multiple distortion settings. Yeah, I tried looking at Eckhard's TIA frequency file and sussing out some combination of settings that would allow for an in-tune, note-accurate rendition, even if it had to switch between a few different sounds. It gets a little dizzying after a while, when you're juggling 12 possible keys, four different viable settings, and trying to figure out the optimal tuning center to boot (i.e. do I want it to be around +30 sharp of standard tuning? in tune? somewhat flat?). If I had time, I'd try to put together a Flash file (or something similar) that would display a piano keyboard and a horizontal slider; the latter would display a value ranging from -50 to +50 cents, and would serve as a pitch baseline. As you dragged the slider from left to right, the keys on the keyboard would be highlighted or darkened in varying degrees, depending on how in-tune they were with your reference pitch. One could apply various filters, based on which distortion settings you wanted to include as options, or what scales you were looking to use. Still, the challenge is definitely a big part of the fun. Stravinsky often described how, for him, artificial constraints were a strong compositional stimulus. He wanted to have as many obstacles and limits as possible, so that he could use them as a means of guiding his work. He was terrified of the freedom of the blank page! Edited October 22, 2008 by thegoldenband Quote Link to comment Share on other sites More sharing options...
roland p Posted October 23, 2008 Share Posted October 23, 2008 the engine looks good! with this you could do games like Trailblazer? Dimension X? Thanx, trialblazer uses smaller tiles, so maybe with some help of sprites it can be done. The tiles itself aren't too complex, every 1st,3rd,5th tile look the same, and every 2nd,4th tile looks the same. Dimension X? I don't know... Quote Link to comment Share on other sites More sharing options...
dcameron Posted October 28, 2008 Share Posted October 28, 2008 Just caught up on this thread today. It is a very nice progress so far. Good job! Quote Link to comment Share on other sites More sharing options...
supercat Posted October 28, 2008 Share Posted October 28, 2008 If I had time, I'd try to put together a Flash file (or something similar) that would display a piano keyboard and a horizontal slider; the latter would display a value ranging from -50 to +50 cents, and would serve as a pitch baseline. As you dragged the slider from left to right, the keys on the keyboard would be highlighted or darkened in varying degrees, depending on how in-tune they were with your reference pitch. One could apply various filters, based on which distortion settings you wanted to include as options, or what scales you were looking to use. I have a graphic I did on my other machine which illustrates the available frequencies pretty nicely. I'll see if I can dig it up. Quote Link to comment Share on other sites More sharing options...
supercat Posted October 30, 2008 Share Posted October 30, 2008 I don't know how to do a DOS mode screen capture in XP; here's a text version of my pitch table, turned on its side. C -4-|--------------4----------------4------------------4------------|--- C# ---4------------------4------------|----4-------------------4------|--- D ---|----4-------------------4------|------------4------------------|-4- D# ---|------------4------------------|-4---------------------4-------|--- E ---|-4---------------------4-------|-------------4-----------------|--- F ---|-------------4-----------------|-----4-----------------------4-|--- F# ---|-----4-----------------------4-|-----------------------4-------|--- G -4-|-----------------------4-------|------------------4------------|--- G# ---|------------------4------------|---------------4---------------|--- A ---|---------------4---------------|-------------4-----------------|--- A# ---|-------------4-----------------|------------4------------------|--- B ---|------------4------------------|--------------4----------------|2-- C ---|--------------4----------------|2-----------------6------------|--- C# ---|2-----------------6------------|----2------------------24------|--- D ---|----2------------------24------|----------2-------------------2|-4- D# ---|----------2-------------------2|-4-----------------2-----------|--- E --2|-4-----------------2-----------|---------2---4-----------------2--- F ---|---------2---4-----------------2-----------------------2-----4-|--- F# ---2-----------------------2-----4-|----------------2--------------|--- G -4-|----------------2--------------|---------2--------4------------|--- G# ---|---------2--------4------------|----2--------------------------|-2- A ---|----2--------------------------|-2-----------4-----------------2--- A# ---|-2-----------4-----------------2------------------------------2|--- B ---2------------------------------2|--------------4----------------|2-- C --2|--------------4----------------|2------------------------------|--- C# ---|2------------------------------|----2-------------------4------|--- D ---|----2-------------------4------|----------2--------------------|--- D# ---|----------2--------------------|-------------------2--------1--|--- E ---|-------------------2--------1--|-------------5-----------------3--- F 1--|-------------5-----------------3------------------1------------|--- F# ---3------------------1------------|------1---------2---------1----|--- G ---|------1---------2---------1----|---------------1--4------------|--- G# ---|---------------1--4------------|----3----------------------1---|--- A ---|----3----------------------1---|-------------------1-----------2--- A# ---|-------------------1-----------2-----------1-------------------|--- B ---2-----------1-------------------|-----1--------4----------------|3-- Mid---|-----1--------4----------------|3---------------------------1--|--- C# ---|3---------------------------1--|--------------------------1----|--- D 1--|--------------------------1----|----------2---------------1----|--- D# ---|----------2---------------1----|----------------------------1--|--- E ---|----------------------------1--|-------------4-----------------3--- F 1--|-------------4-----------------3-------------------------------|--- F# ---3-------------------------------|------1------------------------|--- G ---|------1------------------------|---------------1---------------|--- G# ---|---------------1---------------|----2----------------------1---|--- A ---|----2----------------------1---|-------------------------------|--- A# ---|-------------------------------|-----------1----------------1--|--- B ---|-----------1----------------1--|--------------5----------------|3-- C 1--|--------------5----------------|3------------------1-----------|--- C# ---|3------------------1-----------|------1-------------------1----|--- D ---|------1-------------------1----|---------------1---------------|--- D# ---|---------------1---------------|-----1----------------------1--|--- E ---|-----1----------------------1--|-------------------1-----------2--- F 1--|-------------------1-----------2------------1------------------|--- F# ---2------------1------------------|------1------------------------|-1- G ---|------1------------------------|-1---------------------------1-|--- G# ---|-1---------------------------1-|---------------------------1---|--- A -1-|---------------------------1---|---------------------------1---|--- A# ---|---------------------------1---|----------------------------1--|--- B ---|----------------------------1--|--------------4----------------|3-- C 1--|--------------4----------------|3------------------------------|--- C# ---|3------------------------------|------1------------------------|--- D ---|------1------------------------|---------------1---------------|--- D# ---|---------------1---------------|----------------------------1--|--- E ---|----------------------------1--|-------------------------------|--- F 1--|-------------------------------|------------1------------------|--- F# ---|------------1------------------|-------------------------------|-1- G ---|-------------------------------|-1-----------------------------|--- G# ---|-1-----------------------------|---------------------------1---|--- A ---|---------------------------1---|-------------------------------|--- A# ---|-------------------------------|----------------------------1--|--- B ---|----------------------------1--|-------------------------------|2-- C 1--|-------------------------------|2------------------------------|--- C# ---|2------------------------------|------1------------------------|--- D ---|------1------------------------|-------------------------------|--- D# ---|-------------------------------|----------------------------1--|--- E ---|----------------------------1--|-------------------------------|--- F 1--|-------------------------------|-------------------------------|--- F# ---|-------------------------------|-------------------------------|-1- G ---|-------------------------------|-1-----------------------------|--- G# ---|-1-----------------------------|-------------------------------|--- A ---|-------------------------------|-------------------------------|--- A# ---|-------------------------------|----------------------------1--|--- B ---|----------------------------1--|-------------------------------|--- C 1--|-------------------------------|-------------------------------|--- C# ---|-------------------------------|-------------------------------|--- D ---|-------------------------------|-------------------------------|--- D# ---|-------------------------------|----------------------------1--|--- E ---|----------------------------1--|-------------------------------|--- F 1--|-------------------------------|-------------------------------|--- F# ---|-------------------------------|-------------------------------|--- G ---|-------------------------------|-------------------------------|--- G# ---|-------------------------------|-------------------------------|--- A ---|-------------------------------|-------------------------------|--- A# ---|-------------------------------|----------------------------1--|--- B ---|----------------------------1--|-------------------------------|--- C 1--|-------------------------------|-------------------------------|--- Each column represents 1/32 of a half step. A mark in the center column means a note can be played precisely on pitch; a mark 3 columns to the left of the central column (e.g. on the last "B") means the note can be played 3/32 of a half-step flat, etc. Note that each mark will appear two or three times; for example, it's possible to play a high "C" which is slightly more than a half-step flat, or a high B which is a little flat, or an A# which is almost a half-step sharp. A digit "1" means the note can be plated with a square wave (divisor 2 or 6); a "2" means it can be played with saw wave (divisor of 15); a "4" means it can be played with a divisor of 31 or 93. Other values represent combinations of those (e.g. a "3" represents a note which can be played with either square or saw). BTW, Toyshop Trouble uses six notes in the saw. Low C, F, and the rather flat G, and then the three notes an octave up from that. Notice the G's are quite a bit flat. In the major melody, I need the notes G, A, B, C, D, E, F starting below middle C. All of them are pretty good except for "B". When I'm playing a "G" in the bass (which is very flat) I use the very flat "B" in the melody. When I'm using a "C" in the bass (close to correct pitch) I use the slightly sharp "B" in the melody. Quote Link to comment Share on other sites More sharing options...
+atari2600land Posted November 3, 2008 Share Posted November 3, 2008 please tell me this is still being worked on... Quote Link to comment Share on other sites More sharing options...
roland p Posted November 3, 2008 Share Posted November 3, 2008 please tell me this is still being worked on... Sort of, I've been on vacation for the last week. So I was not working on it. Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted November 3, 2008 Share Posted November 3, 2008 (edited) here's a text version of my pitch table, turned on its side. Thanks for this, it was very helpful. Here's my best attempt so far at rendering the signature Ballblazer "riff" for the 2600: ballblazer_tune.bas ballblazer_tune.bas.bin It's very crude, but it's more or less in tune. I don't think it can be done in the original key of G-sharp minor (not with normal techniques, anyway), but it fits reasonably well transposed up a fourth to C-sharp minor. The upper melody is an octave higher than I'd like, but the notes for it aren't available in the lower octave: ballblazer_tune3.bas.bin Yuck! One could take it down two octaves, though, albeit with slightly mixed results: ballblazer_tune2.bas.bin ballblazer_tune2a.bas.bin (last note in the bass is changed) Perhaps 2a is the closest of all these to the original? Edited November 3, 2008 by thegoldenband Quote Link to comment Share on other sites More sharing options...
+remowilliams Posted November 3, 2008 Share Posted November 3, 2008 That actually sounds far better than I would have assumed. tune3 does sounds like a train wreck. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted November 3, 2008 Share Posted November 3, 2008 (edited) Which notes do you need? Maybe this can help here. Edited November 3, 2008 by Thomas Jentzsch Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted November 3, 2008 Share Posted November 3, 2008 (edited) Which notes do you need? Maybe this can help here. Thanks for that -- it seems like a very useful tool, though because it doesn't offer transposition suggestions, I think Eckhard Stolberg's and supercat's charts will be the key to this one. The basic riff of Ballblazer, if I'm hearing it right, uses the following pitches (not in this order!): Bass line: E G# B C# D# F# (span of a major ninth) Melody: B D D# E F (span of a tritone; F=E#) If you wanted to define it in terms of frequency relationships from an arbitrary x, then you'd need to find the following frequencies within the TIA's capabilities: Bass line: 0.67x, 0.833x, x, 1.125x, 1.25x, 1.5x Melody: 2x, 2x*1.189, 2x*1.25, 2x*1.33, 2x*1.414 (x in this case is equivalent to the B in the original bassline) This is very approximate, and the melody mixes equal temperament (twelfth root of two) and Pythagorean intonation, but it's a reasonable guide. (1.189 is the twelfth root of two to the third power, or the fourth root of two; 1.414 is the twelfth root to the sixth power, aka the square root of two.) Also, in the melody, wherever I've used 2x you could also use 4x. That would take the melody up an octave. I suppose one could write a search algorithm that could search the frequency range of the 2600 and find the best frequency fit for a particular melody. So if someone can compute a version that's more in tune than my #2a above, I'm all for it! Edited November 3, 2008 by thegoldenband Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted November 3, 2008 Share Posted November 3, 2008 I suppose one could write a search algorithm that could search the frequency range of the 2600 and find the best frequency fit for a particular melody. So if someone can compute a version that's more in tune than my #2a above, I'm all for it! That's what the website is doing. Here is one result: Note Optimal TIA Cents Off Dist (AUDC_) Pitch (AUDF_) e2 73.3 72.4 -20.1% 6 13 g#2 93.2 92.2 -18.2% 6 10 b2 111.6 112.7 16.2% 6 8 c#3 125.8 126.8 12.5% 6 7 d#3 141.9 144.9 35.1% 6 6 f#3 169.8 169.0 -8.0% 12 30 b3 229.3 227.8 -10.6% 12 22 d4 274.5 275.8 7.8% 12 18 d#4 291.5 291.1 -2.1% 12 17 e4 309.5 308.2 -6.8% 12 16 f4 328.6 327.5 -5.8% 12 15 Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted November 3, 2008 Share Posted November 3, 2008 (edited) That's what the website is doing. But it only offers suggestions within the original key, right? I know it makes octave transposition suggestions, but unless I missed something, it doesn't appear to offer a search through different keys to find which one would be the best fit. Some melodies fit very nicely in (for instance) C major on the Atari, but would be impossible in F# major, and vice versa. In other words, if I put in the pitch-set of "Mary Had a Little Lamb" as E-F#-G#-B (which fits somewhat poorly on the Atari), it'd be nice to have a tool that would say "Hmmm, he's really looking for x, 1.125x, 1.25x, and 1.5x -- if he does that in C, that'll be much closer." Don't get me wrong, though, your tool is still quite useful! Edited November 3, 2008 by thegoldenband Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted November 3, 2008 Share Posted November 3, 2008 But it only offers suggestions within the original key, right? First, I am not familiar with all those music terms. What it does is, that it optimizes for frequency *differences*, not matches. So, if the tune matches best e.g. a quater octave higher, then it takes this. No matter if the sound is somehow related to the real music scale. Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted November 3, 2008 Share Posted November 3, 2008 (edited) But it only offers suggestions within the original key, right? First, I am not familiar with all those music terms. What it does is, that it optimizes for frequency *differences*, not matches. So, if the tune matches best e.g. a quater octave higher, then it takes this. No matter if the sound is somehow related to the real music scale. Aha, I stand corrected -- my apologies, es tut mir Leid! I was fooled by the fact that it continues to specify the original note at the left. Yes, your tool is very smart, so that it knows that (for example) you can best render e3-f3-f#3-g3 as g#3-a3-a#3-b3. It would be nice to have a column at the right indicating what the letter name of the suggested note is, but that's not strictly necessary. Very nice, I'll have to play with it some more! Edited November 3, 2008 by thegoldenband Quote Link to comment Share on other sites More sharing options...
Albert Posted November 3, 2008 Share Posted November 3, 2008 Here's my best attempt so far at rendering the signature Ballblazer "riff" for the 2600: These sound good (well, maybe not tune3), but I feel that ZylonBane's rendering from this post was closest: http://www.atariage.com/forums/index.php?s...t&p=1607800 If that could be tweaked a bit, it's the one that reminds me most of the 8-bit version of the game.. ..Al Quote Link to comment Share on other sites More sharing options...
+thegoldenband Posted November 3, 2008 Share Posted November 3, 2008 (edited) I feel that ZylonBane's rendering from this post was closest: http://www.atariage.com/forums/index.php?s...t&p=1607800 If that could be tweaked a bit, it's the one that reminds me most of the 8-bit version of the game.. OK, then how about this? (EDIT: Corrupted attachment deleted, see below for newer version.) I've tweaked ZylonBane's version a bit, and while it's not perfectly in tune, it seems like a happy medium. By the way, I mainly know the 7800 version. Is the 8-bit melody different? Edited November 3, 2008 by thegoldenband 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.