From CCRMA Wiki
Revision as of 10:49, 17 March 2011 by Noune (Talk | contribs)

Jump to: navigation, search

Crystal Piano is an iPad transparent piano that you can blow sound and life into! The instrument is somewhere between a guitar and piano. Keys are like air columns with particles flying in them when played. You can customize the instrument by choosing a background and particle images. Control the envelope of the sound by pinching the extreme left of the screen. or by blowing into the mic! Experience the detuned piano effect by tapping on the same key multiple times, and the vibrato effect by moving your finger over a key. Use the guitar pick to create second voice harmonics or to play continuous pitches. Record, playback and share by uploading and downloading performances!

alt text

Download the XCode Project at:



  • dsndl
  • sdln

Software Design

  • Both server and client running modes are provided within the same executable
  • Virtual Midi keyboards are not required
  • Class Pendulum to model the oscillation of a pendulum: amplitude, frequency, phase, damping
  • Class Harmonograph is a class composed of "pendulum" which provides methods to tune these pendula and draw their combined output
  • Class Game is similar to a Finite State Machine that tracks the game's states
  • State S0, 3 seconds: Random Interval generated at the start of every round. Interval is played back and its harmonogram is displayed
  • State S1, 15 seconds: rock on and enjoy the harmonogram. Target interval is displayed on the right hand bottom corner
  • State S2, 3 Seconds: We've got a winner, congratulate him and play back the target interval and its harmonogram. New Round(S0)
  • State S3, 3 Seconds: Someone lost, encourage them, play back the target interval and display its harmonogram. New Round(S0)
  • Communication between two hosts using Open Sound Control
  • Messages exchanged: handshaking at start-up, target interval from server to client, round winner and score
  • Graphics using OpenGL/GLUT
  • Audio Driver: Real-time Audio