Adam Smedberg

Pixel Drift

Interactive Installation

An interactive LED installation built for the Portland Winter Lights Festival, created in collaboration with For Good & Company. Participants used their own mobile devices to generate a pixel cloud image with an AI prompt or animate one of ten objects across the display, with a queue system keeping things fair during busy periods.

Summary

Pixel Drift was an interactive installation built for the Portland Winter Lights Festival, created in collaboration with For Good & Company. Participants used their own mobile devices to trigger one of two experiences displayed live on a series of LED panels. The first let users submit a prompt that generated a pixel cloud image, shown on the panels in real time. The second let users trigger one of ten pre-built objects to animate across the display. My role was building the interactive web app, from the participant-facing frontend to the server infrastructure behind it.

Solution

The web app communicated with TouchDesigner in real time using Socket.IO, sending each participant's input directly from their mobile device to trigger the corresponding interaction. Location-based access control restricted participation to people physically near the installation, keeping the experience tied to the live event rather than open to remote traffic. A queue system managed access during high-traffic periods, giving each participant a fair turn without overwhelming the installation. For the generative experience, user prompts were passed to ComfyUI, which produced a pixel cloud image that TouchDesigner then displayed across the LED panels. For the object-based experience, TouchDesigner selected and animated one of ten pre-built objects based on the button pressed. The server ran in Docker with nginx, hosted on DigitalOcean, handling the real-time traffic between devices and the installation. Over the course of the festival, the installation logged more than 450 AI-generated interactions and over 3,200 object interactions.

  • Next.js
  • Socket.io
  • TailwindCSS
  • Docker
  • nginx
  • TouchDesigner
  • Python
Start screen for Pixel Drift web app
Objects page for Pixel Drift web app
Thank you results page of Pixel Drift web app