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

 Subject: Re: [stella] [POLL]What is everybody working on? From: Rob 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