A few summers ago, I decided to rent a rustic cabin in rural Vermont in order to write music in isolation. On the whole the experience was very difficult for me; I had never felt that lonely before and my mental health definitely wavered. But it did put me in a place to write music like I had hoped to. While I never want to re-live that experience, I do sometimes wish I could briefly re-live some of the emotions I was feeling that allowed me to express myself musically.
Vermont is an audio-visual program intended to put me (and others) in the headspace of being in that cabin in Vermont. In the first part of the game you are able to walk around the cabin. It is serene and meditative, and there are no distractions around. Once you get bored or anxious, however, there is only one thing you are able to do: sit down at the piano. At the piano, you are able to look out a window and play your MIDI keyboard, where your notes fall as water droplets from the sky and the quickly passing days create filter sweeps of your sound.
During this project I felt like I was constantly walking a fine line between developing my audio and visual programming chops in new programming environments and thinking critically about my game's design and the feelings it would invoke in its users. Pay too much attention to the former, and I would spend hours creating something that would not feel good for the user, while if I paid too much attention to the latter I would spend those hours fruitlessly trying to program inefficient concepts.
In order to get comfortable with this balance, I first created two other audio-visual programs. The first was a real-time visualizer for both time and frequency domain, and the second was a checkerboard step sequencer.
Vermont was created primarily in the game engine Unity and the strongly-timed audio programming language ChucK, as well as the Chunity plug-in that allows for communication between the two.
Check out a couple of my C# scripts here on Github, or download the .app file to play with it yourself (note: for full functionality you should have a MIDI keyboard connected via port 0; see chuck --probe).