After many months of work, I finally have a prototype of my synthesiser up and running (written in C++). It's called Cascade and uses a variant of cellular automata to perform additive synthesis of dynamic, evolving tones.
Some of you may be familiar with the concept of cellular automata - a system of cells whose values change according to neighbourhood (the adjacent cells). The synth uses a 1D 256-state automaton, where at each time step the current 'generation' (a 1D array of 8-bit values) of cells is converted into a sound by interpreting each cell's value as the amplitude of a particular harmonic (there are 64). By experimenting with the rules, you can create some very interesting evolving sounds.
http://img528.imageshack.us/img528/337/screentv4.gif
As opposed to a rule table, the automaton is governed by a weighted average (top-bottom and middle-sides) system that basically controls which direction 'energy' is spread throughout the spectrum. For a 1D automaton, each prospective cell has 3 neighbours (top middle and bottom). For each cell, the neighbourhood is processed thus:
http://img515.imageshack.us/img515/9373/blockbj0.gif
Here are some examples (mp3 format), along with the corresponding spectrum:
http://download.yousendit.com/46F07B8C6B8C3582
http://img263.imageshack.us/img263/1724/e1dy3.gif
http://download.yousendit.com/1FEC27F8159B5C35
http://img263.imageshack.us/img263/1560/e2va0.gif
http://download.yousendit.com/5B69747D720C2409
http://img519.imageshack.us/img519/7358/e3zc2.gif
http://download.yousendit.com/D74A06611699A4BF
http://img514.imageshack.us/img514/495/e4nj7.gif
http://download.yousendit.com/D5171E460C507141
http://img257.imageshack.us/img257/6030/e5ok7.gif
http://download.yousendit.com/F34EEBAB419394D4
http://img257.imageshack.us/img257/3107/e6pc8.gif
Here's the EXE:
http://download.yousendit.com/A270AF76156C4A3F
Admittedly, due to the nature of the synth operation is not very intuitive but with experimentation you can get some nice sounds. It's got basic MIDI compatibility, too, and is 10-voice polyphonic. To define the starting state, click and drag the boxes on the left column to alter their values (or right click to invert them).
MIDI keyboard required.