Mar 17, 2010
How Synthia Thinks
I've been back in town a little while now, and am feeling a little guilty that I haven't had more time to post on Synthia. I am planning to capture some video of me describing/illustrating the process of creating Synthia, but until that's done, I want to start posting some notes on how she works.
Synthia composes and plays infinite musical canons, in the classical genre, using three instruments, in 4/4 time.
I generated the sound files, manually, out of GarageBand. With the media I generated for the launch of v1, Synthia is capable of playing eight octaves of three separate instruments (which she assembles in various combinations): a classical guitar, a grand piano, and orchestral strings. I'd actually prepared the media for 13 separate instruments, but did not like how the other 10 instruments sounded across 8 octaves, so I opted to reduce the variation on instrumentation, for an increase in the quality of the music that Synthia generates.
To start, Synthia loads a picture — she doesn't care from where. On the web, Synthia loads pictures from your desktop. In the installation version (which ran at FITC Amsterdam), Synthia takes a picture from the webcam. Again, it doesn't matter. All she needs is to have some bitmap input.
Now, it's important to understand that Synthia on the web creates music in real time. So when you 'save' a track from the composer, all you are doing is saving the picture to the database. You are not saving any of the music. Synthia will re-create the music in real-time when a viewer loads that track again. So, to ensure that the music is the same, I need to normalize the bitmap. In the case of Synthia on the web, I normalize the picture to a 72% jpg (and resize it down to 1,000 x 1,000 pixels if the input is larger than that). (It is because I chose to normalize around JPG that Synthia ignores alpha values — since JPG does not understand alpha).
So, now that we have a normalized bitmap input, it's time to start creating music. Synthia has algorithms to determine all the following, based on the bitmap input:
The base values that make it 'music':
- Key
- Restricted range within key
- Tempo (anywhere from 90 to 200 bpm)
- Instrumentation (3 instruments)
- Blocksize (determines the length of the score)
- The score (relatively short musical phrases of 3 to 16 notes, per instrument)
The other values that make the music interesting:
- Chord Progression
- Volume variation
- Rests
