For this week’s assignment, Alreem and I decided to create a simple musical instrument using buttons, potentiometer, and a piezo buzzer. Using these 3 items as our project’s main components allows us to showcase our concept of creative simplicity, in which we emphasize simple design but use our creativity to create some form of abstract output. We wanted to utilize this concept as our main aim for this project which is to build an instrument that is not only easy to understand from both a schematic and user-design perspective, but also produce a diverse range of musical tones and rhythms. The musical instrument generates tunes when users press the designated buttons on the breadboard, allowing them to craft a unique tune of their own. The potentiometer offers users the ability to adjust the frequency of the tunes produced by the buttons, further enhancing their ability to personalize their musical experience. The hands-on and interactive approach to this project not only promotes personal creativity but also encourages users to experiment with different tone combinations, all within the framework of a simple and user-friendly design.
Below you can find the project’s diagrams:
Schematic Diagram
After finalizing our schematic diagram, we started to build the project using the Arduino. The full list of the components used is as follows: 12 wires, 3 330 resistors, 3 buttons, potentiometer, and a piezo buzzer. These components are what helped ensure that the tunes are heard when the buttons are pressed and adjusted when the potentiometer is turned. You can see the fully complete project below:
When coding for this project, we struggled a bit with getting the certain tunes to be the way we wanted them. It was only when we tried and tested several different tunes for the different buttons did we get the rhythm/tunes we wanted for our final project. Therefore, that is the part of the code that we are most proud, which can be seen below:
#include "pitches.h" // New melodies: //For Button 1 int melodyPart1[] = { NOTE_C4, NOTE_E4, NOTE_G4 }; //For Button 2 int melodyPart2[] = { NOTE_A4, NOTE_C5, NOTE_E5 }; //For Button 3 int melodyPart3[] = { NOTE_G5, NOTE_E5 }; // Note durations: 4 = quarter note int noteDurations[] = { 4, 4, 4 }; //Function to play the tune on the buzzer, melody[] = array that containes the notes that need to be played, melodyLength = the number of notes in the melody array, tempoDelay = the delay (in milliseconds) between each note void playMelody(int melody[], int melodyLength, int tempoDelay) { // Initializes thisNote to 0, continues looping as long as thisNote is less than melodyLength, and increments thisNote after each loop for (int thisNote = 0; thisNote < melodyLength; thisNote++) { //Calculates the duration of the current note int noteDuration = 1000 / noteDurations[thisNote]; //Plays the current note on the buzzer connected to buzzerPin tone(buzzerPin, melody[thisNote], noteDuration); //Calculates the duration of the pause between the current note and the next note, adds 30% longer pause to the duration int pauseBetweenNotes = noteDuration * 1.30; //Determine how long to wait before playing the next note delay(tempoDelay); // Use tempoDelay instead of fixed pauseBetweenNotes //Stops the buzzer sound from playing the assigned tune by turning off noTone(buzzerPin); } }
Overall, this project was an enlightening experience for both Alreem and I. It gave us the opportunity to combine our previous knowledge of working with circuits and programming to create something that is not only functional to users but also quite enjoyable to use. The project’s emphasis on simplicity resonated with us a lot as we wanted the project to speak for itself, which is why we are more than happy to see how by just using a few basic components, we could create a musical instrument of sorts that is capable of producing various tunes. That being said, we still feel like there are areas of improvement for our project. Next time, it would be interesting to explore adding additional features or potentially modes to our makeshift instruments, such as having more piezo buzzers in order for more than one tune to be played. Doing this might help enhance user-experience, creating a more well-rounded project. That being said, we are proud of how far we have come! Despite minor challenges we faced, we were able to collaborate together and successfully create a musical instrument that engages with the users in a personal way.