Re: [stella] [POLL]What is everybody working on?

Subject: Re: [stella] [POLL]What is everybody working on?
From: Rob <kudla@xxxxxxxxx>
Date: Wed, 6 Nov 2002 09:58:37 -0500
On Wednesday 06 November 2002 01:45, Clay Halliwell wrote:
> Hey, wasn't I asking about that here just a few weeks ago?

Looks like you did, back in August when I was on vacation :)

> Still curious how this would sound. I don't have the math mojo to figure
> the average frequency of a chunk of WAV file.  FFT seems a bit overkill
> though, doesn't it?

You said it yourself - to determine the frequency of each chunk you would need 
to do something hairy like a Fourier transform.  Well, FFT is "fast Fourier 
transform".  I don't understand all the math behind it but I live in the 
Linux world and there are a ton of libraries available to do it. ;)  I 
already found a perl module that takes a chunk of WAV data and tells you its 
frequency at a given FFT size, but I would like to go further.  (OK, I'm 
saying more now, I apologize!)

A lot of sound programs (like Audacity, a free Cool Edit like program for 
Windows, Linux and MacOS) are able to display waveforms as the usual 
oscilloscope-like display of amplitude, or as a set of frequencies in a 
spectrum analysis kind of display.  I want to figure out how to generate one 
of those (at quite low resolution) for each 2600-frame-sized chunk of sound, 
and compare it (I have some experience comparing bitmaps crudely but 
effectively, see http://www.kudla.org/raindog/perl ) to a set of similar 
bitmaps generated by writing a program that makes every possible pitch in 
every possible waveform on the 2600.  (I think there are 512 altogether.)  
Pick the closest match and generate a dasm-compatible data line.  Repeat 
until the file's done.  If I manage to implement my comparison routine in 
sufficiently fast C, I might even consider comparing against all possible 
combinations of the two channels (256,000 comparisons), then taking the 
winner of that comparison and comparing against all possible combinations of 
amplitudes between the two channels (another 1024 comparisons.) :)

I have no idea whether it would sound good, but I'm betting it'd at least be 
decent for explosions and engine noises. ;)  But it's academic right now 
because at the moment I don't have the time to do more than idle research.

What originally made me consider this approach was listening to the speech 
synthesis in the latest version of o2em (btw, version 1.0 for Linux and 
Windows is out.)  The phonemes are strung together really coarsely and so it 
has this warbly vocoder-esque sound to it.  But then I realized that the 
Odyssey2 Voice unit had like 128 tiny samples in it, each corresponding 
exactly to the desired phoneme (and a few sound effect and phrase samples as 
well.)  So my approach would probably sound a good deal worse, but curiosity 
dictates that I at least try!

BTW, you aspiring commercial 2600 developers, speech synth chips are dirt 
cheap these days, I'm guessing it'd probably be pretty easy for a hardware 
hacker to hook one up to an Atari cartridge in the same kind of way as those 
bankswitching schemes, and that'd be a hell of a value-add to entice people 
to buy physical cartridges. ;)

Rob

----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread