Difference between revisions of "ECE434 Project - MIDI Sequencer"
(→Highlights) |
(→User Instructions) |
||
Line 62: | Line 62: | ||
User control is pretty straightforward, since the LCD display tells you each colored button's functionality. Additionally, depending on what state the player is currently, the available pushbutton options will be illuminated. Any non-illuminated buttons don't do anything when pressed in that state. | User control is pretty straightforward, since the LCD display tells you each colored button's functionality. Additionally, depending on what state the player is currently, the available pushbutton options will be illuminated. Any non-illuminated buttons don't do anything when pressed in that state. | ||
+ | |||
There are essentially 3 states of the player: Stopped, playing, and settings. | There are essentially 3 states of the player: Stopped, playing, and settings. | ||
Line 71: | Line 72: | ||
Orange: Skip to next song | Orange: Skip to next song | ||
White: Open setting menu | White: Open setting menu | ||
+ | |||
While playing, these are the user options: | While playing, these are the user options: | ||
Line 78: | Line 80: | ||
Orange: Skip to next song | Orange: Skip to next song | ||
White: N/A | White: N/A | ||
+ | |||
While in settings, these are the user options: | While in settings, these are the user options: | ||
Green: Switches to next soundfont | Green: Switches to next soundfont | ||
− | Red: Toggles shuffle mode | + | Red: Toggles shuffle mode (illuminated while on, dark while off) |
− | Orange: Toggles MIDI/WAV mode | + | Orange: Toggles MIDI/WAV mode (illuminated while in MIDI mode, dark while in WAV mode) |
White: Return to stopped state | White: Return to stopped state | ||
Revision as of 12:27, 20 February 2023
Team members: Gaven Williams, Brendan Perez
Contents
Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!
Add Extras 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
Final hardware implementation of the MIDI Player
Our project is a MIDI/WAV music player. The user can browse through a selection of .mid and .wav files using pushbuttons and an LCD screen, or put the player in "shuffle" mode. While in MIDI mode, the user also has the option of selecting a soundfont, which will then be used in MIDI synthesis.
We have finished implementing all of these features.
Source code: https://github.com/rhit-perezbe/MIDI-Player
Packaging
We constructed a small UI box that houses the pushbuttons and LCD screen.
The CAD file (boxhole2.DXF) is located on our GitHub as well: https://github.com/rhit-perezbe/MIDI-Player
Installation Instructions
All installation instructions can also be found on our GitHub repo: https://github.com/rhit-perezbe/MIDI-Player
User Instructions
To get started with our program:
bone$ cd MIDI-Player
bone/MIDI-Player$ sudo ./midiPlayer.py
Now that it's running, the user can operate the player solely from the LED pushbuttons and LCD display.
User control is pretty straightforward, since the LCD display tells you each colored button's functionality. Additionally, depending on what state the player is currently, the available pushbutton options will be illuminated. Any non-illuminated buttons don't do anything when pressed in that state.
There are essentially 3 states of the player: Stopped, playing, and settings.
While stopped, these are the user options:
Green: Play currently displayed song (enters playing state) Red: N/A Orange: Skip to next song White: Open setting menu
While playing, these are the user options:
Green: N/A Red: Stops playback (enters stopped state) Orange: Skip to next song White: N/A
While in settings, these are the user options:
Green: Switches to next soundfont Red: Toggles shuffle mode (illuminated while on, dark while off) Orange: Toggles MIDI/WAV mode (illuminated while in MIDI mode, dark while in WAV mode) White: Return to stopped state
Highlights
Our project was designed to be as robust and versatile as possible, while still maintaining a simple and accessible user interface.
One such feature is the ability to switch between soundfonts. This allows for any one MIDI file to be played with a variety of samples and instruments, giving the user a wide range of choices for how they want to listen to a certain song. We even included the infamous "meowsynth" if the user insists on hearing their music sung by the dulcet tones of a cat.
Anyone who downloads our project can add any MIDI, WAV, and soundfont (SF2) files to their respective folders to expand the library of music. Additionally, uploading a 200x200 pixel image with the same name as a MIDI or WAV file will display that image when that song is playing. If a song without a dedicated image plays, a default image will display during that song.
The user interface is clean and simple, streamlining the listening experience. There are 4 buttons, which are clearly labeled on the LCD screen. For additional simplicity, only illuminated buttons are functional in certain states.
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
List the major tasks in your project and who did what.
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
Future Work
Suggest addition things that could be done with this project.
Timeline
Fri 27-Jan-2023: BeagleBone playing .wav files
Mon 30-Jan-2023: BeagleBone playing .mid files given a soundfont
Sun 5-Feb-2023: Can stop song playing (kills fluidsynth process)
Mon 6-Feb-2023: Breadboarding user hardware
Tues 7-Feb-2023: Software for user buttons
Fri 10-Feb-2023: Start software for LCD display
Mon 13-Feb-2023: Finalize software for LCD display
Fri 17-Feb-2023: Put together box for user hardware
Sun 19-Feb-2023: Finalize documentation (hackster.io, wiki page, etc)
Wed 22-Feb-2023: Final project DUE
Conclusions
Give some concluding thoughts about the project.
If we were to do this again, we could have expanded the UI box to also contain a PocketBeagle in order to fully contain our hardware and reduce the number of exposed wires.