ECE434 Project - MIDI Controller

Revision as of 17:10, 15 November 2021 by Dfirestorm (talk | contribs) (wrote most of the page)
Jump to: navigation, search

thumb‎ Embedded Linux Class by Mark A. Yoder

Team members: Donald Hau

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

09 Executive Summary
09 Packaging
09 Installation Instructions 
09 User Instructions
09 Highlights
09 Theory of Operation
09 Work Breakdown
09 Future Work/Conclusions
09 Demo/Poster
00 Not Late

Score:  90/100

Executive Summary

Picture that summarizes the project.

This project is a MIDI / piezoelectric piano implementation. It utilizes 12 buttons and 2 rotary encoders to give a full octave worth of piano keys, with the ability to jump up or down the keyboard by either a full octave or individual notes depending on the encoder used. Using 3 piezoelectric buzzers, it also has the capability to play chords.

The piano part of it is fully functional. The buzzers work well and so do the encoders.

While the MIDI is fully implemented, it is not tested and I still have to finish getting it to set up fully.

In summary, it is currently a very annoying but much more useful version of the ECE160 project.


If you have hardware, consider Small Build, Big Execuition for ideas on the final packaging.

Installation Instructions

Github has all required files. gives the python midi library via pip3, the sets up pins, and is the actual file to run.

User Instructions

Simply run and wait for startup to complete.


Theory of Operation

Work Breakdown

I did everything in this project solo, and got a large amount working. I wanted to display the current base note on a 7 segment display but found that there wasn't enough speed to do that while watching for button presses.

Future Work

In the future, I plan on supplementing the project with using the 8x8 LED matrix to display the starting note.


The beagleboard is a very useful board and it is probably the only board I know of which could accomplish this without additional hardware, as it can run multiple hardware PWM simultaneously as well as having significantly more IO pins than other devices.

thumb‎ Embedded Linux Class by Mark A. Yoder