Homework 2

Max Jardetzky
MUSIC 256A (Fall 2021)
assignment instructions
⟵ back to my portfolio


Sound Peeking Final: "Air2Water"

Files: video performance, macOS .app build, Unity project .zip

In the video, my visualizer "narrative" begins at 1:35. Press spacebar to play the narrative in the .app build!

I am writing this paragraph at 11:45 am on a Monday morning. I have been working basically non-stop since about 3 pm yesterday afternoon, having the best and worst time of my life!
Developing in Unity really is a process. Things never turn out as you envision, but you learn to love what you have. Since the milestone, I switched the functionality of the clouds.
It was getting very difficult to get the clouds to read as the time-domain waveform, so I ended up ditching that idea and turning them into the frequency spectrum instead.
Then, I turned the ocean into the time-domain waveform by reverse-engineering an index array for all the outer vertices (it was a premade mesh) and adjusting their y-values accordingly.
To write the narrative, I took to FL Studio, then tried my best to faithfully transcribe what I'd created into ChucK. Check out the cool drum groove in 6/4 time!
I think it turned out beautifully, just at the expense at everything else that's going on in my life. Oh well :)
Song credit (up to 1:35): "In Too Deep" by Jacob Collier


Milestone 2: Aesthetic Reevaluation

My last milestone received positive feedback for the design of the cloud, but I kept telling myself "why did I box myself in?" with regards to the diorama perspective.
In this vein, I focused most of my efforts this week towards reevaluating my approach to setting up the world. I wanted to create a feeling of expansiveness.
I created and textured a cylindrical world boundary. Notice how it's slowly rotating? I wanted to emphasize movement in all forms with this project, as sound is movement.
I was super lucky to find a beautiful, free water asset for the ocean. For the final version, I will displace the ocean in code to make waves based on the frequency-domain waveform.
I took the audio recording the morning of the deadline. It is me covering "Wind Tempos" by Porter Robinson on piano in the Toyon common room. I hope you enjoy :)


Milestone 1.5: Audio Visualizer Update

I made a cloud surface out of a Mesh that pulls time-domain waveform data to animate the y-component of the hundreds of points!!
At first I was inspired by the diorama approach, but I want to do better and create a foggy, immersive flowing ocean landscape.
For the frequency domain, I will drop raindrops out of the sky in certain areas, and the history will be represented in two phases.
The first history phase will be the falling of the raindrops, and the second the collision and further dispersion into the body of water below.


Milestone 1: Unity and Chunity tutorials, reflection, and brainstorm

Part 1: Unity Roll-a-Ball tutorial result and reflection

I spent several hours on this, really soaking it in and immersing myself in this new environment.
I had used Unity before, but at a very basic level when I was like 13 or something, and I remember only working in 2D.
It was important to me that I get a ground-up reintroduction to the engine, and I had quite a bit of fun following the tutorial, actually.
I can recognize both the power of this tool and the steep learning curve involved, but I don't think I'll be in over my head when it comes to the visualizer.
Time to ChucKify stuff a little bit!

Part 2: Chunity Roll-a-Ball addons result and reflection

I did every part of the tutorials, from the spatialized to nonspatialized pickup noises, console outputs, and audio file playback!
I kept the stock n-beep pickup noise (of the nth cube), but used the Pokémon wall-bump noise for wall collisions.
I thought the spatialized green, fast-spinning cube was really, really cool, but I was unable to read the sub instance's DAC information.
This was relevant because I decided to go above and beyond and store the peak DAC output (through the Player GameObject interactions) in a text label.
It was almost more difficult to figure out how to record desktop audio on macOS so I could provide this lovely video for you.
I also don't know why the sound blips loudly on program startup, but I was unable to prevent it. Headphone warning!

Part 3/4: sndpeek-motivated visualizer design brainstorm reflection

I am really into the piano right now, especially because I'm learning Porter Robinson's "Wind Tempos" on it.
I have a couple ideas for the visualizer, which are pretty disjoint honestly:

  1. Using piano (12-TET) white and black note divisions for the frequency domain, possibly arranged in a circle? (I like circles)
    The keys would be triggered with intensity variance when something within that frequency bucket is sounded. Maybe the time-domain thematic corollary could be vibrations of a piano string?
  2. I also had a clear vision of a 3D-modeled creek scene, with ripples in the water (maybe this is too hard)!
    It would be really cool if raindrops falling into the stream (along an x-axis, fixed y, random along z) could represent frequencies in a sound.
    Maybe the clouds could be formed out of a time-domain visualizer! This is probably out of reach, but I will try!!

Part 5: Artful Design TV "HelloAudioVisualizer" tutorial result and reflection

This tutorial was really fun and intuitive! I was surprised how easily the moving parts came together for an almost-professional product.
I can't wait to see how I can adapt this code into my own personal visualizer, which will probably be more complex than this.
I am really grateful that these resources exist, because Unity and Chunity have really steep learning curves. They are super intuitive, though.