Inspiration

As a group of amateur and intermediate musicians, we've all faced the challenge of traditional, consistent practice routines. These tedious workouts can lead to a loss of interest in the musical world. We wondered: what could make practicing as addictive as video games? This is where Melody Maestros was born - a multiplayer game where your musical skills translate directly to your in-game prowess.

What it does

Melody Maestros transforms musical practice into an exciting multiplayer arena.

  • Real-time players use their musical instruments or their voices as their controllers
  • Melodical pitches are processed and then translated into in-game actions (e.g., certain tones or combination of tones will trigger specific attacks)
  • Users can challenge their friends, turning a laborious practice session into an engaging and competitive experience.

How we built it

As a team of three, we orchestrated Melody Maestros using a symphony of technologies: We used Python and Pygame as the main game engine and renderer of our 2D combat game. We chose these tools because they were simple to use and scalable within the scope of this competition.

  • For audio processing, we used the Python libraries PyAudio and Aubio for pitch detection, processing, and analysis.
  • We implemented sockets in Python for our network architecture, allowing a client-server model to expand our game to multiplayer interactions.

Challenges we ran into

  1. Latency issues: It was challenging to balance smooth gameplay with real-time audio processing and network syncing.

  2. Audio calibration: Due to the nature of the project, it was difficult for multiple teammates to test in the same area, which required extra rooms and an innovative approach to processing louder frequencies.

  3. Collaboration: Going into this project, we knew collaboration would be difficult, but not in the conventional sense. One of our teammates is currently in China, while the other two are on the East Coast. This posed significant challenges when it came to catching people up on work and making sure that everyone was writing clean and readable code.

Accomplishments that we're proud of

We are very proud to have made a game that we can call fun and successfully implemented real-time audio processing as a means of game input. Given the unnerving circumstances, we're impressed that we were able to pull this off in such a short time frame. We are also proud of our efficiency and professionalism in communication, especially through Discord and neatly organized GitHub commit messages.

What we learned

Throughout this experience, our learning was steep as a crescendo. This was the first time any of our team members had experience with audio preprocessing and extraction. Learning to balance an exact algorithm with low-latency inputs was no easy task. The majority of the code written was from scratch. It would be an overstatement to say this was a game built in Pygame. We built our own custom 2d physics engine, as we realized Pygame's collision detection did not work well with floating point decimals, leaving us to develop our own collision detection system and ensure that the game had a realistic and smooth physics experience for players. In addition, working with a client-server network infrastructure was also a challenge for us because we had to set it up entirely from scratch. This project has exposed us to technical difficulties and interdisciplinary challenges that arose from the nature of the project.

What's next for Melody Maestros

This is just verse 1, and we're ready to continue developing Melody Maestros. Due to the limited time, our game was limited to having one character and only a couple of moves. But this didn't stop us. Our code was written with scalability in mind, using abstract base classes to ensure that future ideas did not require a full rewrite of the code we already had. We are ready to expand our repertoire of playable characters, each with distinct moves and styles. In addition, a feature we have been working on but did not make the cut at the end was a single-player mode, where musicians could enjoy a fun practice session alone.

We're trying to create a platform where practice feels like play and musicians of all experience levels can unite in a full orchestration. We also aim to inspire future musicians to view practice not as a chore but as an adventure.

Built With

Share this project:

Updates