https://ccrma.stanford.edu/mediawiki/index.php?title=256b-winter-2012/hw2&feed=atom&action=history256b-winter-2012/hw2 - Revision history2024-03-28T21:41:15ZRevision history for this page on the wikiMediaWiki 1.24.1https://ccrma.stanford.edu/mediawiki/index.php?title=256b-winter-2012/hw2&diff=12803&oldid=prevGe: Created page with '= Homework #2: SonicSlingShot (SSS) = Due date: 2012.2.1 11:59:59pm (or thereabout), Wednesday. <div style="text-align: left;">Image:SonicSlingShot-spec.png</div> The goal…'2012-01-09T13:22:15Z<p>Created page with '= Homework #2: SonicSlingShot (SSS) = Due date: 2012.2.1 11:59:59pm (or thereabout), Wednesday. <div style="text-align: left;"><a href="/wiki/File:SonicSlingShot-spec.png" title="File:SonicSlingShot-spec.png">Image:SonicSlingShot-spec.png</a></div> The goal…'</p>
<p><b>New page</b></p><div>= Homework #2: SonicSlingShot (SSS) =<br />
<br />
Due date: 2012.2.1 11:59:59pm (or thereabout), Wednesday.<br />
<br />
<div style="text-align: left;">[[Image:SonicSlingShot-spec.png]]</div><br />
<br />
The goals of this assignment:<br />
* set up a flip view (one for real-time graphics, one for UI elements)<br />
* using the Synthesis Toolkit for iPhone<br />
* real-time graphics via OpenGL ES<br />
* basic physical simulation + interaction<br />
* musical mapping<br />
<br />
=== Specification (part 1 of 3): Setup: Flip View, OpenGL ES, STK ===<br />
* create a project containing a flip view<br />
* this should be covered in class, and reviewed from the tutorial.<br />
* get graphics set up with a orthographic projection, using mo_gfx<br />
* compile in STK, make some sounds via mo_audio<br />
<br />
=== Specification (part 2 of 3): The Slingshot Interaction ===<br />
The slingshot in this assignment operates as follows:<br />
* initial state: empty screen<br />
* two point multitouch: creates a "rubber band" (rendered as some type of line)<br />
* third point: the rubber band maybe gently plucked (should see some wave forms, may even be the actual waveform)<br />
** should sounds like a plucked string, pitch determined by length!<br />
* thrid point: pulling and holding in any direction on the rubber band stretches it<br />
** release: restores the rubber band, while shooting a projectile into the space<br />
** the direction and velocity of the projectile should be determined by angle and how far the rubber band is stretched<br />
<br />
=== Specification (part 3 of 3): Collision Detection + Mapping ===<br />
* check for collision:<br />
** against the boundaries of the screen<br />
** against other projectiles<br />
* collision detection should generate a visual cue somehow<br />
** use texture mapping to create an animation<br />
* collision detection should generate events that gets sonified (you choose the sonification)<br />
* think about how to map the collisions to sound parameters<br />
* add a few options to the flip view, here are some to implement and some suggestions:<br />
** enable accelerometer and introduce gravity into the system (a toggle)<br />
** shake to clear the space (a toggle)<br />
** add damping to the system, i.e., projectiles loss energy and slow down over time (a slide for amount of damping)<br />
** a mapping of your own<br />
** (optional) reverberation / panning<br />
<br />
=== Tips ===<br />
* do things in chunks, unit test when possible!<br />
* make things as simple as possible...Global variables are fine for now.<br />
<br />
=== Note ===<br />
* have fun with it!!!<br />
* comment your code!<br />
* choose your own coding conventions - but '''be consistent'''<br />
* you are welcome to work together, but you must do/turn in your own work<br />
<br />
=== Deliverables ===<br />
<br />
'''turn in all files by putting them in your Library/Web/256b/hw2/ directory, and concise online documentation + readme + email ge and mike'''<br />
<br />
* 1) source code to the project(s) (*.h, *.cpp, *.m *.mm *.c makefile, project files, etc.)<br />
* 2) online page for your project (should be viewable at http://ccrma.stanford.edu/~YOURID/256b/hw2). It should include:<br />
** links to your files of various kinds (or to a zip/tar archive)<br />
** instructions on building the project (for example, anyone in the class should be able to download and run)<br />
** a short README text section that:<br />
*** conveys your ideas/comments in constructing each program <br />
*** describes any difficulties you encountered in the process<br />
*** lists any collaborators<br />
* 3) '''email Ge and Mike''' with the link to your web page, as a confirmation that you are submitting the assignment</div>Ge