https://editor.p5js.org/tms9947/sketches/9XCrV1Jab
The Concept:
I started collecting records and CDs last year, and I really enjoy the experience of going into a store and just spending time looking through the records and CDs they have available. However, since I began, I noticed that Abu Dhabi doesn’t have many stores that sell records. Thus, I decided to take matters into my own hands and create a record store experience as my midterm project, where I hope to replicate that same relaxing feeling that I experience when at an actual record store.
At first, I was unsure how to go about the project, in terms of how to make it something fun and interactive. Once I gave it some thought, though, I came up with the idea of having three sections in the store, each relating to music. When creating the three sections, I wanted to have it be realistic and have activities that you could experience in an actual record store. This led me to the three I chose: the actual store, where you view and purchase records, the music corner where a record player is controlling the music in the store, letting users choose the music they hear while looking at the project and lastly a music based trivia game inspired by restaurant trivia nights and board game cafes, asking variety of questions around genres, artists and genreal music knowledge.
The design of the starting area(the store entrance) and the main area of the store(the record shevles) were inspired by actual record store layouts and architecture which I tried to recreate using shapes within p5. Below is an example for each.


How The Project Works:
The experience allows users to navigate through a record store, using a combination of keys and the mouse pad to interact with and move through different sections. I first made each section of the store in a separate p5 project, allowing me to make sure it was fully functional before adding it to the main project, also making the process of debugging much easier given the quicker loading times. Using a lot of ‘if’ and ‘else if’ statements throughout the code to manage the different states of the game, which reference the section of the store the user is in. This allowed me to get the changing scenes to work seamlessly with the button interactions that allow the users to switch between them.
A part of the code I’m really proud of, which is also one of my favorite parts of the project, is the section that creates the animation for the record on the player. When I first started working on this part of the code, I was using a tutorial from The Coding Train titled “How to Rotate Shapes in p5.js (translate, rotate, push, pop)”, but I wasn’t able to get it to work at first. This led me to ask the professor for help, and he then explained the concepts of rotation, translation, and the push and pop functions, which really helped me understand how to get the rotation to work.
//spinnign record
imageMode(CENTER);
translate(275,height/2);
rotate(angle);
image(record,0,0,recordWidth,recordHeight);
pop();
angle = angle + 1;
Improvements:
One improvement I would like to add is maybe having more realistic assets, rather than just the simple ones I created in p5, possibly even combining some realistic and drawn elements. Additionally, I wanted to add randomization for the albums that would display on the shelf, as well as possibly having them move along the shelves like a conveyor belt, but I was not able to get to this due to time constraints. Adding to the randomization, having a larger database of albums to pull from would also be another improvement to add.
When currentl viewing the albums in the larger mode, the mouse clicks still register when clicking over a different album. This is an issue I wasn’t able to correct in time, but in the future I’d like to make it so that when the users is viewing the larger version of the albums they can’t immediatly switch to the others and instead need to click again to exit and then select a different ablum to view.
References:
I used AI to figure out how to go about creating the album class I ended up implementing, as well as formatting the text and positions of a few things in the later stages of development, because the large amount of code made it a bit harder to manage.
Video/Turials I used for major aspects
https://youtu.be/o9sgjuh-CBM?si=VLxmfbLdzPb72X8l
https://youtu.be/Pn1g1wjxl_0?si=HJhL-7whJ1jlxXU0
https://youtu.be/4w7PR70XJkE?si=IBRi3oZBpgoYj7Iz
https://youtu.be/3pI3SQjfVyA?si=geUIo5htIBbONHli
Lofi covers I used for the background
https://youtu.be/p2Jp-HLva28?si=yj7_UfyhsEwXetpH
https://youtu.be/9-J8G9KQjWg?si=LTP2qWdXRggH89Z_
https://youtu.be/Xoj02q0beSw?si=v5q1zEMCrVQX7rNL
I used the p5 reference website to figure out some smaller things





