Difference between revisions of "ECE434 Project - MIDI Controller"

From eLinux.org
Jump to: navigation, search
m (Added midi)
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Category:ECE497 |PM]]
[[Category:ECE434Fall2021 |PM]]
[[Category:ECE434Fall2021 |PM]]
Line 37: Line 36:
== Packaging ==
== Packaging ==
If you have hardware, consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging.
This project is currently just on a breadboard but is an excellent choice for making a better packaging later.
[[File: ECE434 midi keyboard overview.jpeg|thumb|overview of the physical layout]]
== Installation Instructions ==
== Installation Instructions ==

Latest revision as of 08:26, 30 November 2022

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 Hackster.io
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 and tested, it hasn't been verified so it may not be sending the time signals perfectly. In summary, it is currently a very annoying but much more useful version of the ECE160 project, with added midi.


This project is currently just on a breadboard but is an excellent choice for making a better packaging later.

overview of the physical layout

Installation Instructions

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


User Instructions

Simply run piano.py 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