This piece is a simulation is which circles move around the screen and bounce off of each other and the borders of the screen. The circles work as a way to create the sounds which are the focal point of the piece. Each time the circles bounce against the wall, a note is played, and whenever the circles bounce off of each other, a kick drum is hit. Slowly, as time progresses in the piece, the notes begin to change to outline an arpeggio. Each time a circle collides with another, an internal value goes down. After enough of these collisions occur, the note changes, and once at the last note in the arpeggio, the circle begins to change shapes into different multi sided objects and eventually at the very end they become short thin lines. Once every single circle changes into one of these lines, they all become circles again and the arpeggio changes. The process repeats twice with the final time being a chord played all at once instead of individual notes in a chord.

This was somewhat inspired by Jon McCormack’s Eden audio-visual piece which has lifeforms grow over time and make music. Along with Jon McCormack’s visual aspects and concept, I took a lot of inspiration from the music group Autechre which used the max coding language as the basis for creating all of their music. They used programming to trigger different sounds when different events occurred and cause the piece to modulate of time.

Along with the circles, there are a few extra visual elements in the piece which are triggered based on the sounds that play. In the bottom left corner of the screen, there is a wave like shape which is actually a visual representation of the frequencies spectrum of the audio coming from the circles. The spectrum will flare up as more and louder sounds are played and will become much smaller when there is no sound at all. In the top right corner, there is another spectrum which will only play when a circle bounces off of a wall and a note plays. This spectrum stays on the screen for only a split second and is used to add extra weight to whenever a sound is played. As the circles reset and the notes change, the colors of the spectrum also change. In the final moments of the piece, the colors are just black and white instead of more vibrant colors which adds contrast and weight to the ending.

In addition to the spectrum in the corners, there is an additional visual representation of the audio whenever the circles collide and a kick plays. When the circles collide, a waveform of the sound currently playing in the whole piece will shoot out form that circle in a random direction. This helps out somewhat to make the kick shine through a bit since the visual is very striking and the kick is a bit quieter than the notes being played.

Overall, I’m happy with the way this piece turned out even though I wasn’t able to do everything that I intended to. I feel that the music is interesting and it reminds me of a lot of different ambient artists that I respect, however, I wish that I had more flexibility in javascript to change the sounds more such as being able to add a filter to sounds over time. I think that the chord progression the arpeggios outline flow nicely and the ending where the full chord is playing and the note is held out longer than the earlier parts feels climactic. One thing that I’m both happy and frustrated with is a bug in the code which can sometimes cause two of the shapes to become stuck together until another shape collides against them at just the right angle and causes them to become unstuck. Having two shapes endlessly collide against each other causes the kick audio file to trigger over and over again, 60 times a second. This causes an awful noise and consumes all of the other sounds that are being played, but this creates tension. When the notes become unstuck which could take minutes, the piece goes back to normal and the tension is resolved. The same problem occurs when the shape gets stuck on the wall moving back and forth on the side until it gets unstuck. The sound of one of the notes gets endlessly triggered until eventually something causes it to get unstuck.

The process of coding this piece managed to be both easier and much harder than I expected it to be. I initially thought the hardest part of the piece would be getting the sounds to trigger and interact in interesting ways since that was effectively the bulk of what I was doing. It turned out to be one of the simplest parts of programming the entire thing. Instead, it was the little details and touches that ended up taking the most time. For instance, getting all of the shapes to reset at the same time and start a new arpeggio was quite challenging. It was easy to get them to change to new notes, but it took me an extremely long time to figure out the proper way to make sure they all changed at once. Another thing that was very difficult to implement was getting the waveforms that are emitted when the shapes collide to come from the shape doing the collision. I wanted to have the waveform emit from the shape to another shape creating a link, but The positioning of the waveform was very finicky. For some reason it didn’t ever connect to the x,y position of the other circle even though when I tested it in another program with just the waveform it worked perfectly. I used the same code and inputs, but it just wouldn’t work at all.