This repository contains the elements of the control system for a 4 channel digital audio mixer. The control system runs on a raspberry pi and communicates with the FPGA handling signal logic over I2C. There are three separate processes running on the pi: a backend which handles communicating with the FPGA over I2C and shares data between different client apps, a hardware client which reads data over SPI busses from the Pi containing values for fader positions, button presses, rotary encoders, LED outputs, etc, and a WebUI which is capable of running fully-remotely from the hardware for remote configuration (Ex: iPad walking a venue to adjust sound levels), or in tandem with the hardware client (Ex: iPad sits on the console to access deeper controls. This is done to save money compared to a separate touch screen).
The backend is written in Go and uses a websocket connection to the clients and the periph.io driver to communicate over I2C to the FPGA. The frontend is written in Angular with the Material UI. The hardware client is written in Go and uses periph.io drivers to communicate over SPI before connecting to the backend via a websocket connection over the loopback address.