Last week I had the great pleasure of giving a talk at Random Walks: The Music of Xenakis and Beyond. I must admit, I was a bit intimidated, since Sharon Kanach and James Hurley (both bona fide Xenakis experts) were also speaking. In fact, after their wonderful talks, there was not a whole lot left to say about Xenakis’ life and work, from the content side of things. Between them, they managed to more or less completely describe him as a person, summarize his work, and even briefly outline some of the technical underpinnings to his compositional technique.
So, to complement their contributions, I thought it would be quite interesting to actually work through an implementation of the translation process between sonic entities (a Xenakian term for a sound or collection of sounds) and spatial arrangements. The wonderful thing about Xenakis is that he was so rigorous in his development of this approach to composition, that most of the technical details are all clearly laid out in his book, Formalized Music. There exists a number of implementations of this already: UPIC, IanniX, HighC to name a few. However, all of these platforms struck me as very two dimensional and isolated from any kind of current modelling workflow. Therefore, as a long time Grasshopper enthusiast, I decided to write a simulation package that uses Grasshopper as the basis for the geometry creation.
On the Grasshoper side of things, you model whatever you want, and then generate a Data Tree of points to describe the geometry:
This then gets streamed to the Simulator:
I then used a Unity implementation of the C# Synth Project to provide most of the heavy lifting for MIDI playback and sound creation. While both these packages are great, neither of them fully fit my needs, and I ended up having to write some custom Soundfont (SFZ) import code as well an audio channel management system (since there can be a large number of voices happening at the same time). All this was pretty rushed and it is still very buggy, but the live demo went OK for the conference. I’d be happy to share the code with anyone who is interested.