My final project for Music 267: Computational Aesthetics was an attempt to sonify the Mandelbrot set. The colored visual representation of the Mandelbrot set is fairly well-known - points in the set are colored black, and points outside the set are assigned a color based on how quickly the sequence based on that point diverges. The problem with this view is that there is no way to visualize the differences between the various members of the set. Sequences based on these points do not diverge, but they still behave in widely varying ways. Some may oscillate between two values, while others may have much more complicated trajectories. The point of my sonification project was therefore to allow a user to hear the differences between multiple points by listening to their trajectories.
I implemented the graphical part of my project in C++ using OpenGL to render the image of the Mandelbrot set. When the user selected (or disabled) a point in the set with the mouse, the C++ program sent OSC messages to Pd using the liblo library saying which point had been selected. Pd then handled all audio and the actual mapping of trajectory to sound.
The sequence generated by a point in the Mandelbrot set is a series of complex numbers. It's possible to sonify such a sequence in many different ways, but the one I chose for these initial experiments was a mapping of sequence index to time and the magnitude of the complex number to frequency. Ideally, the real and imaginary values would represent different dimensions of the sound, but it took me so much time just to get Pd to compute the Mandelbrot set trajectories that I didn't have time to experiment with more complex ways of sonifying the data (this was my first major experiment with Pd and I didn't yet know how to write Pd externals - too bad, since that would have saved me a lot of time!). However, the Pd patches are written in such a way that it shouldn't be too hard to experiment with different mappings in the future.
Click here to download the Pd files for this project.