Idea / Premise
The idea behind the project is that I'd like to create a simple two-player game that is strongly musical and provides the opportunity to integrate graphics and sound. I wanted to chose a design that could be engaging and meaningful, but one that wasn't going to require massive amounts of programming. I have decided to adapt the simple game of Pong into something inherently musical that explores the relationships within music theory.
Motivation
Not only would I like to create a fun game, but I'd like to provide the opportunity for learning about music theory and about playing piano. There have not been many games (that I am aware of) that use a piano keyboard as a game controller and I think it is an avenue worth exploring. Another goal of this project is to create a game in which the sounds and music are not simply ancillary to the game, they are crucial for understanding and excelling at the game. If possible, I would also like to explore the potential of playing a game as a form of musical performance - in other words, I'd like to to be able to create compelling and expressive music with the game.
What is it?
This will be a two-player game, where each player uses a MIDI keyboard as an interface. Each player will be 'defending' a base line and trying to stop the other player from getting a ball past them. The ball will be represented sonically as a single note that changes pitches at a regular interval as it travels. Each player can block the ball by playing a chord (major or minor triad) that includes the current pitch of the ball as it reaches their base. In this way, the chords that a player plays becomes his paddle that is used to deflect the ball. By chosing the chord carefully, a player can cause the ball to rebound at different angles. The angle of the ball corresponds sonically to the musical interval that the ball takes when it travels - for instance jumping by 3rds, jumping 5ths or stationary on a single pitch.
The game will include both visual and sonic elements. My goal is that players will use both visual and sonic feedback equally in determining how to respond to the ball and position their 'paddles'. Players must become at least moderately proficient at a) music theory to know what pitch interval the ball is traveling at so they can tell where they need to position their paddle, and b) piano playing in order to actually play the triads that can block the ball.
Design
Components of the software design will include:
- OpenGL for rendering simple shapes (balls, lines, blocks) in 3D space
- RtAudio for generating notes using several custom Unit Generators
- RtMidi for getting control data from each player's piano keyboard
- OSCpack for sending synchronization and MIDI pitch data between the two computers.
In terms of the actual design of the game mechanics and how the music theory relates to the physics of the game, I have drawn out some sketches to illustrate some of the details:
Testing
I will be doing some of the testing myself to make sure the ball and paddles are moving according to my note-mapping plan. However, my goal is to recruit a few people from the class with varying levels of skill with respect to piano playing and music theory to test out the game along the way. This will help me ensure that I'm achieving the right level of difficulty. Ideally, someone who could be considered an intermediate piano player can understand, play and master the gameplay after some decent amount of time.
Team
I will be working on this project on my own (although, as stated above, I'd like to recruit some classmates for testing purposes...).
Milestones
- 11.12 - Get two computers with MIDI keyboards networked and connected. Get a handle on viable sound synthesis and basic OpenGL graphics.
- 11.23 - Program exhibits 'game-like' behavior. Ball and paddles should be moving according to my designed music theory mapping. Begin testing gameplay mechanics with other students from class.
- 12/03/2010 - Audio is musical: it should be nice to listen to. Game mechanics will have been tweaked to the proper level of difficulty. OpenGL graphics look clean and make sense to the user. All starting, stopping, scoring mechanics are working.