Beat Grid is a rhythm game that uses MIDI launchpads to play the game. It’s flashing LED lights and EDM music give the player a very interactive and fun modern take on the rhythm game genre.
It was originally a project I proposed for my group’s senior project during my last semester of college. It was an idea that came to me based on my love of Guitar Hero 3 growing up, my recent obsession with the Japanese rhythm game osu!, and Shawn Wasabi’s MIDI Fighter music videos on YouTube.
The idea was to bring back using a unique controller for an EDM rhythm game. But it’s not just any kind of controller, this controller was one already out and popular for actually creating music. It’s very useful for not only making music, but also making a fun experience out of a song’s performance by allowing users to create a light show with the LEDs.
We were only able to find the use of a MIDI launchpad for a game in one other instance: a program called Melodics that focuses on teaching the user how to practice performing with a launchpad. It focuses less on being a game and more on practice in a way that we found less appealing to a wider audience. Melodics felt more like a program aimed for only new musicians looking to learn, but we wanted a game that would encourage enjoyment of performance and challenges while also being a way for users to practice using launchpads.
This game idea was very unique to us but also proved to be very difficult to develop. With the lack of other examples for MIDI launchpad programming, it was hard to find any help for this project online. We found a library for MIDI signals in C# that kind of worked but hadn’t been updated in a long while and needed adjustments to account for more than one type of MIDI launchpad. We also found the programmer documentation for the Novation Launchpads, which were the most popular and common MIDI launchpad device on the market currently. The documentation however proved to be out-of-date in some aspects and required clarification from the Novation team themselves via email.
It took a lot of work, especially to program the MIDI system. Once we got the MIDI documentation sorted out, we eventually got our MIDI inputs and outputs to work for the Novation Launchpad Mini and MK2 models. The Launchpad Mini worked similar to the MK2 but it didn’t have top row of side buttons and didn’t have RGB, only a few select colors of green, yellow, red, and orange. Despite wanting the recommended controller to be based around the MK2 because of it’s RGB colors, we still wanted the game to be available to as many different launchpad models as we could. As such, we attempted to design our game around at least working with just the Launchpad Mini.
No matter which model we chose as a minimum compatibility requirement, however, all models of the Novation Launchpad had a very big problem that prevents us from doing exactly what we want for a rhythm game. Ideally, players would be able to play an entire song by just looking at the launchpad. With this being a rhythm game, we needed to create some way to warn players of an upcoming note so they can press it at the correct time. One easy solution would be to have the LEDs of the note button gradually increase brightness and they would learn to time when to press the notes based on that. The problem is all of these launchpads don’t allow you to control the brightness of the LEDs, it only allows you to turn an LED on or off at as a certain color.
So we thought with the MK2 being RGB maybe we could just make it look like it’s getting brighter by having the LED colors change from a darker shade to a lighter shade. But then the problem came that the Mini, which wasn’t RGB, didn’t support nearly enough shades of its three colors to recreate this. So we were at a massive hardware limitation for the project. To get it ready in time for our senior project presentation, we went for making it kind of like whack-a-mole in that the note they need to press would light up and they just have to press it quickly before it goes away. To try and make it still warn players enough so they can still hit the notes to the beat, we attempted to have the note flash a little bit before when it’s supposed to be hit so that by the time they see it and go to press it they will more likely hit the note at the correct time.
The other tricky system to implement was the rhythm game aspect of the actual game. None of us had any experience working on rhythm games but the one thing we immediately found from research online was it’s massively important to make sure everything synchronizes to the beat and that it never ever desyncs.
Getting the game synchronized to a BPM (beats per minute) amount is easy enough, but the problem comes with properly maintaining this synchronization. We don’t want the synchronization to be affected at all by frame rate, only by the current position of the song, otherwise any frame drop can desync the game from the audio. So the classic Time.delta solution for Unity timing wasn’t going to work for this. Instead we had to calculate song position based on AudioSettings.dspTime, which is sample-accurate time in seconds since the game started.
We also had to account for a song’s offset, which is the very small amount of space at the beginning of audio files where the clip doesn’t start yet and is used to store file information. Once we had proper audio synchronization and the offset in place, we had to find the song’s BPM and then make our program divide the BPM by 60 seconds and then use that to track each beat in the song. Now we could time elements of the game directly to the beat of the song without it getting desynced.
Beat Grid had really interested our senior project teacher and he encouraged us to pitch the idea at Accelerate, a program at my college campus that provides resources and funds to help innovative students make their project big. I pitched the idea myself in front of a panel of entrepreneurail judges with the launchpads, a YouTube launchpad cover, and my old Guitar Hero 3 controller. When I was done, I was approached by two people handing me their business cards before I could even make it back to my seat. By the end of the night, I was presented with a check for $5,000 to continue production on the game. The money went to buying all the current launchpad models on the market, including the very expensive Midi Fighter 64, and song licenses for existing songs so we can establish an official soundtrack for the game.
Currently, the Beat Grid team is just me, but I have a lot of faith in this games potential so I want to take my time and get it done and released properly. This means I want to gain more experience making and releasing other games, establishing more of a network of people that can assist with the games production, and seek means for more funding in the future. I do live in the same state as Harmonix, the developers behind Rockband, Guitar Hero, and many other unique rhythm games, so I wonder if they’d ever be interested in this kind of project.