wold is a strange planet where you can grow sound-trees, and then play music on them!


Tired of static, impersonal and 2 dimensional interfaces for playing music like those boring, old, NORMAL instruments seem to have?



Well okay! wold lets you create your own musical interface for creation. It's 3 dimensional, adding new ways to think about the relationship between sounds. It's dynamic, which means you can change it at any time. And it's personal: everyone's sound forests will be different, with their own clear strengths, limitations, and possibilities.



Start up wold. A tree will immediately start growing and making sound. You can grow more trees by holding down your finger anywhere on the planet, and let go to stop the tree from growing further. As they grow, the trees will ring out with descending pitches, and whichever one is the last to sound before you let go will be the sound of that tree. You can "play" a tree by tapping on the ground near its base, and it'll sing with that same pitch. Try turning the planet around by dragging with your fingers, growing new trees, and playing melodies on your new forests of sound!

(Careful, wold has some issues and will start to crap out if you get too crazy with the trees!)

!... !

wold's trees are generated using Lindenmayer systems, or L-systems. These are grammar-based fractal systems which are suited very well to simulating plant life. My trees are a modified version of one of the systems from this blog post.

L-systems renders typically implement some sort of 3D "turtle", inspired by LOGO. Althought I spent some time with a more turtle-like implementation for efficiency, my current version of L-system renderer directly manipulates the OpenGL matrix stack as it draws the trees.




You should simply be able to open the XCode project and immediately build and run the binary on an iPad. I'm not sure if it'll currently run on the simulator.


Big thanks to Nick Kruge, who helped me get the trees to point (almost) away from the center of the planet. Also thanks to the internet, who supplied me with a sweet gluUnproject implementation for the iPhone as well as a working Quaternion library for rotating a scene based on mouse/finger movement.


No thanks to STK for being a performance hog, or to Geometry for a generally being a pain. I had to dump all STK sound and just go with sine waves for now, because any STK instruments would start to cut out heavily after just a few trees. However, I got a lot better at profiling my iPad applications while working on this project, and I know that the next step should be to draw my objects using Vertex Buffer Objects. This would mean that all the data is on the GPU from go and never has to be transferred over the relatively slow bus in "immediate-mode drawing" like my current DrawArrays-based code does.