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
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 :)
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.
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!
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!
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:
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.