Projects - Embedded MIDI Synth (University Project)

Completed as part of IoT module at UoS

This project aimed to use our provided equipment (an unPhone) to create a mobile synthesizer and MIDI file player. You can load MIDI files onto the device's SD card, and select them from a list to play them, or enter 'synthesizer mode', and play notes using the MIDI synth on the device's sound chip.

We ran into some interesting issues during development: The sound chip on the unPhone was connected to an extended bus, instead of being directly connected to pins on the ESP32. This required us to modify its drivers so the sound chip could be addressed properly by the ESP32, and so it wouldn't be interrupted by other devices communicating on the extended bus.

I mainly focused on the UI elements of the project, which required the construction of a lightweight UI framework that wouldn't interrupt the realtime sound processing. This framework allowed a programmer to define a button's position, text, size, and an 'action', from which the framework code could draw the button on the screen, and check if it had been pressed. Normally this would cause an interruption in the sound being played, but we were able to sufficiently separate those components so they would not interfere with one another.