This is a composition that I created about 6 months ago, and is derived from my primary occupation as a computer scientist.
As part of my work, I was playing with a scientific computing benchmark that performs a simulation of fluid dynamics. The simulation is a big complicated multi-threaded program, which means there are lots of things all happening at the same time. The program’s function is to take a big mathematical representation of a body of some fluid, and to simulate the way the particles in that fluid interact. As it turns out, particle fluid interactions are pretty much random, and so this program models that randomness (or ‘stochasticity’, as fluid dynamics people call it).
Now, in terms of the program, you can think of it as having several ‘threads’, each of which deals with a piece of the total simulation, and which perform computations more or less at the same time as the other threads. There are points at which these threads need to exchange information between one another. These communications represent the interactions of particles in the body of fluid. I thought it would be interesting to ‘listen’ to these interactions.
To do so, I wrote a program that takes any arbitrary multi-threaded program (written in C/C++), and finds points in that program where the threads communicate (‘synchronization points’). Then, it runs the program you give it (for instance, the fluid dynamics simulation), and generates a sequence of tones corresponding to these communication points. Each thread of execution is assigned its own tone. Each time a thread performs a communication, it briefly generates its tone, and then continues its execution as normal. Using the fluid dynamics program as an example: communication between simulation threads occurs when particles interact. This leads to the generation of tones. So putting this together, we can listen to what the fluid system sounds like, as its particles interact stochastically.
This link: http://drop.io/0dn3xpf leads to a recording of the fluid dynamics simulation from a portion of the program’s execution (the full execution would take weeks to listen to). I assigned the threads in the program the tones from the C major scale.
When I have the time, I plan to release the software tool that I used to create the recording. It is slightly complicated to use, but it (probably) works on windows or linux or mac, and can generate music like this for any program. For programmers out there, the code can be changed to assign different pitches and durations to the different threads, as well.