Difference between revisions of "ECE434 Project - MIDI Controller"

From eLinux.org
Jump to: navigation, search
m (Added preliminary description)
(wrote most of the page)
Line 29: Line 29:
 
Picture that summarizes the project.
 
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.  
+
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.  
  
Give two sentences telling what works.
+
The piano part of it is fully functional. The buzzers work well and so do the encoders.  
  
Give two sentences telling what isn't working.
+
While the MIDI is fully implemented, it is not tested and I still have to finish getting it to set up fully.
  
End with a two sentence conclusion.
+
In summary, it is currently a very annoying but much more useful version of the ECE160 project.
 
 
The sentence count is approximate and only to give an idea of the expected length.
 
  
 
== Packaging ==
 
== Packaging ==
Line 43: Line 41:
  
 
== Installation Instructions ==
 
== 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.
  
Give step by step instructions on how to install your project. 
+
[https://github.com/dfirestorm/ece434Project https://github.com/dfirestorm/ece434Project].  
 
 
* Include your [https://github.com/ github] path as a link like this to the read-only git site:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].
 
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
 
* Include a Makefile for your code if using C.
 
* Include any additional packages installed via '''apt'''.  Include '''install.sh''' and '''setup.sh''' files.
 
* Include kernel mods.
 
* If there is extra hardware needed, include links to where it can be obtained.
 
  
 
== User Instructions ==
 
== User Instructions ==
  
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.
+
Simply run piano.py and wait for startup to complete.  
 
 
Consider making it autostart for full credit.
 
  
 
== Highlights ==
 
== Highlights ==
  
Here is where you brag about what your project can do.
 
 
Include a [http://www.youtube.com/ YouTube] demo the audio description.
 
  
 
== Theory of Operation ==
 
== Theory of Operation ==
  
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.
 
  
 
== Work Breakdown ==
 
== Work Breakdown ==
  
List the major tasks in your project and who did what.
+
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.  
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
 
  
 
== Future Work ==
 
== Future Work ==
  
Suggest addition things that could be done with this project.
+
In the future, I plan on supplementing the project with using the 8x8 LED matrix to display the starting note.  
  
 
== Conclusions ==
 
== Conclusions ==
  
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.
+
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.  
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Revision as of 16:10, 15 November 2021

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, 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.

Packaging

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

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