When it comes to music, people favor different elements of a song which makes them  have a certain feeling of that song. Which is exactly why my class is creating a program which recommends people a song that they like based off of the elements of a song that they like.

For instance, I like the song Nights by Frank Ocean because of the catchy tempo and bass of the song. Personally I think the tempo, bass, and also how catchy of a song makes it good music.





My class defined a song by using the following components:


A string given by the user (What is the title of the song?)


A string given by the user (Who is the performer of the song?)


A restricted string that provides genres that you can only pick from. (What is the genre of the song?)

  1. Blues
  2. Classical
  3. Country
  4. Electronic
  5. Folk
  6. Hip Hop
  7. Jazz
  8. Latin
  9. Pop
  10. Reggae
  11. Religious
  12. Rock
  13. RnB
  14. World
  15. Other

Sub genre

A string given by the user (What is the sub genre of the song?)

Primary Instrument

A string given by the user (What is the main instrument in the song?)


An integer (On a scale from 1-10 how important are the lyrics to the song?)


An integer (On a scale from 1-10 how strong is the bass in the song?)


An integer (On a scale from 1-10 how fast is the song?)


A restricted string providing options for user to pick how the song makes them feel.

These options are:

  1. Happy/Joyful
  2. Sad
  3. Romantic
  4. Angry
  5. Chill
  6. Motivating
  7. Compassionate
  8. Humorous
  9. Enlightening
  10. Confused
  11. Passionate
  12. Hype
  13. Grace


Example of song data

Title                                                                                Performer                                     Genre

Violet Hole rock punk guitar 4 6 4 sad
Day ‘N’ Nite (nightmare) Kid Cudi hip hop alternative hip hop drum machine 4 4 5 chill
Slide Calvin Harris electronic synthpop piano 5 5 7 joy
DYWM NAO electronic synthpop guitar 5 5 8 romantic
Super Rich Kids Frank Ocean RnB neo soul piano 5 7 9 chill

Version 1


I started out bulls eye with creating a green circle, centered in a window. I used the circle function to create the circle.


Version 2


In this version, I created a custom function to create a circle, I used arguments in my function that I needed to create a circle.


Version 3


In this version, I had created two custom functions. One that creates a large circle and one that creates a smaller circle. I later on realized that I did not need both of these functions, only one. Because with custom functions, other people can import them into their files and use them when they are not so general and specifically only make that certain graphic in this case.


Version 4


In this version, I had deleted the small circle custom function and I created my circle function to be more general where you can place your own colors in the arguments to generate a different color. I had specific colors that I used to create the circle. I also created a custom function that draws the rings in the bulls eye.


Version 5


In this version, I imported the random module to make my bulls eye move horizontally left and right and also vertically up and down. Every time when my program is ran it moves randomly horizontal and vertically.


Version 6


In this version, I made the number of rings change randomly. I had it run from a range of 4 being the smallest amount of rings and 25 being the largest amount of rings.


Version 7


In this version, I had created a custom function that generates random colors. For this I had to define the smallest and largest integers I wanted to use for my colors using RGB. The smallest was 50 and the largest was 200. I also had added thickness for how thick I wanted the rings to be.


Version 8


In this version I had created multiple bulls eyes using my custom function for rings and using a for loop.


Version 9


In this version, I had just changed the colors and I added more bulls eyes. I also changed the highest amount of rings I can have.