Music Synthesizer Project

Overview

This was a group project in an embedded systems module, where we were given an STM32 and 'piano boards' that were built by the department and tasked to program them to create a music synthesizer.

Design

The board provided (shown below) included a set of standard piano keys, four knobs that can be pressed and a joystick. These were connected to specific pins on the STM32 with pinout diagrams provided. All students were given demo Arduino code for the microcontroller to recognize key presses, and expected to use FreeRTOS for task scheduling.

For this project I suggested using STMCube to program the microcontroller, which would allow advanced hardware features to be used such as DMA and timers. For this project I worked on the UI, setting up the u8g2 library to use HAL functions to output to the display and assigning timers and DMA controllers as needed.

Demonstration

The following video, narrated by a team member, shows the working synthesizer board.

Extension

As an extension to the project, I added a feature to record sound on the board and send the recording to the computer. This was done by converting each discrete sample point to an 8-bit 'char' and sending it out through USART to a python script that creates a WAV file.

Feedback

Written Instructor Feedback:
This implementation shows an excellent understanding of microcontroller programming by working with the STM32 HAL to configure and use peripherals at a low level, including the DMA. The additional features make very nice sounds and the user interface is neat.