Jump to content
IGNORED

Anyone think Ballblazer is possible on the 2600?


Recommended Posts

Are you going to translate the Ballblazer "riffology" algorithmic music generator to the 2600? :evil:

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.

Link to comment
Share on other sites

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 by ZylonBane
Link to comment
Share on other sites

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.)

Link to comment
Share on other sites

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! :D

 

..Al

Link to comment
Share on other sites

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 by thegoldenband
Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by thegoldenband
Link to comment
Share on other sites

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 by thegoldenband
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by thegoldenband
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by thegoldenband
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by thegoldenband
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...