Thank you for visiting my portfolio website!

This website covers a selection of technical projects and design breakdowns. If you are interested in my 3D work, consider checking out my Artstation.

Audio Pixel Collider Installation

Custom art installation made for the Audio Pixel Collider event at COFA @ UT Austin.

Audio Pixel Collider Installation

Projection installation made for the Audio Pixel Collider event at COFA @ UT Austin.

Art Installation // Audio Reactive Projection

Event Page 🔗

Role

Solo Project

Tools & Tech

p5.js

Javascript

Sound

Projection

GLSL

Timeline

4 Weeks (Fall 2024)

The Task

I was tasked with designing a large-scale, immersive installation capable of filling two different walls in an industrial environment. I wanted the installation to work well with the soundscape and other visuals, blending instead of competing. There were some challenges to overcome however…

Unideal Space

The projection spaces provided were broken up by pipes and conduit. The brick and concrete were inconsistently textured, and light in color.

Unpredictable Soundscape

The audio (and surrounding visuals) was being developed separately, and I did not have access to the audio while creating the installation.

Limited Site Access

I had very limited time, less than an hour, to test the installation on the actual hardware and projectors being used for the event.

Visual Identity

Because of the nature of the projection space, I opted for high contrast, grid-based visuals. The high contrast (black and white) would help preserve the visuals, even as the projection wrapped around conduit on the wall. Making the display grid-based, helped it blend into the brick backdrop.

This direction allowed me to lean into a retro-esque console aesthetic. I mapped each grid cell to an ASCII character based on the cell’s brightness.

Shader Implementation

To further lean into the console aesthetic, I used a shader that distorted the UV coordinates, simulating the curvature of an old CRT, to an exaggerated effect. Scanlines are also implemented, based on a sin wave displaced by a multiple of elapsed time. This sin wave is used as a multiplier for the final output color. Finally, the shader implements an adjustable chromatic aberration, translating the red and blue channels of the final output color. I tie the aberration’s displacement to a live microphone feed outside the shader.

GLSL Shader Code

Procedural Animations

Now, with a grid of values that can be displayed either as grayscale or as ASCII characters, I still needed to make the display visually interesting. One avenue I considered was externally creating a pre-baked animation to play on loop. I instead, however, opted to create a set of (albeit simpler) procedural animations. I used a system resembling a state-machine to switch between various animations. The animations could be played in an automatic loop, or they could manually directed via keyboard input.

Ripple Animation

Code

Rain Animation

Code

Spiral Animation

Code

Leave a Reply

Your email address will not be published. Required fields are marked *