The Task
My group, Daniel, Diego, Maddie, and I, was assigned the final task for our freshman year of STEM Marin. We were tasked to take a previous project we have done in the past and "do it better". Our group decided to choose the Robot Art Show Project and improve it. It was a lot of work, but overall the final project was far better than the original project and I am very proud of it.
The Final Product
Our group decided to program all of Pink Floyd's 1973 hit album "Dark Side of the Moon". We originally wanted to do song "Time" off the same album, but we quickly chose to go for the whole album. The group was generally divided into two sections. Diego and I worked on the sound and programming and Daniel and Maddie worked on the art and servo motor. The servo motor was as a heartbeat which is present in "Speak to Me". I programmed the lead lines and the bass lines, but only the lead lines were used due to mixing issues. We also created a mock album cover that had colored wires to represent the rainbow. 9 of the 10 songs on the album were recreated on the Arduino board:
Speak to Me - The first song of the album opens up with a heartbeat. We created this heartbeat using a servo. "Speak to Me" acts as a transitional song into "Breathe", so Diego used Audacity to have the audio fade in. A low E acts as a pedal tone as well.
Breathe - "Breathe" is the first major song programmed on the board. It is only the lead line, but it works well. "Breathe" was significantly shortened, as well as the other songs.
On the Run - "On the Run", on the actual album, has a ton of sound effects such as plane crashes and voice overs. This was difficult to make on the Arduino board, so I looped the main riff for a bit and then ended it to move to "Time".
Time - "Time" starts with long, held out notes, similar to the actual song. From there, it goes into the iconic melody of what is argued to be the best one on the album. Time is my personal favorite song on the album. I had to leave out the guitar solo for the sake of time and sanity.
The Great Gig in the Sky - "The Great Gig in the Sky" has the powerful vocal line sung by Clare Torry. I used the Arduino board to create the piano intro and Torry's vocal solo.
Money - "Money" is most likely the best on the whole album because it incorporates the bass with the lead line. It was paramount to have the bass because the most definitive feature of "Money" is the bass line along with its 7/4 time signature.
Us and Them - "Us and Them" has themes of war and propaganda. There was nothing too unique about the programming of this song; it was a bit difficult to program it to sound well because of the psychedelic nature of the song that cannot be recreated on an Arduino board.
Brain Damage - "Brain Damage" is where the album begins to meet is end. Once again, there's nothing too noteworthy about this song's process.
Eclipse - "Eclipse" is merged with "Brain Damage" almost seamlessly, except for the part where it is in 3/4 as opposed to 4/4. It ends on a D and resolves the entire album.
The only song we left out was "Any Colour You Like" (between Us and Them and Brain Damage) because the song itself was extremely complex and the code had too many errors in it for the song to sound decent.
Speak to Me - The first song of the album opens up with a heartbeat. We created this heartbeat using a servo. "Speak to Me" acts as a transitional song into "Breathe", so Diego used Audacity to have the audio fade in. A low E acts as a pedal tone as well.
Breathe - "Breathe" is the first major song programmed on the board. It is only the lead line, but it works well. "Breathe" was significantly shortened, as well as the other songs.
On the Run - "On the Run", on the actual album, has a ton of sound effects such as plane crashes and voice overs. This was difficult to make on the Arduino board, so I looped the main riff for a bit and then ended it to move to "Time".
Time - "Time" starts with long, held out notes, similar to the actual song. From there, it goes into the iconic melody of what is argued to be the best one on the album. Time is my personal favorite song on the album. I had to leave out the guitar solo for the sake of time and sanity.
The Great Gig in the Sky - "The Great Gig in the Sky" has the powerful vocal line sung by Clare Torry. I used the Arduino board to create the piano intro and Torry's vocal solo.
Money - "Money" is most likely the best on the whole album because it incorporates the bass with the lead line. It was paramount to have the bass because the most definitive feature of "Money" is the bass line along with its 7/4 time signature.
Us and Them - "Us and Them" has themes of war and propaganda. There was nothing too unique about the programming of this song; it was a bit difficult to program it to sound well because of the psychedelic nature of the song that cannot be recreated on an Arduino board.
Brain Damage - "Brain Damage" is where the album begins to meet is end. Once again, there's nothing too noteworthy about this song's process.
Eclipse - "Eclipse" is merged with "Brain Damage" almost seamlessly, except for the part where it is in 3/4 as opposed to 4/4. It ends on a D and resolves the entire album.
The only song we left out was "Any Colour You Like" (between Us and Them and Brain Damage) because the song itself was extremely complex and the code had too many errors in it for the song to sound decent.
The Code
The beats represent the length of each note. Higher numbers mean longer values. The notes are variables and their pitches are defined earlier in the code. Variables are also case sensitive, which opened up more opportunities for sharp and flat notes and octaves. The song length is the number of notes. It's important to get this value right because it assigns the notes to beats. If the number is off, then the notes are off.
The // is a comment, which has no effect on the code.
The // is a comment, which has no effect on the code.
The Link
We put the project on Diego's Soundcloud page. It consists of 9 tracks and was uploaded June 4, 2018. The album is called "Buzz Side of the Moon":
|
Important Concepts
void setup(); - This commands run commands within its brackets once.
void loop(); - This command loops the commands within its brackets indefinitely.
pinMode(pinNumber, OUTPUT); - This command sets a pin (digital) as either an output or an input. It's usually set as output because this can be used to "turn it on". This command goes in "void setup();".
digitalWrite(pinNumber, HIGH); - This command sets a pin as HIGH. What this means is that voltage is sent through that pin. If an LED is connected to that pin, that means that the LED turns on. This command usually goes in "void loop();".
digitalWrite(pinNumber, LOW); - This command sets a pin as LOW. This means that voltage is turned off on that pin. This command usually follows a "digitalWrite(pinNumber, HIGH)" command, meaning that the LED turns off.
delay(1000) - This command puts a delay between commands. The number in parentheses is in milliseconds. In this example, the delay lasts for 1000ms, or 1 second.
int - This command sets a value to an "integer". For instance, if we use the command "int ledPin = 13", whenever we put "ledPin" into a command, that means it'll associate to pin 13.
char notes[] - This command sets the notes of the song. It determines what pitches are played at each beat. These pitches are defined earlier in the code. They are surrounded by quotes and aren't spaced out. Spaces represent rests.
char beats[] - This command sets the beats of the song. Surrounded by curly brackets, the beats are represented by numbers and separated by commas.
int tempo - This command sets the tempo for a song. Tempo had to be established each song since each song had a different tempo.
// - Two slashes represents a comment. A comment is text that doesn't affect the code. It can be used as notes in the actual code. If a comment needs to be multiple lines, we can use /* and */. In the code, comments are left to mark different sections of the beats.
Time Signature - A time signature refers to how one counts the beats of a song. The top number determines the number of beats in a measure and the bottom number determines the value of the beats. Most songs are in 4/4, but "Dark Side of the Moon" has songs in more unique time signatures such as 7/4 and 3/4.
void loop(); - This command loops the commands within its brackets indefinitely.
pinMode(pinNumber, OUTPUT); - This command sets a pin (digital) as either an output or an input. It's usually set as output because this can be used to "turn it on". This command goes in "void setup();".
digitalWrite(pinNumber, HIGH); - This command sets a pin as HIGH. What this means is that voltage is sent through that pin. If an LED is connected to that pin, that means that the LED turns on. This command usually goes in "void loop();".
digitalWrite(pinNumber, LOW); - This command sets a pin as LOW. This means that voltage is turned off on that pin. This command usually follows a "digitalWrite(pinNumber, HIGH)" command, meaning that the LED turns off.
delay(1000) - This command puts a delay between commands. The number in parentheses is in milliseconds. In this example, the delay lasts for 1000ms, or 1 second.
int - This command sets a value to an "integer". For instance, if we use the command "int ledPin = 13", whenever we put "ledPin" into a command, that means it'll associate to pin 13.
char notes[] - This command sets the notes of the song. It determines what pitches are played at each beat. These pitches are defined earlier in the code. They are surrounded by quotes and aren't spaced out. Spaces represent rests.
char beats[] - This command sets the beats of the song. Surrounded by curly brackets, the beats are represented by numbers and separated by commas.
int tempo - This command sets the tempo for a song. Tempo had to be established each song since each song had a different tempo.
// - Two slashes represents a comment. A comment is text that doesn't affect the code. It can be used as notes in the actual code. If a comment needs to be multiple lines, we can use /* and */. In the code, comments are left to mark different sections of the beats.
Time Signature - A time signature refers to how one counts the beats of a song. The top number determines the number of beats in a measure and the bottom number determines the value of the beats. Most songs are in 4/4, but "Dark Side of the Moon" has songs in more unique time signatures such as 7/4 and 3/4.
Reflection
This project was the final project of my freshman year, so I decided to go out with a bang. This project was very intense for me because of the workload I decided to tackle. I had a blend of strengths and weaknesses during the project. Some of my strengths were my time management and collaboration skills. This project, by far, was the most work I've ever had to do for a project. Programming the lead and bass lines for 10 songs was extremely demanding and it took hours of work outside of school for it to happen. However, the final product was so satisfying that all the work I put into the project made it worth it. My other strength was my collaboration skills. Diego and I had to work very closely with the music component, so we both had to be on the exact same page at all times. The right questions were asked and Diego and I had no conflict working together on the main part of the project.
With these strengths, I also had some weaknesses. My main issues were my communication skills and leadership skills. My biggest difficulty which involves both weaknesses was collaborating with the other half of the team. I took a huge amount of the burden and, while I shared with Diego, I didn't necessarily share with Daniel and Maddie. Furthermore, I struggled to really tell him what to do. While this isn't really my burden, I could've done more to keep the other two updated on the project itself. Taking on a lot of the work myself hurt my communication skills with the rest of the team.
However, despite the issues, I am satisfied with my work. For my final freshman project, I am very proud of it. STEM has been an entertaining experience so far and I'm ready for my sophomore year and the challenges that I'll face.
With these strengths, I also had some weaknesses. My main issues were my communication skills and leadership skills. My biggest difficulty which involves both weaknesses was collaborating with the other half of the team. I took a huge amount of the burden and, while I shared with Diego, I didn't necessarily share with Daniel and Maddie. Furthermore, I struggled to really tell him what to do. While this isn't really my burden, I could've done more to keep the other two updated on the project itself. Taking on a lot of the work myself hurt my communication skills with the rest of the team.
However, despite the issues, I am satisfied with my work. For my final freshman project, I am very proud of it. STEM has been an entertaining experience so far and I'm ready for my sophomore year and the challenges that I'll face.