For this project, Bo and I decided to merge some aspects of our project 1 assignments, mine being an autotuner patch and his being an audiovisualizer, to create a Rockband-esque game that tracks what note you’re singing and scores it based on if you’re being corrected by the autotuner to the correct pitch in Twinkle Twinkle Little Star.
My personal contribution to this project consisted of supplying Bo’s audiovisualizer with any necessary info about the game logic, markers, current/upcoming notes, color values to display, etc. that could be variant based on how the player is doing within the game. I also created an easy and a hard mode for the game, with easy mode correcting you to only notes in the major scale of the key you’re playing the game in and hard mode correcting you to a chromatic scale no matter what key you’re in, making your margin of error slightly larger. As mentioned, the game can be played in every different major key, so users with different vocal ranges can play the game.
In addition, any of the audio heard throughout the duration of the game is coming from my patch, be it the piano playing the MIDI notes along with you or the autotuned signal. The autotuned signal is located in the “inputs” encapsulation, which also includes the game controller bpatcher I created, and within the “inputs” encapsulation is the “twinkle” encapsulation, which processes and outputs all of the variables specific to Twinkle Twinkle Little Star in a manner that Bo’s patch can then work with and draw from.
When it comes to game logic, we score based on how many beats you sing correctly (including however many the autotuner helps you to get), and the score is displayed on the game controller. You can then start a new game in whichever key you select. Regardless of what key you choose, there is a four beat lead-in playing the first note at tempo so you can get ready before the game round begins.
To demonstrate, I put myself through the ringer on easy mode:
This folder includes my contributions:
This folder contains the overall project:
And here is my code: