๐ŸŽถPiano Rollrrzzz

Generative Music Game Created with P5.js

Piano Rollrrzzz is a generative music performance-based game. The inspiration behind this game comes from Cristy Magnus' musical video games created using Pure Data. The initial concept took shape while creating music in Ableton, and then observing the piano roll. I thought it would be a cool visual to recreate inside of processing. My original plan was only to show visuals from a MIDI file. After creating this functionality, I realized it may be more creative to dynamically output midi as a result of the visual. This led to writing a script that generates platforms (piano roll midi notes) that make output after colliding with the left far side of the canvas.

Mic Input

The next task was to somehow use mic input in a creative way. This gave me the idea instead of colliding with the 0 X position of the canvas, I could use a playerโ€™s collision to generate midi output. I added a player to the game with its Y Position mapped to the mic input level. A sensitivity variable was added for ease of access. The player's Y position also uses lerp functions to smooth movement. This creates a smooth descend to the bottom to collide with platforms even more. Doing it in this way, the user now has more control over what MIDI data is output. Although the generation is random for MIDI platforms, the overall sound output is now somewhat selective. To create some type of consistency, I used an array of Midi Note Numbers and names to constrain to select notes. Each note uses an equally divided Y position to align the view of a standard piano roll. One issue I had was that I did not always collide directly with platforms, which made it frustrating and empty sounding if this happened too much. To solve this problem, I added links between each platform to make it easy to trigger sounds (A sin wave was added just for visuals). It also adds a bit of variance for which platform collision it would actually trigger. More musical intervals were added but varied using the frame count to sometimes play chords.

Gamifying

To make the sketch more game-like, I added scoring after colliding with platforms. As the score increases, platform density increases, which adds more rhythmic intensity to the game. Also, the tempo accelerates then decelerates as the game progresses. I added a droning note with consistent quarter notes in the upper octave range, calculated using the frame count, to provide some type of metronomic feel. The game type is more related to the Wanderer DGD1 type. The score can be ignored. Players can make rules for themselves for creative performance choices. Ex. Aim for only one certain color (level idea?). Overall, the game provides the player with visual references that can be used to influence the performance but are not meant to control it. The user must route the midi output to their own sound sources. Although I did have success while testing the game using browser-based synths, I personally like the power of the synth Equator 2 for my performance use. For future additions, I would like to add another feature that generates FX platforms that can also detect collisions to activate FX such as delay, reverb, or frequency filtering. (CC Commands with Marcos in Ableton?).

Performance

I came up with the classification of Interactive Computer Motivated Improvisation. I used a knob to control the master volume. I also used the C Lydian scale to complement the platform note array.

Last updated