Karaokey

Karaoke in the age of social distancing

Overview
Karaokey is a competitive, remote karaoke game that pits you against your friends in a fight for pitch perfection. Our game takes the basic premise of karaoke, but enables you to karaoke a song in tandem with up to four friends long-distance; at the end of each round, it assigns you scores based on how good your pitch was throughout the song. This way, you can know definitively who the best singer is in your karaoke room!


Roles
Creative Technology and Interaction Design

Skills
IoT, Python, C/C++, SQL, HTML/CSS, UI Design

Collaborators
For 6.08: Interconnected Embedded Systems taught by Joe Steinmeyer and Stephanie Mueller in Spring 2020
The Context
One of the simple comforts humanity has steadfastly indulged in throughout history is the art of song. Bards sang of medieval tales; pirates sang sea shanties to stave away the boredom; and college students sing alongside each other to distract themselves from the looming deadlines of final project reports and rapidly developing pandemics.

Modern day youth especially delight in Karaoke, a form of entertainment where one sings along to lyrics on-screen with a vocals-less backing track behind them. We, the 5 team members, are no exception—but, while good fun, we felt that there was something missing from traditional karaoke. Although we had been separated by quarantine and social distancing, we sought way of reuniting, from afar, in the spirit of competition.
System Overview
Our system relies upon interactions between two main components: the web server, where databases are stored and audio is played back, and the individual's ESP32, where we use a microphone to capture sound input and perform pitch autocorrelation.

Diagram by Joanna Gerr

Core Gameplay
After the user logs in, they will see the lobby screen, and they can join a room and be redirected to the room screen. After being redirected to the karaoke screen, before the song begins playing, the user must indicate they are ready by selecting the "start song!" button. Then, the starting tone will play, followed directly after by the song itself. In the box to the right, lyrics will show up and scroll through phrase by phrase. At the end of the game, a screen will appear detailing how well each player hit pitches throughout the entire game. This screen refreshes every 2 seconds, so the page will display the most recent amalgamation of results returned by individual users' ESP POST requests to the database.

Players Joining

Starting Song

Live Pitch Correlation

Game Score Rankings

Future
System Robustness
Both the server and ESP32 can run into edge cases that cause frustration for the user. To remedy this, we would have to do an overhaul of the server so that it does use a get request to generate website information, and so that it can update information without needing to reload.

Multiple Rooms
Another major feature we'd like to implement is multiple rooms, so that two games can happen concurrently. This would require some changes on both the ESP32 and the server, since now we'd have to provide different information to different users.

ESP32 UI
While the ESP32's UI looks great while in-game, the design language is not matched throughout the rest of the state machine. We could improve the experience by making the design consistent throughout, and also remove some of the extraneous button presses that are currently required.