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.
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:
Here are some examples (mp3 format), along with the corresponding spectrum:
Here's the EXE:
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.
Oh gorsh I'ma gonna dig up that 'ol midi controller right now
Page faults immediately for me. (AMD-K6 ~450MHz, 192MB RAM, Win98) MIDI keyboard _required_ you say.... :-/ That's two stories down, and neither it nor the PC are move friendly...
The example mp3 are impressive, however - wish I could make some.
I don't know what could be causing that - but this is the place to find out, eh? ;) Maybe I should post some code for you all to dissect!
Originally Posted by Cactus_Hugger
It doesn't need a hugely fast computer though (it can run upto about 10% CPU when busy on my 2.6GHz) - as you can tell, I've managed to fix the efficiency problem I posted a few days ago.
EDIT: Some of the images don't seem to be working so here's all of it in a zip: