From CCRMA Wiki
Revision as of 22:28, 4 January 2010 by Njb (Talk | contribs) (Specification (part 3 of 3): Interaction)

Jump to: navigation, search

Homework #1: iPhone: Get Set, Synthesis, Interact

Due date: 2009.1.13 11:59:59pm (or thereabout), Wednesday.


The goal of the first homework is to make sure everyone can get real-time audio up and running with some interaction with external control such as input from the accelerometer, compass, multi-touch, or GUI elements. Let's get cookin'.

Specification (part 1 of 3): Get Set Up

  • Compile and run a standalone program on your phone.
    • Create a new "View-based Application" project for iPhone (OS File-> New Project -> View-based Project)
    • Compile and run on the device (not just in the simulator). Make sure the .plist file is correct (Bundle identifier= edu.stanford.ccrma.${PRODUCT_NAME}
  • Make basic audio I/O work
    • This should be review from the tutorial, but if not...
    • Note: If you do not do anything in the audio callback loop, feedback will most likely result so synthesize a simple sine wave to fill in the output buffer.

Specification (part 2 of 3): Synthesize Audio

  • (More) Advanced audio synthesis
    • Modify your code from above to synthesize something like a square wave, triangle wave, FM or AM synthesis, filtered noise, etc.
    • Requirement: Your synthesis method must have some variable control (i.e. be able to change the center frequency, modulation, or similar parameter). This will be pertinent for specification 3.

Specification (part 3 of 3): Interaction

  • Sensor Input to Audio Control
    • Hook in the control element from above to one of the available sensors on the phone such as the accelerometer, compass, multi-touch, or GUI element
    • The interaction should have audible effect on your synthesis method
    • Consider the aesthetic quality and user experience
  • You should have convincing control over one or more audio synthesis parameters.


  • have fun with it!!!
  • comment your code!
  • choose your own coding conventions - but be consistent
  • you are welcome to work together, but you must do/turn in your own work
  • some considerations:


turn in all files by putting them in your Library/Web/256b/hw1/ directory, and concise online documentation + readme

  • 1) source code to the project (*.h, *.cpp, *.m *.mm *.c makefile, project files, etc.)
  • 2) online page for your project (should be viewable at http://ccrma.stanford.edu/~YOURID/256b/hw1/). It should include:
    • links to your files of various kinds (or to a zip/tar archive)
    • instructions on building the project (for example, anyone in the class should be able to download and run)
    • a short README text section that:
      • conveys your ideas/comments in constructing each program
      • describes any difficulties you encountered in the process
      • lists any collaborators
  • 3) email Ge and Nick with the link to your web page, as a confirmation that you are submitting the assignment