Inspiration

We wanted to combine the fun of rhythm games with the utility of practicing an instrument. We also wanted a fully portable instrument practicing solution, because finding a time and place to practice is very difficult. This project was made to support practicing any instrument, regardless of where you are.

What it does

It is controlled using two gloves. These gloves have pressure sensors at the tips of each finger, which act as your "keys" in a MIDI keyboard. The software is a beat game where notes are converted into a gameified format for any type of instrument, sort of like a rhythm game.

The gameplay has a lot of rhythm game inspirations. For every consecutive note you hit correctly, your "combo" goes up, and your score starts growing at a faster rate. If you miss a note, it flashes red and causes your combo to drop to zero. The game is split into 10 lanes, one lane for each finger. Short, single notes are elevated above the playfield, while long hold notes are lower down, and need to be held down to earn points.

How we built it

We used Vue and Three.JS for the visuals, and MIDI files as the base file format for the maps. In hardware, we built our own pressure sensitive gloves by modifying existing normal gloves we had. We also added programmable LED indicators to the gloves too, so that when a key is pressed, a different LED lights up, making them light up like the Infinity Gauntlet.

Challenges we ran into

Playing the instrument accurately enough was a challenge, because most of us hadn't played in years. We are confident we could get good at the game if we had time.

Accomplishments that we're proud of

Getting hardware to be as reliable and low-latency as we got it. Usually hardware is very messy and hard to deal with on the software end.

What we learned

We learned how to create a 3D web game while using MIDI for input. We also learned how to create our own custom MIDI controller with pressure sensors.

What's next for Rehearse

Add instrument-specific key conversions.

Share this project:

Updates