Luigi Castelli

220b Final Project

SINE-CELLS  Cellula Automata synthesizer


Idea and origin


    Setting up a machine with enough "knowledge" to produce some musically usable sounds has always been a challenging task.
I am trying to use a basically simple idea (harmonics of a certain pitch) and develop it by adding parameters which the user can change and by doing so is able to meaningfully alter the behaviour of the CA algorithm.
The outcome is a CA synthesizer which is capable to generate perpetually moving timbres by itself as much as interact with the user and give to him just enough control to produce musically usable sounds.

What it does

Sine-Cells consists of a user selectable number of sinewave oscillators and a CA algorithm to control them. The CA causes the frequency of each oscillator to move towards a harmonic of the frequency of its neighbor. This results in complex timbres that are tuned to pure harmonics.

Parameters

As stated above the user can change parameters of the CA algorithm to explore soundscapes and new possibilities.
Here is a list of them:

Harmonic Limit
Sets the number of harmonics for the cellula automata to use.
For example if this is set to 4, each oscillator frequency will move to the nearest of the first five harmonics of its neighbor. If a cell's neighbor is at 440 Hz, this means the cell will move toward 440 Hz, 880 Hz, 1760 Hz, 3520 Hz, or 7040 Hz, whichever is closest.

Base Frequency
Sets the frequency from which the CA algorithm starts to generate harmonics.

Panning Range
In addition to this every other generation of CA is being randomly panned across the stereo field. The panning range is user adjustable so that the overall stereo spread can be controlled.

Conclusion and future developments


A lot is still to be explored, but the thing that most of all is important to me is to find new ways to interact with it.
The possibility of using MIDI controllers to interact with the CA should be explored.
The final goal that I have in mind is to be able to make a real time implementation of the CA algorithm so that it could be used for live performance


CLM Code


sine-cells.ins
play-cells.lisp














CLM code