CULMINATION PROJECT

PIANO SIMULATOR

Proposal | Poster | Presentation | Progress Reports | Project Reflection

Proposal

Description | Budget | Calendar & Methods

Project Description

The project is a small 24-key physical version of a piano. Combined with a piece of code, that will be created specifically for this piano, it can teach users basic musical notation and sound correlation. LEDs and a scoring system will tell users whether the note they hit was right or wrong. The application will provide visual feedback as well. I’ve created a simple 7-key version in MTEC 2280 class, and now I want to extend it to 23 keys and improve the functionality as well. It will develop my technical skills in wiring and coding. It will give me a better understanding of how Arduino pieces work together and on their own.

The outcome of the project is to have a working mini piano that will help to learn basic notation and develop a simple understanding of piano keys. Each key will have its own sound. The software will provide the right feedback to users and give them tasks to complete.

The code will be written in JavaScript and Arduino. The piano will use an Arduino motherboard. Each piano key acts as a push button and when pressed, it connects two wires together and sends a signal detecting which key is pressed, allowing the sound to be played without delay. Piano keys are made out of plastic, and the outside shape of the piano is made out of wood.

The project is aimed to teach users how to play basic piano keys, where they are located, and how to read notes. There are two parts: a piano keyboard and a JavaScript application that is as well linked to Arduino. Once the application is launched, a user sees the main menu with a few buttons. A user can then choose what he wants to learn and click on the right option.

A virtual keyboard on the screen helps to locate the right key on a physical keyboard. JavaScript generates a random key to play and displays it on the screen. Once any key is pressed, Arduino sends a value for that key to JavaScript that, in turn, compares the received value of the key with the expected one. If they match, JavaScript tells Arduino to light up the LEDs that are under the kyes. The code also corresponds to the pressed key by coloring that key on the screen. When the right key is pressed, the application randomizes a new value for the key to play, and the process repeats.

Budget

ITEMESTIMATESPENT
materials$200.00
ELEGOO mega$19.99
Springs$29.97
Cooper Tape$6.88
10K Resistors$1.54
LEDs$23.79
Paint$6.48
Hot Glue Gun$24.95
Jumper Wires$14.99
Wire Stripper$8.59
8.875% tax$12.17
TOTAL$200.00$149.35

Calendar & Methods

TASKSTART DATEEND DATEDURATION
Pick topic 10/26/2211/1/227
Decide the scope11/2/2211/5/224
Set up deadlines11/6/2211/7/222
List materials11/8/2211/10/223
Order materials11/11/2211/20/2210
Build a prototype11/21/2212/7/2217
Application prototype12/8/2212/20/2213
Test and update12/21/2212/25/225
Sketch keys and piano1/10/231/17/238
Prepare files for laser cutting1/18/231/25/238
Prepare for wood cutting1/18/231/25/238
Laser cutting2/20/232/28/239
Wood cutting3/1/233/20/2320
Make keys3/1/233/10/2310
Application coding3/7/235/2/2357
Wire up and test keys3/11/233/31/2321
Make piano (outer shape)3/11/233/31/2321
Install keys4/1/234/20/2320
Test piano and adjust4/21/234/30/2310
Test (by someone else)5/2/235/3/232
Finish adjustments5/4/235/7/234
Record a video5/7/235/7/231
Prepare presentation5/7/235/8/232
Present5/9/235/9/231

Poster


Presentation


Progress Reports

No. 1 | No. 2 | No. 3

Progress Report No. 1

I’ve made some progress over the past few weeks in transferring the code from Java to JavaScript and integrating new libraries. I’ve also coded several pages of the application and created some graphics to enhance the overall user experience. On top of that, I’ve prepared all the necessary files for fabrication and ordered the required materials for the project.

Progress Report No. 2

I have made some progress over the past few weeks, focusing on the web application pages, graphics, fabrication, and wiring.

I have kept working on additional web pages and on creating more graphics to enhance the visual appeal of the application.

Regarding fabrication, I have made good progress in fabricating the piano keys. Moreover, I have cut the wood into pieces for the piano shape, ensuring that all pieces are the correct size and shape.

Finally, I have started wiring up the keys, connecting them to the necessary components, and ensuring that they work correctly.

Progress Report No. 3

At this stage, the piano project is nearing completion. The wiring for the keys and LEDs is fully installed, and support has been added for the keys. Currently, all white keys and half of the black keys have been installed. The remaining black keys will be installed shortly so that all the pieces can be assembled.

On the software side, I have successfully established serial communication between the Arduino (piano) and the browser (web application). The web pages are almost finished, with only some minor adjustments remaining.

In the final week before the presentation, I plan to complete the remaining wiring and coding tasks, paint the piano, allow my friends to test it, and prepare the presentation.

Project Reflection

As I reflect on the months of hard work that went into this project, I am struck by the many lessons I’ve learned along the way. There’s something incredibly satisfying about taking an idea from concept to completion, and this project has given me a newfound appreciation for the power of hard work and dedication.

I remember the moment when I had to decide what the project will be. The only idea that came to my mind was a piano. By that time, I’d already completed a similar project in MTEC 2280 class, and that version of a piano was not only my inspiration but also a prototype. I had a vision in my head of how I wanted my culmination project to be, and so I started outlining all the steps that needed to be done.

Now that I’m thinking about it, I have probably got carried away too much, and at some point, I had to tell myself that I only have so much time and there is no way I can do everything. I had to prioritize the features and decide which ones are less essential for a starting point.

As I started working on the project, I felt overwhelmed by everyone’s excitement. Although people had high hopes for the project, I was filled with uncertainty. From the moment I picked the project, I felt accountable for other people’s expectations, but this feeling of responsibility also served as motivation for me to continue working on it.

I wish I could say the project went smoothly but, unfortunately, that’s never the case. As I was working on the project, I faced a few challenges. One example is there were times when I struggled with writer’s block when I was trying to narrate the music theory and had trouble putting my thoughts into words. I couldn’t move on until I come up with something to put on the page. I told myself to just start writing whatever was on my mind and edit later.

Another example is wiring. It is the most important part of the project, and if there is no piano –– there is no project. It took me a while to wire all the keys and a while and a little more to re-wire them later as I ran into problems. Without going into details, I had to start from the beginning when at least half of the work was already done. Well, at least I didn’t wire all of them, right?

The biggest challenge I had to face was myself. Anything I did or didn’t do is on me. Yes, I could’ve just said I needed more time, but what I really needed was better time management. I had to deal with myself for about three months, and every day I had to overcome my procrastination and denial. There were days when I was successful, there were days when I wasn’t.

At some point, I got to the understanding that I will finish the project on time. It definitely gave me confidence but, funny enough, it happened only a few days before the presentation. Nevertheless, I was happy to know that I have enough time to record the video to show the project and put the slides together. If I had to do some adjustments to the piano or code, they were minor and didn’t take much time or energy.

 Thinking about all the steps I went through, and processing what’s been done, I do some things differently if I were to make the piano again. I started wiring front the white keys, then I move to LEDs leaving black keys for last. It was extremely hard to fit all the wires, LEDs, springs, and additional supports for black keys afterward. Instead, I would start with designing how the inside of the piano will look like. It is important to organize wires underneath the keys at an early stage so that in the future it will save a lot of time, energy, and nerves. Plus, organized wires look good.

Another question that I cannot help but ask myself is whether or not I would do the project again. And to answer it honestly, I first need to take a small break from the piano. But I definitely do have ideas on how to improve what I already have. I think the web application can dive into more details on the music theory with more detailed explanations, interactive visuals, and engaging practices and feedback.

Am I exhausted by the project? Yes. Am I proud of it? Absolutely. And I think there’s nothing quite like the feeling of satisfaction that comes with completing a project you’re truly proud of.

Looking back on the project, I’m filled with pride and a sense of accomplishment for what I was able to achieve. Completing this project has been for sure one of the most challenging yet rewarding experiences of my academic career. It has inspired me to continue pursuing my passions and to never give up in the face of challenges. Completing this project has given me the confidence to tackle new challenges and push myself beyond my limits. In the end, this project was more than just a culmination of hard work and dedication—it was a journey of self-discovery and personal growth.