• Home
  • Subsystems
  • Process
  • Budget
  • Team
  • Gallery
  • Contact Us
  • Home
  • Subsystems
  • Process
  • Budget
  • Team
  • Gallery
  • Contact Us

Software Design

The software on the surface player is what is responsible for differentiating our project from a modern record player. Rather than just playing music directly from a record, the laser detection is processed and altered by wavetable normalization. The software is also responsible for controlling the motor and outputting it over continous steps. 

Given that we all wanted to build a project interface between multiple inputs and outputs – a laser, motor, camera, speakers, and addressable LEDs – we determined that splitting the modules into seperate classes made sense. The current iteration of the project calls simpler update functions from a central executable. Building this feature enables us to build more and more features later on, making it easy to extend the software's capabilities.

Camera

This module handles detection and isolation of the laser line from the camera's raw video feed, and generates a profile object based on the side profile of the object on the turn table. This profile is then passed to the Audio and LEDs modules as input data for their respective operations.

more

Audio

This module generates playable audio using the pyo server based on a profile generated by the Camera module. It converts the profile object into a wavetable - a playable sample which is looped as the program runs. It also applies audio effects to the generated signal.

more

Laser

This module controls the laser diode, which is attached to a GPIO pin of the Raspberry Pi. When the program is initialized, the laser turns on; when it is quit the laser turns off.

more

Motor

This module handles control of the stepper motor. The motor begins rotation when the main executable is run.

more

LEDs

This module handles control of the addressable LEDs mounted throughout the physical enclosure.

more
 Full documentation at GitHub  

© Surface Player 2021. All rights reserved.