oasis is an interactive audio visualizer that plays with day/night, light/dark, and changes in perspective. It tackles a situation we might face from time to time: getting lost in the deserts of life, searching over and over for our own oasis.


Building and Running oasis

  1. Download oasis and unzip the archive.

  2. Navigate to [archive-dir]/visual-studio/ and open oasis.sln.

  3. Change the Solution Configuration to Release, and the Solution Platform to x86.

  4. Build oasis via Build > Build Solution, or using the shortcut Ctrl+Shift+B.

  5. Once oasis finishes building, navigate to [archive-dir]/. There should be an executable named oasis.exe which can be run.

    • IMPORTANT: Ensure that a directory named music/ is in the same directory as oasis.exe, and that music/blow.ck exists. oasis will use this file to generate sound, and will not run without it!
  6. If you do not have a microphone, you can still experience oasis! When asked to blow into the mic, simply hold the spacebar. It's the next best thing.


oasis in Action

A demo video is available here: Preview


The main screen is simple, but gives a sense of what is to come.


During the day, the river in the foreground shows the input audio signal in the time domain. The sun expands and contracts as a function of the RMS audio amplitude. The clouds seen surrounding the dunes come from a spectrogram generated from the signal's FFT.


Night is a different story. Not only are the colors more reserved, but the cloud spectrogram is replaced by a similar star spectrogram. One difference is that the stars don't change their color. Rather, they grow/shrink, giving them a "twinkling" effect.


Throughout the entire narrative, a changes in perspective and time of day are used to complement the storyline and the character's transformation.


Thoughts Behind the Design

Initially, oasis was intended to be a simple desert soundscape that responded to changes in the input audio signal, but in this sense, interacting with the visualizer turned out to be quite limited. The first component to offer a richer user experience was the integration of blow detection into the narrative. Using ChucK's OnePole filter, oasis was able to respond to a user blowing into a computer mic, which emulated "extinguishing a light."

This metaphor became crucial to the day/night aspect of oasis, which aimed to not only move the narrative along, but provide different visualizations and modes for the user to experience. Brighter and more vivid colors were chosen for daytime, while duller and more somber colors were used for nighttime. However, a simple day/night cycle seemed unsatisfying, as it only provided two scenes to develop a story.

The final aspect of oasis that helped to drive the narrative was the addition of the perspective change, which is symbolic of the character's transformation from a distressed and myopic person into someone who gains a better understanding of his life's journey. The beginning and ending scenes were chosen to be the same on purpose, so as to demonstrate how the character has come full circle in his thinking about life.

Difficulties and Technical Challenges

While developing oasis, a key challenge was determining how to communicate information between the core oasis program and ChucK. Although oasis initially kept track of its own "timer" to handle events, it did so relative to the frame rate, which varied quite a bit. The solution was to have ChucK keep an internal "metronome", and signal oasis of an event via a print statement. oasis could then update the graphics accordingly, and if needed, signal ChucK via an external Event.

Another difficulty was deciding how to display, normalize, and smooth the raw input audio signal so as to provide a pleasant user experience while retaining the responsive nature of a visualizer. In the end, constants and scaling were carefully chosen to contribute to and complement the graphical landscape depicted by oasis.

Collaborators

N/A


oasis was built by Mark Sabini for CS 476A (Fall 2017).