20081202

music out of math

So one day, I was talking to this guy about coding projects I've been doing, and out of nowhere an idea popped into my head.  Anyone who has ever seen the electricsheep screensaver project knows how awesome that is, and I realized that perhaps the same thing could be done with music.  I'm sure people have tried this before, but I've never seen any good results or examples, so now it's my turn to try.


So I talked to my trusty friend Sherwin, with whom I attack all random coding projects.  In the past, we've tried things like Sifu (for using reliable proxies distributed across a torrent-like network in order to bypass school internet restrictions), libtion (a framework for implementing abstract network structures), and Craft (an AJAX delivered course management system; I'm actually still working actively on this one, but on my own because Sherwin doesn't like Java), among other things.

So this time, we're writing our project as follows (so far): we've envisioned several abstract structures, namely signals, engrams, and sequences.  A signal is simply a waveform.  An engram is a set of signals (like in the figure above, shamelessly taken from a random page I googled) with a set duration, and a sequence is just all the engrams in a row.  Since we know so little about music theory, we're trying to make them pretty mathematically rooted:

Signal: s ≡ ( ν, A, Φ )

Engram: E ≡ { s1, s2, s3, ... ,  s},
and E has a property of length in time El

Sequence: S ≡ < E1, E2, E3, ... ,  E>


From here, we have some pseudo-mathematical descriptions of methods we will use to mutate our initial sequence and its descendants so that they can undergo natural selection against each other.  These mutations include signal-base mutations, engram-base mutations, and sequence-base mutations; basically, each type of mutation affects the type of object for which it is named.  So signal-base mutations affect signals themselves; this means that their properties, namely frequency, amplitude, and phase shift (as seen in the ordered triplet defined above) are fundamentally altered.  Examples of some engram-base mutations include insertion (where a signal is added to an engram), deletion (the opposite of insertion), propagation (where a signal replicates and spreads to nearby engrams), and nondisjunction (where a signal is moved from one engram to an adjacent one).  Sequence base mutations involve adding engrams, deleting them, moving them around, or inverting the order of some partition of engrams.

The plan is to start with a single waveform - that's to say, a single signal with some defined parameters which is the lone signal in a lone engram in a lone sequence - and then let it "reproduce" via fusion where both of its children are run through mutation engines.  The population will then be played for human observers who will rate each sequence according to its relative beauty, and the most favored sequences will have more chances to reproduce (just like in natural selection).

Perhaps in a year or so I'll have my hands on a pretty awesome song I can market.  Sherwin and I are willing to take investment money right now in return for a percentage of the profit we make off of our world-famous scores of the future.  Donations can be made via hard cash or checks, or in some material form that's useful to us (like servers, Star Trek episodes, dice, coffee, swords, or other useful stuff).

No comments:

Post a Comment