Authors: Cristian Embleton & Alex Volkov Course: EEC 172 Final Project - University of California, Davis
Prism is a cheap, lightweight device that syncs the musical beats in a room to LED lights. Adding "sight" to sound, Prism makes the music in a room feel more visceral by integrating real-time Digital Signal Processing (DSP), physical interactivity, and dynamic cloud profiles.
- Real-time Audio Processing: Captures analog audio, converts it via an ADC, and runs it through a Fast Fourier Transform (FFT), DSP Filtering, and Frequency Binning.
- Physical Interactivity: Uses IR Remote button presses to dynamically modify the visual math (such as hue and wave velocity) in real-time.
- Over-The-Air (OTA) Configuration: Interfaces with an AWS Endpoint using anESP32 to save and load custom visualizer sequences without reflashing the firmware.
- Scalable Display Output: Drives an Adafruit OLED screen of any size to display beautiful visuals.
Prism uses simple core components to visualize the different dimensions of a song. An IR Receiver utilizes a GPIO interrupt handler for discrete mode switching between the following modes:
- Bar Mode
- Wave Mode
- Beat Pulse Mode
The Prism embedded system is powered by a CC3200 microcontroller, which acts as the CPU for audio analysis and display generation.
- Microcontroller: CC3200-LAUNCHXL LaunchPad
- Audio Input: Adafruit Analog Microphone (MAX1984) and On-Board ADC
- Displays: Adafruit OLED Breakout Board (16-bit Color 1.5")
- Other Sensors: BMA222 IR Receiver
- Debugging Tools: Saleae USB Logic Analyzer and Code Composer Studio
- SPI: A synchronous serial communication interface used for driving high-speed data to the OLED display
- I2C: A synchronous serial communication bus used to read 3-axis motion data from the accelerometer
Prism is developed using Code Composer Studio (CCS) and relies on the CC3200 SDK (Driverlib: GPIO, SPI, I2C, SysTick)
Beyond local processing, the central control unit interfaces with the cloud via an AWS Endpoint using HTTP/REST protocols.
- GET Requests: The device executes GET requests to fetch JSON payloads, updating internal variables to change the number of bins, color palettes, or temporal smoothing constants on the fly.
- POST Requests: Users can execute POST requests via the IR remote to capture their current interactive state and permanently save it to the cloud as a new custom pattern.