ECE434 Project - MIDI Controller

From eLinux.org
Revision as of 08:50, 17 November 2021 by Dfirestorm (talk | contribs) (added image)
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 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.

Packaging

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

An image showing a beaglebone black and a breadboard, with 12 buttons, 2 rotary encoders, and 3 piezoelectric buzzers attached.

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.

https://github.com/dfirestorm/ece434Project.

User Instructions

Simply run piano.py and wait for startup to complete.

Highlights

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.

Conclusions

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