The Wieniawski Violin Etudes are pieces for students meant to represent the core virtuosic abilities of a accomplished violinist, with each one focusing on one of these fundamentals. Our task was to create a visual system for these Etudes to tell a story to the audience outside of the music alone.
We were interested in a strong narrative component, one that works more on a human emotional level than just purely a machine translation of sound to light. The first thing we did to prepare was, of course, listen to the tracks quite a bit, then ask ourselves, “What is the the story the musicians are trying to tell? Not just the sequence of notes, but the violence of the strokes, the volume, the timbre. All of it combines to make us feel something, but what do we feel?” What we heard and worked with was a story of tension and release, corruption and redemption.
The Etudes we were scripting for were Op. 18 movements II, III, and IV. The second movement relied heavily on a regular geometric rotational system that gets corrupted and re-skinned over and over again. The third movement plays with the idea of corruption by introducing different particle systems to play over the notes of the piece. And finally, the fourth movement explores the motion and space between players as the similarities and differences of the two violinists music and motions would determine the space and speed of the objects on the screen.
The way we chose to interact with the performers was through physical motion by using accelerometers, and Fast Fourier Transform (FFT) code to translate pitch, attack, and other aural qualities of the music into visual output, or programmatically manipulatable variables. As for the physical motion, we felt it would be advantageous to connect accelerometers directly to the musicians wrists. This would allow a noise free, one-to-one connection to the movement of the violin bow, yielding orientation and movement data in 3 axes.
In order to wirelessly receive this data from the musicians, we decided to use an Arduino Fio v3 connected directly to a Roving Networks WiFly module in order to stream the data to our applications via wifi. The actual accelerometer readings were collected with an LSM303 accelerometer+magnetometer module. The data from the accelerometer was read by the arduino and sent via wifi using UDP communication to an OpenFrameworks receiver application.
All the code we used for both the arduino and the openframeworks sketches are available on the project repository.
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.