Commits

Sam Drazin committed e39e840

Added README.html and associated media files

Comments (0)

Files changed (16)

Classes/MainViewController.h

 
 @class WiiNunchuckAppDelegate;
 
-@interface MainViewController : UIViewController <UIAccelerometerDelegate> {
+@interface MainViewController : UIViewController <UIAccelerometerDelegate, AVAudioPlayerDelegate> {
 
 	IBOutlet UILabel		*valueLabel1;
 	IBOutlet UILabel		*valueLabel2;
 
 -(IBAction)startSynchingValues:(id)sender;
 -(IBAction)resetSync;
--(IBAction)testSine:(id)sender;
+-(IBAction)toggleSineGenerator:(id)sender;
 
 -(void)displayValuesToLabels;
 -(void)updateValueOfLabel:(int)labelNumber withValue:(double)value;

Classes/MainViewController.mm

 {
 	[super viewDidLoad];
 	
+	// Initialize and link iPhone's accelerometer to the application
 	UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
 	accel.delegate = self;
 	accel.updateInterval = kUpdateInterval;
 	
-	// Get the main bundle for the app
-	CFBundleRef mainBundle;
-	mainBundle = CFBundleGetMainBundle();
 	
-	
+	// Load and store handles for all sound files
 	NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: @"vibraslap" ofType: @"aif"];
-//	NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
 	soundFilePath = [[NSBundle mainBundle] pathForResource: @"weird_wah" ofType: @"aif"];
 	dj1URL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
 	soundFilePath = [[NSBundle mainBundle] pathForResource: @"low_bubble" ofType: @"aif"];
 	soundFilePath = [[NSBundle mainBundle] pathForResource: @"open_hat" ofType: @"caf"];
 	openHatURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
 
+	// Create an AVAudioPlayer to play the files
 	AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: dj1URL error: nil];
-	//[fileURL release];
-	
+	[soundFilePath release];
+
 	self.player = newPlayer;
 	[newPlayer release];
-	
 	[player prepareToPlay];
 	[player setDelegate: self];
 	
 #pragma mark -
 #pragma mark Data Syncing Methods
 
+// Initializes a NSTimer to repeatedly sync incoming values to displays and value-handling functions
 -(IBAction)startSynchingValues:(id)sender
 {
 	syncButton.enabled = NO;
 	[[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];	
 }
 
+// Resets the NSTimer and stops the syncing of values
 -(IBAction)resetSync
 {	
 	// reset the timer
 	[self displayValuesToLabels];
 }
 
+// Displays read values to their respective labels
 -(void)displayValuesToLabels
 {
 	NSString *message;
 	[message release];
 }
 
+// Function called from the SampleAudioUnit.mm file, which sends values from the input stream
 -(void)updateValueOfLabel:(int)labelNumber withValue:(double)value
 {
 	if (labelNumber == 1) {
 	
 }
 
+// This function is called every
+-(void)timerFired:(NSTimer *)timer
+{
+	if (value1 == 0 && value2 == 0 && value3 == 0)
+		refreshSessionsWithoutValues += 1;
+	
+	if (refreshSessionsWithoutValues >= 500) {// && ![applicationDelegate->settingsViewController shouldUseiPhoneAccel]) {
+		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Connection Error" 
+														message:@"Failed to receive data sent through the headphone jack.  Check your connections and try again." 
+													   delegate:self 
+											  cancelButtonTitle:@"Ok" 
+											  otherButtonTitles:nil];
+		[alert show];
+		[alert release];
+		[self resetSync];
+		refreshSessionsWithoutValues = 0;
+		return;
+	}
+	// time has passed, handle sensor values and recall the display function
+	
+	[self handleValue1];
+	[self handleValue2];
+	[self handleValue3];
+	[self handleZButton];
+	[self handleCButton];
+	[self displayValuesToLabels];
+}
+
+// Stores current synth-mode in local member 'synthMode'
+/*
+ *	#	Mode Name			Mode Reference (constant)
+ *	------------------------------------------------
+ *	0:	DJ Samples Mode		kSynthMode_DJ
+ *	1:	Sine Mode			kSynthMode_Sine
+ *	2:	Drum Mode			kSynthMode_Drums
+ */
+-(void)updateSynthMode:(int)inMode
+{
+	synthMode = inMode;
+}
+
 #pragma mark -
 #pragma mark Value Handling Methods
+/*	
+ *	The following methods handle the various values being read in (stored in members named 'value1', 'value2', etc.)
+ *	Several values have special properties/restrictions that are worth mentioning.  If the user selects to use the
+ *	iPhone accelerometer data, for example, that value will automatically be stored in 'value3', and will override the 
+ *	third value sent from the Arduino.  This can be changed, but other concerns (such as the label to the right of 
+ *	'value3') should be taken into consideration in keeping the cosmetic/functionality of the iPhone's sensor information
+ *	usable.
+ *
+ */
 
+// Handles the 'Z' button being pressed
 -(void)handleZButton
 {
 	if (debounceZButton <= 0) {
 	}
 }
 
+// Handles the 'C' button being pressed
 -(void)handleCButton
 {
 	if (debounceCButton <= 0) {
 			debounceCButton += kDebounceDelay;
 
 			if (synthMode == kSynthMode_DJ) {
-//				[self.player initWithContentsOfURL: dj2URL error: nil]; 
-//				[self.player play];
+				[self.player initWithContentsOfURL: dj2URL error: nil]; 
+				[self.player play];
 			}
 /*
 			else if (synthMode == kSynthMode_Sine) {
 	}	
 }
 
+// Handles the first value sent from the Arduino
 -(void)handleValue1
 {
 	if (debounceValue1 <= 0) {
 			if (synthMode == kSynthMode_DJ) {
 				[self.player initWithContentsOfURL: dj1URL error: nil]; 
 				[self.player play];
-//				AudioServicesPlaySystemSound(self.soundFile1);
 			}
 			else if (synthMode == kSynthMode_Drums) {
 				[self.player initWithContentsOfURL: snareURL error: nil]; 
 				[self.player play];
-//				AudioServicesPlaySystemSound(self.openHatSoundFileObject);
 			}
 			
 		}
 			if (synthMode == kSynthMode_DJ) {
 				[self.player initWithContentsOfURL: dj1URL error: nil]; 
 				[self.player play];
-//				AudioServicesPlaySystemSound(self.soundFile1);			
 			}
 			else if (synthMode == kSynthMode_Drums) {
 				[self.player initWithContentsOfURL: snareURL error: nil]; 
 				[self.player play];
-//				AudioServicesPlaySystemSound(self.openHatSoundFileObject);
 			}				
 		}
 	}
 	}
 }
 
+// Handles the second value sent from the Arduino
 -(void)handleValue2
 {	
-	if (debounceValue2 <= 0) {
-		
-//		if (synthMode == kSynthMode_Sine) {
-//			
-//		}
-		
-//		else 
-			if (value2 > kValueHighThreshold) {
-				debounceValue2 += kDebounceDelay;
-
-				printf("\nValue2!");
-		
-				if (synthMode == kSynthMode_DJ) {
-					[self.player initWithContentsOfURL: dj4URL error: nil]; 
-					[self.player play];
+	if (debounceValue2 <= 0) {		
+		if (value2 > kValueHighThreshold) {
+			debounceValue2 += kDebounceDelay;
+	
+			if (synthMode == kSynthMode_DJ) {
+				[self.player initWithContentsOfURL: dj4URL error: nil]; 
+				[self.player play];
 			}
 			else if (synthMode == kSynthMode_Drums) {
 				[self.player initWithContentsOfURL: snareURL error: nil]; 
 				[self.player play];
-			}			
+			}
 		}
 		else if (value2 < kValueLowThreshold) {
 			debounceValue2 += kDebounceDelay;
 	}
 }
 
+// Handles the third value sent from the Arduino
 -(void)handleValue3
 {
-//	if (![applicationDelegate->settingsViewController shouldUseiPhoneAccel]) {
-		if (debounceValue3 <= 0) {
+	if (debounceValue3 <= 0) {
+		// If in sineMode, Inc/decrement sine wave if value is changing
+		if (synthMode == kSynthMode_Sine) {
+				
+			double difference = 0;
+			if ([applicationDelegate->settingsViewController shouldUseiPhoneAccel])
+			{
+				char accelDim = applicationDelegate->settingsViewController->accelDimension;
+				
+				if (accelDim == 'X' || accelDim == 'x')			{difference = iPhoneAccel - kNominalAccelX;}
+				else if (accelDim == 'Y' || accelDim == 'y')	{difference = iPhoneAccel - kNominalAccelY;}
+				else if (accelDim == 'Z' || accelDim == 'z')	{difference = iPhoneAccel - kNominalAccelZ;}
+			}
+			else {
+				difference = value3 - kNominalValue3;
+			}
+			if (fabs(difference) > kAccelThreshold) {
+				difference /= kAccelMappingScale;
+				[sine changeLeftPitchBy:difference andCopyToRight:(numberOfSineTones == 1)];
+			}				
+		}
+		
+		// Otherwise, check to see that value surpasses threshold
+		else if (value3 > kValueHighThreshold) {
+			debounceValue3 += kDebounceDelay;
+			
+			printf("\nValue3!");
 
-			// If in sineMode, Inc/decrement sine wave if value is changing
-			if (synthMode == kSynthMode_Sine) {
-					
-				double difference = 0;
-				if ([applicationDelegate->settingsViewController shouldUseiPhoneAccel])
-				{
-					char accelDim = applicationDelegate->settingsViewController->accelDimension;
-					
-					if (accelDim == 'X' || accelDim == 'x')			{difference = iPhoneAccel - kNominalAccelX;}
-					else if (accelDim == 'Y' || accelDim == 'y')	{difference = iPhoneAccel - kNominalAccelY;}
-					else if (accelDim == 'Z' || accelDim == 'z')	{difference = iPhoneAccel - kNominalAccelZ;}
-				}
-				else {
-					difference = value3 - kNominalValue3;
-				}
-				if (fabs(difference) > kAccelThreshold) {
-					difference /= kAccelMappingScale;
-					[sine changeLeftPitchBy:difference andCopyToRight:(numberOfSineTones == 1)];
-				}				
+			if (synthMode == kSynthMode_DJ) {
+				[self.player initWithContentsOfURL: dj3URL error: nil]; 
+				[self.player play];
+			}
+			else if (synthMode == kSynthMode_Drums) {
+				[self.player initWithContentsOfURL: kickURL error: nil]; 
+				[self.player play];
 			}
 			
-			// Otherwise, check to see that value surpasses threshold
-			else if (value3 > kValueHighThreshold) {
-				debounceValue3 += kDebounceDelay;
-				
-				printf("\nValue3!");
+		}
+		else if (value3 < kValueLowThreshold) {
+			debounceValue3 += kDebounceDelay;				
 
-				if (synthMode == kSynthMode_DJ) {
-					[self.player initWithContentsOfURL: dj3URL error: nil]; 
-					[self.player play];
-				}
-				else if (synthMode == kSynthMode_Drums) {
-					[self.player initWithContentsOfURL: kickURL error: nil]; 
-					[self.player play];
-				}
-				
+			if (synthMode == kSynthMode_DJ) {
+				[self.player initWithContentsOfURL: dj3URL error: nil]; 
+				[self.player play];
 			}
-			else if (value3 < kValueLowThreshold) {
-				debounceValue3 += kDebounceDelay;				
-
-				if (synthMode == kSynthMode_DJ) {
-					[self.player initWithContentsOfURL: dj3URL error: nil]; 
-					[self.player play];
-				}
-				else if (synthMode == kSynthMode_Drums) {
-					[self.player initWithContentsOfURL: kickURL error: nil]; 
-					[self.player play];
-				}				
-			}
+			else if (synthMode == kSynthMode_Drums) {
+				[self.player initWithContentsOfURL: kickURL error: nil]; 
+				[self.player play];
+			}				
 		}
-		else {
-			debounceValue3 -= 1;
-		}
-//	}
-}
-
--(void)timerFired:(NSTimer *)timer
-{
-	if (value1 == 0 && value2 == 0 && value3 == 0)
-		refreshSessionsWithoutValues += 1;
-	
-	if (refreshSessionsWithoutValues >= 500) {// && ![applicationDelegate->settingsViewController shouldUseiPhoneAccel]) {
-		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Connection Error" 
-														message:@"Failed to receive data sent through the headphone jack.  Check your connections and try again." 
-													   delegate:self 
-											  cancelButtonTitle:@"Ok" 
-											  otherButtonTitles:nil];
-		[alert show];
-		[alert release];
-		[self resetSync];
-		refreshSessionsWithoutValues = 0;
-		return;
 	}
-	// time has passed, handle sensor values and recall the display function
-	
-	[self handleValue1];
-	[self handleValue2];
-	[self handleValue3];
-	[self handleZButton];
-	[self handleCButton];
-	[self displayValuesToLabels];
-}
-
--(void)updateSynthMode:(int)inMode
-{
-	synthMode = inMode;
+	else {
+		debounceValue3 -= 1;
+	}
 }
 
 #pragma mark -
-
--(IBAction)testSine:(id)sender
+// Toggles the sine generation
+-(IBAction)toggleSineGenerator:(id)sender
 {
 	if (applicationDelegate->settingsViewController->synthesisModeSelector.selectedSegmentIndex != kSynthMode_Sine) {
 		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Incorrect Synth Mode"
 #pragma mark -
 #pragma mark Accelerometer Callback
 
+// Method called with any change to the iPhone's acceleration
 -(void) accelerometer:(UIAccelerometer *) accelerometer didAccelerate:(UIAcceleration *) acceleration 
 {	
 	if([applicationDelegate->settingsViewController shouldUseiPhoneAccel])
 	[cButtonImageView release];
 	[valueLabel3Title release];
 	[activityView release];
+	[dj1URL release];
+	
+	[player release];
+	[dj2URL release];
+	[dj3URL release];
+	[dj4URL release];
+	[dj5URL release];
+	[kickURL release];
+	[snareURL release];
+	[openHatURL release];
 }
 
 

Classes/MusicView.xib

 						<int key="NSvFlags">274</int>
 						<string key="NSFrameSize">{320, 239}</string>
 						<reference key="NSSuperview" ref="722427387"/>
-						<object class="NSColor" key="IBUIBackgroundColor" id="311981665">
+						<object class="NSColor" key="IBUIBackgroundColor">
 							<int key="NSColorSpace">3</int>
 							<bytes key="NSWhite">MCAwAA</bytes>
 						</object>
 						<int key="NSvFlags">290</int>
 						<string key="NSFrame">{{0, 195}, {320, 216}}</string>
 						<reference key="NSSuperview" ref="722427387"/>
-						<reference key="IBUIBackgroundColor" ref="311981665"/>
+						<object class="NSColor" key="IBUIBackgroundColor">
+							<int key="NSColorSpace">1</int>
+							<bytes key="NSRGB">MCAwIDAgMAA</bytes>
+						</object>
 						<float key="IBUIAlpha">0.85000002384185791</float>
 						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
 						<bool key="IBUIShowsSelectionIndicator">YES</bool>
 					<string>avTouchViewController</string>
 					<string>UIResponder</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
-					<string>{{460, 403}, {320, 411}}</string>
+					<string>{{294, 236}, {320, 411}}</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
 					<string>avTouchController</string>
 					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>

Classes/README.html

+<html>
+	<head>
+		<style><!--
+			body		{width: 80%; margin: 5% 10%; font-family: "Lucida-Grande", "Tahoma", sans-serif; background-color: #DDDEFF;}
+			p			{text-indent: 3em;}
+			.divider	{width: 40%; float: left; margin: 20px 0;}
+		--></style>
+	</head>
+	<body>
+	
+	<h1>iPhone Protocol for Sending Serial Datastream via Line-in Jack</h1>
+	<h4><em>Thanks for downloading this bundle!</em></h4>
+
+	<h2>Hardware</h2>
+	<p>This collection of files provides the foundation to send a serial stream of data to the iPhone through the line-in 
+	conductor of headphone jack from an Arduino micro-controller.  Although you could accomplish this feat with minimal 
+	hardware, the following components are recommended, and will be referenced throughout this document:
+	</p>
+	
+	<table cellspacing="4" cellpadding="4">
+		<tr>
+			<th>Component</th>
+			<th>What we used</th>
+		</tr>
+		<tr>
+			<td>Arduino micro-controller</td>
+			<td>(Duemilanove ATmega 328)</td>
+		</tr>
+		<tr>
+			<td>iPhone/iPod touch</td>
+			<td>(iPhone 3GS)</td>
+		</tr>
+		<tr>
+			<td>4-pin (TRRS) 1/8" connector</td>
+			<td>(on sale <a href="http://www.kvconnection.com/3-5mm-4-Conductor-Cable-Connectors-s/5915.htm">here)</a></td>
+		</tr>
+		<!--
+		<tr>
+			<td></td>
+			<td>()</td>
+		</tr>
+		-->
+	</table>
+
+<hr>
+	<p>A brief note: this project is in its infancy of development, and is are assuredly much room for improvement.  
+	If you have any changes you'd like to make, please let me know or post the changes wherever you found this code 
+	in the first place.
+	</p>
+<hr>
+
+	<h2>Software (included)</h2>
+	<p>Below is a list of the files included in the main classes directory of the Xcode project of this download.
+	A brief explination of each file is listed to the right.
+	</p>
+
+	<h3>Xcode: Main Class Files</h3>
+	<table cellspacing="4" cellpadding="4">
+		<tr>
+			<th>File Name</th>
+			<th>Description</th>
+		</tr>
+		<tr>
+			<td><em>SineMaker</em> (h/m)</td>
+			<td>Sine generator class which creates, plays and stops the sine wave(s), and adds an optional tremolo effect.</td>
+		</tr>
+		<tr>
+			<td><em>avTouchController</em> (h/mm)</td>
+			<td>Class borrowed from Apple's sample code; enables music playback (utilized on the MusicView).</td>
+		</tr>
+		<tr>
+			<td><em>WiiNunchuckAppDelegate</em> (h/mm)</td>
+			<td>Application delegate, instantiates the MUEAudioIO object, as well as the SampleAudioUnit.</td>
+		</tr>
+		<tr>
+			<td><em>MainViewController</em> (h/mm)</td>
+			<td>Represents the "Synthesize" view in the app, reads all received values from input stream, declares sound
+			objects to be played back, and monitors changing values while synced with the Arduino.</td>
+		</tr>
+		<tr>
+			<td><em>SettingsViewController</em> (h/mm)</td>
+			<td>Monitors all user-changeable parameters, including synth modes, use of iPhone acceleration, and number of sine tones.</td>
+		</tr>
+		<tr>
+			<td><em>SampleAudioUnit</em> (h/mm)</td>
+			<td>Audio-processing shell which parses the incomming stream of audio and breaks apart the pulses received into 
+			intelligible binary values.  The values are also collected, averaged, and sent to the MainViewController from this file.</td>
+		</tr>
+		<tr>
+			<td><em>AboutViewController</em> (h/m)</td>
+			<td>View controller managing the AboutView (empty).</td>
+		</tr>
+		<tr>
+			<td><em>InfoViewController</em> (h/m)</td>
+			<td>View controller managing the InfoView, consiting of a simple WebView and infoButton.</td>
+		</tr>
+	</table>
+	
+	<p>Within the Xcode project's classes folder, two subgroups exist, each with its own files.  The <em>AVPlayback</em> 
+	group contains files copied verbatim from a sample project available on Apple's developer website, and the contents of
+	which are used for music playback on the <em>Music</em> tab of the iPhone application.  Therefore, I will not go
+	detail describing code I did not write.
+	</p>
+	<p>The <em>MUEAudioIO</em> subgroup is a set of files which initializes the audio session for the iPhone application, and handles the input
+	stream of audio from the currently active input route.  A buffering structure is set up to allow for access to the incoming samples from within 
+	the <em>SampleAudioUnit</em> file.  Much thanks to Chris Santoro who wrote this class, and was kind enough to pass it on to us.
+	</p>
+	
+	<h3>Xcode: MUEAudioIO Files</h3>
+	<table cellspacing="4" cellpadding="4">
+		<tr>
+			<th>File Name</th>
+			<th>Description</th>
+		</tr>
+		<tr>
+			<td><em>Filter</em> (h/cpp)</td>
+			<td>A class designed to implement a digital filter from a set of coefficients (difference equation).  This code is not 
+			utilized by the Wii Nunchuck application.</td>
+		</tr>
+		<tr>
+			<td><em>AudioBasics</em> (h/cpp)</td>
+			<td>Constants set regarding the audio stream expected coming into the iPhone, as well as some utility functions for converting sample values.</td>
+		</tr>
+		<tr>
+			<td><em>CADebugMacros</em> (h/cpp)</td>
+			<td>"Helper class for printing debug messages"</td>
+		</tr>
+		<tr>
+			<td><em>CAStreamBasicDescription</em> (h/cpp)</td>
+			<td>"Helper class for audio stream descriptions"</td>
+		</tr>
+		<tr>
+			<td><em>MUEAudioUnit</em> (h)</td>
+			<td>This is the AudioUnit template which can be used to inspect the incoming audio stream frame-by-frame.  This shell is primarily
+			designed to process audio with effects, but monitoring the input stream can be accomplished as well (as done in the Wii Nunchuck application).
+			This is the class you will subclass to process your audio.</td>
+		</tr>
+		<tr>
+			<td><em>MUEAudioIO</em> (h/cpp)</td>
+			<td>Configures the audio session, as well as handles administrative callback functions such as route-changes, interrupt handling, and 
+			preferred buffering sizes.</td>
+		</tr>
+	</table>
+	
+<hr class="divider">
+	
+	<h3>Arduino: Main Class Files</h3>
+	<table cellspacing="4" cellpadding="4">
+		<tr>
+			<th>File Name</th>
+			<th>Description</th>
+		</tr>
+		<tr>
+			<td><em>*file_name*</em> (*file_ext(s)*)</td>
+			<td></td>
+		</tr>
+	</table>
+
+<hr>
+
+	<h2>About the Developers</h2>
+
+	<img src="../beans.gif" ALT="Fuck my cock" style="float: right; margin: 0 15px 15px 15px; border: 1px solid black;" />
+	
+	<p><a href="http://www.samdrazin.com">Sam Drazin</a> and <a href="http://ebertot.pbworks.com">Eddie Bertot</a> are a couple
+	of lazy joes with not much more than a few bright ideas, and an overwhelming and constant thirst for beer.  Both recent
+	graduates of the <a href="http://mue.music.miami.edu">Music Engineering</a> program of the <a href="http://www.miami.edu">University of Miami</a>,
+	these two youngsters share interests in software/hardware hacking of audio equipment, playing jazz standards, and of course a Cuban pastelito
+	every now and then.
+	</p>
+	
+	<p>The protocol documented above represents a semester's worth of work for an
+	<a href="mue.music.miami.edu/wiki/index.php/MMI593_DSP_for_Embedded_Music_Electronics_-_Spring_2010">Embedded Systems course</a> taught within the
+	<a href="http://mue.music.miami.edu">Music Engineering</a> Department of the <a href="http://www.miami.edu">University of Miami</a>.  For more
+	information on the project that fostered the development of this protocol, refer to <a href="http://www.samdrazin.com/classes/mmi593/finalproject">
+	Sam's Project Website</a>.  The	course focused on introductory concerns in design and implementation of embedded systems, as well as several crash
+	courses in platforms including the Arduino IDE (Wiring/Processing), Android, and iPhone.
+	</p>
+	<!--
+	<img src="../umiami.jpg" style="z-index: 1; width: 45; border: 1px solid black; position: relative; top: 140px; left: 1070px;" />
+	-->
+
+
+
+	</body>
+</html>

Classes/SettingsViewController.h

 @public
 	IBOutlet UISegmentedControl	*numberOfSineTonesSelector;
 	
-	
 @public 
 	WiiNunchuckAppDelegate		*applicationDelegate;
+
 @public
 	char						accelDimension;
 	

Classes/SineMaker.h

 #import <Foundation/Foundation.h>
 
-#define kMaxFrequency	4000
+#define kMaxFrequency	6000
 #define kMinFrequency	100
 
 

Classes/SineMaker.m

 
 @implementation SineMaker
 
-/*
-SineMaker::SineMaker()
-{
-	tremGain			= 0.0;
-	tremGainDepth		= 0.1;
-	tremGainInterval	= 0.02;
-	tremDirection		= NO;
-}
-
--(void)setTremGainDepth:(double)value{
-	tremGainDepth = value;
-}
--(void)setTremGainInterval:(double)value;{
-	tremGainInterval = value;
-}
-
--(double)tremGainDepth{
-	return tremGainDepth;
-}
--(double)tremGainInterval{
-	return tremGainInterval;
-}
- */
-
 - (void)playSineWave {
 	if (isPlaying)
 		return;

Classes/avTouchController.mm

 @synthesize pickerData;
 @synthesize songPicker;
 
-/*
-- (void)updateCurrentTime;
-- (void)updateViewForPlayerState;
-- (void)updateViewForPlayerInfo;
-
-- (void)setupAudioSession;
-
-- (void)ffwd;
-- (void)rewind;
-*/
 - (void)awakeFromNib
 {
 	// Make the array to store our AVAudioPlayer objects
 	NSString *fileName, *extension;
 	if (row == 0)
 	{
-		fileName	= [[NSString alloc] initWithFormat:@"sample"];
+		fileName	= [[NSString alloc] initWithFormat:@"bubbles"];
 		extension	= [[NSString alloc] initWithFormat:@"m4a"]; 
 	}
 	else if (row == 1)
 	}
 }
 
+/*
 - (void)setupAudioSession
 {
-	/*
 	AVAudioSession *session = [AVAudioSession sharedInstance];
 	NSError *error = nil;
 	
 	BOOL active = [session setActive: YES error: nil];
 	if (!active)
 		NSLog(@"Failed to set category on AVAudioSession");
-	 */
-
 }
+*/
 
 #pragma mark AVAudioPlayer delegate methods
 

WiiNunchuck.xcodeproj/project.pbxproj

 		F425BBCF117251D500D8A1F4 /* SampleAudioUnit.mm in Sources */ = {isa = PBXBuildFile; fileRef = F425BBCD117251D500D8A1F4 /* SampleAudioUnit.mm */; };
 		F428F461119A375D00097DF4 /* avTouchController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F428F45E119A375D00097DF4 /* avTouchController.mm */; };
 		F428F462119A375D00097DF4 /* CALevelMeter.mm in Sources */ = {isa = PBXBuildFile; fileRef = F428F460119A375D00097DF4 /* CALevelMeter.mm */; };
-		F428F464119A382A00097DF4 /* sample.m4a in Resources */ = {isa = PBXBuildFile; fileRef = F428F463119A382A00097DF4 /* sample.m4a */; };
+		F428F464119A382A00097DF4 /* bubbles.m4a in Resources */ = {isa = PBXBuildFile; fileRef = F428F463119A382A00097DF4 /* bubbles.m4a */; };
 		F428F46B119A385B00097DF4 /* GLLevelMeter.m in Sources */ = {isa = PBXBuildFile; fileRef = F428F468119A385B00097DF4 /* GLLevelMeter.m */; };
 		F428F46C119A385B00097DF4 /* LevelMeter.m in Sources */ = {isa = PBXBuildFile; fileRef = F428F46A119A385B00097DF4 /* LevelMeter.m */; };
 		F428F48B119A38E500097DF4 /* MusicView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F428F48A119A38E500097DF4 /* MusicView.xib */; };
 		F4548EAD117EAFAA0023F7A5 /* wiichuck_adapter.jpg in Resources */ = {isa = PBXBuildFile; fileRef = F4548EAC117EAFAA0023F7A5 /* wiichuck_adapter.jpg */; };
 		F4548EB6117EB18F0023F7A5 /* coffee_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = F4548EB5117EB18F0023F7A5 /* coffee_icon.png */; };
 		F458A22B1184D01A003BD1D2 /* magnify.png in Resources */ = {isa = PBXBuildFile; fileRef = F458A2291184D01A003BD1D2 /* magnify.png */; };
+		F47DC36B11A3385A00C7EAE9 /* README.html in Resources */ = {isa = PBXBuildFile; fileRef = F47DC36A11A3385A00C7EAE9 /* README.html */; };
+		F47DC36E11A3462A00C7EAE9 /* sam_and_eddie.gif in Resources */ = {isa = PBXBuildFile; fileRef = F47DC36D11A3462A00C7EAE9 /* sam_and_eddie.gif */; };
+		F47DC37111A3477C00C7EAE9 /* sae1.jpg in Resources */ = {isa = PBXBuildFile; fileRef = F47DC37011A3477C00C7EAE9 /* sae1.jpg */; };
+		F47DC37311A348CE00C7EAE9 /* beans.gif in Resources */ = {isa = PBXBuildFile; fileRef = F47DC37211A348CE00C7EAE9 /* beans.gif */; };
+		F47DC37511A3495F00C7EAE9 /* umiami.jpg in Resources */ = {isa = PBXBuildFile; fileRef = F47DC37411A3495F00C7EAE9 /* umiami.jpg */; };
 		F4841D981172C9EF0034AF4B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4841D971172C9EF0034AF4B /* AudioToolbox.framework */; };
 		F4841E5A1172D50E0034AF4B /* Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4841E581172D50E0034AF4B /* Filter.cpp */; };
 		F49A118E1184D07D005E3D0E /* InfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F49A118D1184D07D005E3D0E /* InfoViewController.m */; };
 		F428F45E119A375D00097DF4 /* avTouchController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = avTouchController.mm; sourceTree = "<group>"; };
 		F428F45F119A375D00097DF4 /* CALevelMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALevelMeter.h; sourceTree = "<group>"; };
 		F428F460119A375D00097DF4 /* CALevelMeter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CALevelMeter.mm; sourceTree = "<group>"; };
-		F428F463119A382A00097DF4 /* sample.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = sample.m4a; sourceTree = "<group>"; };
+		F428F463119A382A00097DF4 /* bubbles.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = bubbles.m4a; sourceTree = "<group>"; };
 		F428F467119A385B00097DF4 /* GLLevelMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLLevelMeter.h; sourceTree = "<group>"; };
 		F428F468119A385B00097DF4 /* GLLevelMeter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLLevelMeter.m; sourceTree = "<group>"; };
 		F428F469119A385B00097DF4 /* LevelMeter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LevelMeter.h; sourceTree = "<group>"; };
 		F4548EAC117EAFAA0023F7A5 /* wiichuck_adapter.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = wiichuck_adapter.jpg; sourceTree = "<group>"; };
 		F4548EB5117EB18F0023F7A5 /* coffee_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = coffee_icon.png; sourceTree = "<group>"; };
 		F458A2291184D01A003BD1D2 /* magnify.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = magnify.png; sourceTree = "<group>"; };
+		F47DC36A11A3385A00C7EAE9 /* README.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = README.html; sourceTree = "<group>"; };
+		F47DC36D11A3462A00C7EAE9 /* sam_and_eddie.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = sam_and_eddie.gif; sourceTree = "<group>"; };
+		F47DC37011A3477C00C7EAE9 /* sae1.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = sae1.jpg; sourceTree = "<group>"; };
+		F47DC37211A348CE00C7EAE9 /* beans.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = beans.gif; sourceTree = "<group>"; };
+		F47DC37411A3495F00C7EAE9 /* umiami.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = umiami.jpg; sourceTree = "<group>"; };
 		F4841D971172C9EF0034AF4B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		F4841E581172D50E0034AF4B /* Filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Filter.cpp; path = ../../../../../../Users/sdrazin/Documents/Programs/iPhone/WiiNunchuck/Classes/Filter.cpp; sourceTree = SDKROOT; };
 		F4841E591172D50E0034AF4B /* Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = ../../../../../../Users/sdrazin/Documents/Programs/iPhone/WiiNunchuck/Classes/Filter.h; sourceTree = SDKROOT; };
 		080E96DDFE201D6D7F000001 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				F47DC36A11A3385A00C7EAE9 /* README.html */,
 				F428F45C119A374E00097DF4 /* AVPlayback */,
 				F425BBD1117251E000D8A1F4 /* MUEAudioIO */,
 				F41158681178CE190082BD37 /* SineMaker.h */,
 		F449794A118A9BB70047DB68 /* Images */ = {
 			isa = PBXGroup;
 			children = (
+				F47DC37411A3495F00C7EAE9 /* umiami.jpg */,
+				F47DC37211A348CE00C7EAE9 /* beans.gif */,
+				F47DC36D11A3462A00C7EAE9 /* sam_and_eddie.gif */,
+				F47DC37011A3477C00C7EAE9 /* sae1.jpg */,
 				F428F4EF119A3EA900097DF4 /* wiichuck_with_arduino.jpg */,
 				F428F4D1119A3D2000097DF4 /* forward.png */,
 				F428F4D2119A3D2000097DF4 /* pause.png */,
 				F428F631119B045200097DF4 /* ambient_city.aiff */,
 				F428F637119B05D100097DF4 /* eightys_skyline.aiff */,
 				F428F537119A635F00097DF4 /* ocean.caf */,
-				F428F463119A382A00097DF4 /* sample.m4a */,
+				F428F463119A382A00097DF4 /* bubbles.m4a */,
 				F4FFF87111824ACE000D9C7B /* kick.caf */,
 				F4FFF87411824ACE000D9C7B /* snare.caf */,
 				F4FFF87311824ACE000D9C7B /* open_hat.caf */,
 				F4B7E02D118B5C7D002FEAD1 /* headphone_icon.png in Resources */,
 				F4FEF1D611927B2D00E51E9E /* wii_logo2.png in Resources */,
 				F4FEF1D811927DA000E51E9E /* nunchuck_banner.png in Resources */,
-				F428F464119A382A00097DF4 /* sample.m4a in Resources */,
+				F428F464119A382A00097DF4 /* bubbles.m4a in Resources */,
 				F428F48B119A38E500097DF4 /* MusicView.xib in Resources */,
 				F428F4D9119A3D2000097DF4 /* forward.png in Resources */,
 				F428F4DA119A3D2000097DF4 /* pause.png in Resources */,
 				F428F539119A636700097DF4 /* ocean.caf in Resources */,
 				F428F632119B045200097DF4 /* ambient_city.aiff in Resources */,
 				F428F638119B05D100097DF4 /* eightys_skyline.aiff in Resources */,
+				F47DC36B11A3385A00C7EAE9 /* README.html in Resources */,
+				F47DC36E11A3462A00C7EAE9 /* sam_and_eddie.gif in Resources */,
+				F47DC37111A3477C00C7EAE9 /* sae1.jpg in Resources */,
+				F47DC37311A348CE00C7EAE9 /* beans.gif in Resources */,
+				F47DC37511A3495F00C7EAE9 /* umiami.jpg in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

WiiNunchuck.xcodeproj/sdrazin.mode1v3

 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 							<array>
 								<array>
-									<integer>11</integer>
+									<integer>2</integer>
 									<integer>1</integer>
 									<integer>0</integer>
 								</array>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {245, 705}}</string>
+							<string>{{0, 0}, {245, 732}}</string>
 						</dict>
 						<key>PBXTopSmartGroupGIDs</key>
 						<array/>
 					<key>GeometryConfiguration</key>
 					<dict>
 						<key>Frame</key>
-						<string>{{0, 0}, {262, 723}}</string>
+						<string>{{0, 0}, {262, 750}}</string>
 						<key>GroupTreeTableConfiguration</key>
 						<array>
 							<string>MainColumn</string>
 							<real>245</real>
 						</array>
 						<key>RubberWindowFrame</key>
-						<string>2 114 1131 764 0 0 1440 878 </string>
+						<string>56 86 1316 791 0 0 1440 878 </string>
 					</dict>
 					<key>Module</key>
 					<string>PBXSmartGroupTreeModule</string>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>MainViewController.mm</string>
+								<string>README.html</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
 									<key>Split0</key>
 										<key>PBXProjectModuleGUID</key>
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>MainViewController.mm</string>
+										<string>README.html</string>
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>F428F6D5119B218600097DF4</string>
+										<string>F4EC3A7511A448DE0056CE51</string>
 										<key>history</key>
 										<array>
 											<string>F4841DD61172CC2E0034AF4B</string>
 											<string>F49A11EE1184DE0D005E3D0E</string>
 											<string>F49A11EF1184DE0D005E3D0E</string>
 											<string>F49A11F61184DE0D005E3D0E</string>
-											<string>F4156B3A1189170400660B62</string>
 											<string>F44978B2118A89480047DB68</string>
 											<string>F44978B3118A89480047DB68</string>
 											<string>F44978B4118A89480047DB68</string>
-											<string>F449791D118A921C0047DB68</string>
 											<string>F449795A118A9E470047DB68</string>
 											<string>F449795B118A9E470047DB68</string>
 											<string>F449795D118A9E470047DB68</string>
 											<string>F4FEF1FF11928ACB00E51E9E</string>
 											<string>F4FEF20011928ACB00E51E9E</string>
-											<string>F4FEF20111928ACB00E51E9E</string>
 											<string>F4FEF20F11928D1E00E51E9E</string>
 											<string>F4316EB01199FCD500F55C7C</string>
 											<string>F4316EBD1199FE8600F55C7C</string>
 											<string>F4316EBE1199FE8600F55C7C</string>
-											<string>F4316EBF1199FE8600F55C7C</string>
 											<string>F428F4B1119A3A1E00097DF4</string>
 											<string>F428F4B2119A3A1E00097DF4</string>
 											<string>F428F4B3119A3A1E00097DF4</string>
 											<string>F428F50A119A448400097DF4</string>
 											<string>F428F50C119A448400097DF4</string>
-											<string>F428F50F119A448400097DF4</string>
 											<string>F428F532119A5FF900097DF4</string>
 											<string>F428F549119A672000097DF4</string>
 											<string>F428F609119B001100097DF4</string>
-											<string>F428F671119B0D0900097DF4</string>
-											<string>F428F674119B0D0900097DF4</string>
-											<string>F428F676119B0D0900097DF4</string>
-											<string>F428F6A8119B13AC00097DF4</string>
-											<string>F428F6A9119B13AC00097DF4</string>
 											<string>F428F6C6119B1E6000097DF4</string>
 											<string>F428F6C7119B1E6000097DF4</string>
 											<string>F428F6C8119B1E6000097DF4</string>
 											<string>F428F6CC119B1E6000097DF4</string>
 											<string>F428F6CD119B1E6000097DF4</string>
 											<string>F428F6D2119B217D00097DF4</string>
-											<string>F428F6D3119B217D00097DF4</string>
-											<string>F428F6C5119B1E6000097DF4</string>
+											<string>F47DC37911A34B0F00C7EAE9</string>
+											<string>F47DC37B11A34B0F00C7EAE9</string>
+											<string>F47DC37C11A34B0F00C7EAE9</string>
+											<string>F47DC37D11A34B0F00C7EAE9</string>
+											<string>F47DC37E11A34B0F00C7EAE9</string>
+											<string>F47DC38011A34B0F00C7EAE9</string>
+											<string>F47DC38111A34B0F00C7EAE9</string>
+											<string>F47DC38211A34B0F00C7EAE9</string>
+											<string>F47DC38311A34B0F00C7EAE9</string>
+											<string>F4EC3A5C11A35E150056CE51</string>
+											<string>F4EC3A5D11A35E150056CE51</string>
+											<string>F4EC3A5E11A35E150056CE51</string>
+											<string>F4EC3A5F11A35E150056CE51</string>
+											<string>F4EC3A6011A35E150056CE51</string>
+											<string>F4EC3A6111A35E150056CE51</string>
+											<string>F4EC3A6211A35E150056CE51</string>
+											<string>F4EC3A6311A35E150056CE51</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {864, 542}}</string>
+								<string>{{0, 0}, {1049, 554}}</string>
 								<key>RubberWindowFrame</key>
-								<string>2 114 1131 764 0 0 1440 878 </string>
+								<string>56 86 1316 791 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>542pt</string>
+							<string>554pt</string>
 						</dict>
 						<dict>
 							<key>ContentConfiguration</key>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 547}, {864, 176}}</string>
+								<string>{{0, 559}, {1049, 191}}</string>
 								<key>RubberWindowFrame</key>
-								<string>2 114 1131 764 0 0 1440 878 </string>
+								<string>56 86 1316 791 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
 							<key>Proportion</key>
-							<string>176pt</string>
+							<string>191pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>864pt</string>
+					<string>1049pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>F428F484119A388400097DF4</string>
+				<string>F4EC3A6511A35E150056CE51</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>F428F485119A388400097DF4</string>
+				<string>F4EC3A6611A35E150056CE51</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
 	<key>StatusbarIsVisible</key>
 	<true/>
 	<key>TimeStamp</key>
-	<real>295379334.15962303</real>
+	<real>295979230.76208103</real>
 	<key>ToolbarConfigUserDefaultsMinorVersion</key>
 	<string>2</string>
 	<key>ToolbarDisplayMode</key>
 	<integer>5</integer>
 	<key>WindowOrderList</key>
 	<array>
-		<string>F428F486119A388400097DF4</string>
-		<string>F428F487119A388400097DF4</string>
 		<string>1CD10A99069EF8BA00B06720</string>
 		<string>F425BAEF1172444200D8A1F4</string>
-		<string>1C78EAAD065D492600B07095</string>
 		<string>/Users/sdrazin/Documents/Programs/iPhone/WiiNunchuck/WiiNunchuck.xcodeproj</string>
 	</array>
 	<key>WindowString</key>
-	<string>2 114 1131 764 0 0 1440 878 </string>
+	<string>56 86 1316 791 0 0 1440 878 </string>
 	<key>WindowToolsV3</key>
 	<array>
 		<dict>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>MainViewController.mm</string>
+								<string></string>
 								<key>StatusBarVisibility</key>
 								<true/>
 							</dict>
 							<string>283pt</string>
 						</dict>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
 			<key>TableOfContents</key>
 			<array>
 				<string>F425BAEF1172444200D8A1F4</string>
-				<string>F428F473119A387D00097DF4</string>
+				<string>F4EC3A6711A35E150056CE51</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {737, 301}}</string>
-											<string>{{737, 0}, {644, 301}}</string>
+											<string>{{0, 0}, {737, 373}}</string>
+											<string>{{737, 0}, {644, 373}}</string>
 										</array>
 									</dict>
 									<key>VerticalSplitView</key>
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {1381, 301}}</string>
-											<string>{{0, 301}, {1381, 417}}</string>
+											<string>{{0, 0}, {1381, 373}}</string>
+											<string>{{0, 373}, {1381, 345}}</string>
 										</array>
 									</dict>
 								</dict>
 										<real>414</real>
 									</array>
 									<key>Frame</key>
-									<string>{{737, 0}, {644, 301}}</string>
+									<string>{{737, 0}, {644, 373}}</string>
 									<key>RubberWindowFrame</key>
 									<string>0 116 1381 759 0 0 1440 878 </string>
 								</dict>
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>F428F474119A387D00097DF4</string>
+				<string>F4EC3A6811A35E150056CE51</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>F428F475119A387D00097DF4</string>
-				<string>F428F476119A387D00097DF4</string>
-				<string>F428F477119A387D00097DF4</string>
-				<string>F428F478119A387D00097DF4</string>
-				<string>F428F479119A387D00097DF4</string>
+				<string>F4EC3A6911A35E150056CE51</string>
+				<string>F4EC3A6A11A35E150056CE51</string>
+				<string>F4EC3A6B11A35E150056CE51</string>
+				<string>F4EC3A6C11A35E150056CE51</string>
+				<string>F4EC3A6D11A35E150056CE51</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
 			<key>TableOfContents</key>
 			<array>
 				<string>1C78EAAD065D492600B07095</string>
-				<string>F428F47A119A387D00097DF4</string>
+				<string>F47DC38E11A34B0F00C7EAE9</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<key>WindowToolGUID</key>
 			<string>1C78EAAD065D492600B07095</string>
 			<key>WindowToolIsVisible</key>
-			<true/>
+			<false/>
 		</dict>
 		<dict>
 			<key>Identifier</key>

WiiNunchuck.xcodeproj/sdrazin.pbxuser

 {
 	1D3623240D0F684500981E51 /* WiiNunchuckAppDelegate.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {803, 510}}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 523}}";
 			sepNavSelRange = "{148, 0}";
 			sepNavVisRange = "{0, 946}";
 			sepNavWindowFrame = "{{15, 49}, {1357, 824}}";
 	1D3623250D0F684500981E51 /* WiiNunchuckAppDelegate.mm */ = {
 		uiCtxt = {
 			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{1334, 71}\";\n            s = 0;\n        },\n                {\n            r = \"{1423, 108}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 1540}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {981, 637}}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 624}}";
 			sepNavSelRange = "{919, 0}";
-			sepNavVisRange = "{48, 1308}";
+			sepNavVisRange = "{48, 1289}";
 			sepNavWindowFrame = "{{15, 49}, {1357, 824}}";
 		};
 	};
 	29B97313FDCFA39411CA2CEA /* Project object */ = {
 		activeBuildConfigurationName = Debug;
 		activeExecutable = F425BAC01172402400D8A1F4 /* WiiNunchuck */;
-		activeSDKPreference = iphoneos3.1.3;
+		activeSDKPreference = iphonesimulator3.1.3;
 		activeTarget = 1D6058900D05DD3D006BFB54 /* WiiNunchuck */;
 		addToTargets = (
 			1D6058900D05DD3D006BFB54 /* WiiNunchuck */,
 				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
 				PBXFileTableDataSourceColumnWidthsKey = (
 					20,
-					625,
+					810,
 					20,
 					48,
 					43,
 					PBXFileDataSource_Warnings_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 295310820;
-			PBXWorkspaceStateSaveDate = 295310820;
+			PBXPerProjectTemplateStateSaveDate = 295989589;
+			PBXWorkspaceStateSaveDate = 295989589;
 		};
 		perUserProjectItems = {
 			F409004A11741F2F00A42609 = F409004A11741F2F00A42609 /* PBXTextBookmark */;
-			F4156B3A1189170400660B62 = F4156B3A1189170400660B62 /* PBXTextBookmark */;
 			F42836ED117525BB00885608 = F42836ED117525BB00885608 /* PBXTextBookmark */;
 			F42836EE117525BB00885608 = F42836EE117525BB00885608 /* PBXTextBookmark */;
 			F428370E1175313A00885608 = F428370E1175313A00885608 /* PBXTextBookmark */;
 			F42837121175313A00885608 = F42837121175313A00885608 /* PBXTextBookmark */;
-			F428F470119A387D00097DF4 /* PBXTextBookmark */ = F428F470119A387D00097DF4 /* PBXTextBookmark */;
-			F428F471119A387D00097DF4 /* XCBuildMessageTextBookmark */ = F428F471119A387D00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F472119A387D00097DF4 /* PBXTextBookmark */ = F428F472119A387D00097DF4 /* PBXTextBookmark */;
-			F428F47C119A388400097DF4 /* PBXTextBookmark */ = F428F47C119A388400097DF4 /* PBXTextBookmark */;
-			F428F47D119A388400097DF4 /* PBXTextBookmark */ = F428F47D119A388400097DF4 /* PBXTextBookmark */;
-			F428F47E119A388400097DF4 /* PBXTextBookmark */ = F428F47E119A388400097DF4 /* PBXTextBookmark */;
-			F428F47F119A388400097DF4 /* PBXTextBookmark */ = F428F47F119A388400097DF4 /* PBXTextBookmark */;
-			F428F480119A388400097DF4 /* PBXTextBookmark */ = F428F480119A388400097DF4 /* PBXTextBookmark */;
-			F428F481119A388400097DF4 /* PBXTextBookmark */ = F428F481119A388400097DF4 /* PBXTextBookmark */;
-			F428F482119A388400097DF4 /* PBXTextBookmark */ = F428F482119A388400097DF4 /* PBXTextBookmark */;
-			F428F483119A388400097DF4 /* PBXTextBookmark */ = F428F483119A388400097DF4 /* PBXTextBookmark */;
-			F428F494119A398100097DF4 /* XCBuildMessageTextBookmark */ = F428F494119A398100097DF4 /* XCBuildMessageTextBookmark */;
-			F428F495119A398100097DF4 /* PBXTextBookmark */ = F428F495119A398100097DF4 /* PBXTextBookmark */;
-			F428F4AA119A39CB00097DF4 /* PBXTextBookmark */ = F428F4AA119A39CB00097DF4 /* PBXTextBookmark */;
-			F428F4AF119A3A1500097DF4 /* PBXTextBookmark */ = F428F4AF119A3A1500097DF4 /* PBXTextBookmark */;
-			F428F4B0119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B0119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4B1119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B1119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4B2119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B2119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4B3119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B3119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4B4119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B4119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4B5119A3A1E00097DF4 /* PBXTextBookmark */ = F428F4B5119A3A1E00097DF4 /* PBXTextBookmark */;
-			F428F4C1119A3B0300097DF4 /* PBXTextBookmark */ = F428F4C1119A3B0300097DF4 /* PBXTextBookmark */;
-			F428F4C3119A3B0800097DF4 /* PBXTextBookmark */ = F428F4C3119A3B0800097DF4 /* PBXTextBookmark */;
-			F428F4C4119A3B0800097DF4 /* PBXTextBookmark */ = F428F4C4119A3B0800097DF4 /* PBXTextBookmark */;
-			F428F4CE119A3CDD00097DF4 /* PBXTextBookmark */ = F428F4CE119A3CDD00097DF4 /* PBXTextBookmark */;
-			F428F4CF119A3CDD00097DF4 /* PBXTextBookmark */ = F428F4CF119A3CDD00097DF4 /* PBXTextBookmark */;
-			F428F4D0119A3CDD00097DF4 /* PBXTextBookmark */ = F428F4D0119A3CDD00097DF4 /* PBXTextBookmark */;
-			F428F4E6119A3D5C00097DF4 /* PBXTextBookmark */ = F428F4E6119A3D5C00097DF4 /* PBXTextBookmark */;
-			F428F4E7119A3D5C00097DF4 /* PBXTextBookmark */ = F428F4E7119A3D5C00097DF4 /* PBXTextBookmark */;
-			F428F4E8119A3D5C00097DF4 /* PBXTextBookmark */ = F428F4E8119A3D5C00097DF4 /* PBXTextBookmark */;
-			F428F4E9119A3D5C00097DF4 /* PBXTextBookmark */ = F428F4E9119A3D5C00097DF4 /* PBXTextBookmark */;
-			F428F4EE119A3E9700097DF4 /* PBXTextBookmark */ = F428F4EE119A3E9700097DF4 /* PBXTextBookmark */;
-			F428F50A119A448400097DF4 /* PBXBookmark */ = F428F50A119A448400097DF4 /* PBXBookmark */;
-			F428F50B119A448400097DF4 /* PBXTextBookmark */ = F428F50B119A448400097DF4 /* PBXTextBookmark */;
-			F428F50C119A448400097DF4 /* PBXTextBookmark */ = F428F50C119A448400097DF4 /* PBXTextBookmark */;
-			F428F50D119A448400097DF4 /* PBXTextBookmark */ = F428F50D119A448400097DF4 /* PBXTextBookmark */;
-			F428F50E119A448400097DF4 /* PBXTextBookmark */ = F428F50E119A448400097DF4 /* PBXTextBookmark */;
-			F428F50F119A448400097DF4 /* PBXTextBookmark */ = F428F50F119A448400097DF4 /* PBXTextBookmark */;
-			F428F510119A448400097DF4 /* PBXTextBookmark */ = F428F510119A448400097DF4 /* PBXTextBookmark */;
-			F428F511119A448400097DF4 /* PBXTextBookmark */ = F428F511119A448400097DF4 /* PBXTextBookmark */;
-			F428F51C119A5F0F00097DF4 /* PBXTextBookmark */ = F428F51C119A5F0F00097DF4 /* PBXTextBookmark */;
-			F428F51D119A5F0F00097DF4 /* PBXTextBookmark */ = F428F51D119A5F0F00097DF4 /* PBXTextBookmark */;
-			F428F51E119A5F0F00097DF4 /* XCBuildMessageTextBookmark */ = F428F51E119A5F0F00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F51F119A5F0F00097DF4 /* PBXTextBookmark */ = F428F51F119A5F0F00097DF4 /* PBXTextBookmark */;
-			F428F522119A5F3E00097DF4 /* PBXTextBookmark */ = F428F522119A5F3E00097DF4 /* PBXTextBookmark */;
-			F428F523119A5F3E00097DF4 /* XCBuildMessageTextBookmark */ = F428F523119A5F3E00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F524119A5F3E00097DF4 /* PBXTextBookmark */ = F428F524119A5F3E00097DF4 /* PBXTextBookmark */;
-			F428F526119A5F5100097DF4 /* PBXTextBookmark */ = F428F526119A5F5100097DF4 /* PBXTextBookmark */;
-			F428F527119A5F5100097DF4 /* PBXTextBookmark */ = F428F527119A5F5100097DF4 /* PBXTextBookmark */;
-			F428F528119A5F5100097DF4 /* PBXTextBookmark */ = F428F528119A5F5100097DF4 /* PBXTextBookmark */;
-			F428F529119A5F5100097DF4 /* PBXTextBookmark */ = F428F529119A5F5100097DF4 /* PBXTextBookmark */;
-			F428F52A119A5F5100097DF4 /* PBXTextBookmark */ = F428F52A119A5F5100097DF4 /* PBXTextBookmark */;
-			F428F532119A5FF900097DF4 /* PBXTextBookmark */ = F428F532119A5FF900097DF4 /* PBXTextBookmark */;
-			F428F533119A5FF900097DF4 /* PBXTextBookmark */ = F428F533119A5FF900097DF4 /* PBXTextBookmark */;
-			F428F534119A5FF900097DF4 /* PBXTextBookmark */ = F428F534119A5FF900097DF4 /* PBXTextBookmark */;
-			F428F535119A635200097DF4 /* PBXTextBookmark */ = F428F535119A635200097DF4 /* PBXTextBookmark */;
-			F428F536119A635600097DF4 /* PBXTextBookmark */ = F428F536119A635600097DF4 /* PBXTextBookmark */;
-			F428F549119A672000097DF4 /* PBXTextBookmark */ = F428F549119A672000097DF4 /* PBXTextBookmark */;
-			F428F54A119A672000097DF4 /* XCBuildMessageTextBookmark */ = F428F54A119A672000097DF4 /* XCBuildMessageTextBookmark */;
-			F428F54B119A672000097DF4 /* PBXTextBookmark */ = F428F54B119A672000097DF4 /* PBXTextBookmark */;
-			F428F556119A681100097DF4 /* PBXTextBookmark */ = F428F556119A681100097DF4 /* PBXTextBookmark */;
-			F428F557119A681100097DF4 /* PBXTextBookmark */ = F428F557119A681100097DF4 /* PBXTextBookmark */;
-			F428F55C119A684400097DF4 /* PBXTextBookmark */ = F428F55C119A684400097DF4 /* PBXTextBookmark */;
-			F428F55D119A684400097DF4 /* PBXTextBookmark */ = F428F55D119A684400097DF4 /* PBXTextBookmark */;
-			F428F55E119A684400097DF4 /* PBXTextBookmark */ = F428F55E119A684400097DF4 /* PBXTextBookmark */;
-			F428F55F119A687600097DF4 /* XCBuildMessageTextBookmark */ = F428F55F119A687600097DF4 /* XCBuildMessageTextBookmark */;
-			F428F560119A687600097DF4 /* PBXTextBookmark */ = F428F560119A687600097DF4 /* PBXTextBookmark */;
-			F428F561119A68AD00097DF4 /* PBXTextBookmark */ = F428F561119A68AD00097DF4 /* PBXTextBookmark */;
-			F428F56F119A7D1500097DF4 /* PBXTextBookmark */ = F428F56F119A7D1500097DF4 /* PBXTextBookmark */;
-			F428F570119A7D2100097DF4 /* PBXTextBookmark */ = F428F570119A7D2100097DF4 /* PBXTextBookmark */;
-			F428F58E119AF83F00097DF4 /* PBXTextBookmark */ = F428F58E119AF83F00097DF4 /* PBXTextBookmark */;
-			F428F58F119AF83F00097DF4 /* PBXTextBookmark */ = F428F58F119AF83F00097DF4 /* PBXTextBookmark */;
-			F428F592119AF8E100097DF4 /* PBXTextBookmark */ = F428F592119AF8E100097DF4 /* PBXTextBookmark */;
-			F428F593119AF8E100097DF4 /* PBXTextBookmark */ = F428F593119AF8E100097DF4 /* PBXTextBookmark */;
-			F428F598119AF91900097DF4 /* PBXTextBookmark */ = F428F598119AF91900097DF4 /* PBXTextBookmark */;
-			F428F599119AF91900097DF4 /* PBXTextBookmark */ = F428F599119AF91900097DF4 /* PBXTextBookmark */;
-			F428F59B119AF97200097DF4 /* PBXTextBookmark */ = F428F59B119AF97200097DF4 /* PBXTextBookmark */;
-			F428F59E119AFA9B00097DF4 /* XCBuildMessageTextBookmark */ = F428F59E119AFA9B00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F59F119AFA9B00097DF4 /* PBXTextBookmark */ = F428F59F119AFA9B00097DF4 /* PBXTextBookmark */;
-			F428F5A2119AFAAF00097DF4 /* PBXTextBookmark */ = F428F5A2119AFAAF00097DF4 /* PBXTextBookmark */;
-			F428F5A7119AFBC700097DF4 /* XCBuildMessageTextBookmark */ = F428F5A7119AFBC700097DF4 /* XCBuildMessageTextBookmark */;
-			F428F5A8119AFBC700097DF4 /* PBXTextBookmark */ = F428F5A8119AFBC700097DF4 /* PBXTextBookmark */;
-			F428F5AD119AFBE600097DF4 /* PBXTextBookmark */ = F428F5AD119AFBE600097DF4 /* PBXTextBookmark */;
-			F428F5B4119AFC0200097DF4 /* PBXTextBookmark */ = F428F5B4119AFC0200097DF4 /* PBXTextBookmark */;
-			F428F5B5119AFC0200097DF4 /* PBXTextBookmark */ = F428F5B5119AFC0200097DF4 /* PBXTextBookmark */;
-			F428F5BF119AFCAB00097DF4 /* PBXTextBookmark */ = F428F5BF119AFCAB00097DF4 /* PBXTextBookmark */;
-			F428F5C7119AFCFA00097DF4 /* PBXTextBookmark */ = F428F5C7119AFCFA00097DF4 /* PBXTextBookmark */;
-			F428F5C8119AFCFA00097DF4 /* PBXTextBookmark */ = F428F5C8119AFCFA00097DF4 /* PBXTextBookmark */;
-			F428F5CD119AFD4A00097DF4 /* PBXTextBookmark */ = F428F5CD119AFD4A00097DF4 /* PBXTextBookmark */;
-			F428F5D7119AFD7B00097DF4 /* PBXTextBookmark */ = F428F5D7119AFD7B00097DF4 /* PBXTextBookmark */;
-			F428F5D8119AFD7B00097DF4 /* PBXTextBookmark */ = F428F5D8119AFD7B00097DF4 /* PBXTextBookmark */;
-			F428F5E8119AFE4C00097DF4 /* PBXTextBookmark */ = F428F5E8119AFE4C00097DF4 /* PBXTextBookmark */;
-			F428F5EA119AFE4C00097DF4 /* PBXTextBookmark */ = F428F5EA119AFE4C00097DF4 /* PBXTextBookmark */;
-			F428F5EB119AFE4C00097DF4 /* PBXTextBookmark */ = F428F5EB119AFE4C00097DF4 /* PBXTextBookmark */;
-			F428F5EF119AFE7E00097DF4 /* PBXTextBookmark */ = F428F5EF119AFE7E00097DF4 /* PBXTextBookmark */;
-			F428F5F4119AFEB800097DF4 /* PBXTextBookmark */ = F428F5F4119AFEB800097DF4 /* PBXTextBookmark */;
-			F428F5F9119AFF0500097DF4 /* PBXTextBookmark */ = F428F5F9119AFF0500097DF4 /* PBXTextBookmark */;
-			F428F5FD119AFF7700097DF4 /* PBXTextBookmark */ = F428F5FD119AFF7700097DF4 /* PBXTextBookmark */;
-			F428F5FE119AFF7700097DF4 /* PBXTextBookmark */ = F428F5FE119AFF7700097DF4 /* PBXTextBookmark */;
-			F428F5FF119AFF7700097DF4 /* PBXTextBookmark */ = F428F5FF119AFF7700097DF4 /* PBXTextBookmark */;
-			F428F603119AFFD400097DF4 /* PBXTextBookmark */ = F428F603119AFFD400097DF4 /* PBXTextBookmark */;
-			F428F604119AFFD400097DF4 /* PBXTextBookmark */ = F428F604119AFFD400097DF4 /* PBXTextBookmark */;
-			F428F605119AFFD400097DF4 /* PBXTextBookmark */ = F428F605119AFFD400097DF4 /* PBXTextBookmark */;
-			F428F609119B001100097DF4 /* PBXTextBookmark */ = F428F609119B001100097DF4 /* PBXTextBookmark */;
-			F428F60A119B001100097DF4 /* PBXTextBookmark */ = F428F60A119B001100097DF4 /* PBXTextBookmark */;
-			F428F60B119B001100097DF4 /* PBXTextBookmark */ = F428F60B119B001100097DF4 /* PBXTextBookmark */;
-			F428F610119B004B00097DF4 /* PBXTextBookmark */ = F428F610119B004B00097DF4 /* PBXTextBookmark */;
-			F428F615119B006300097DF4 /* PBXTextBookmark */ = F428F615119B006300097DF4 /* PBXTextBookmark */;
-			F428F619119B007F00097DF4 /* PBXTextBookmark */ = F428F619119B007F00097DF4 /* PBXTextBookmark */;
-			F428F61E119B00AA00097DF4 /* PBXTextBookmark */ = F428F61E119B00AA00097DF4 /* PBXTextBookmark */;
-			F428F622119B00E100097DF4 /* PBXTextBookmark */ = F428F622119B00E100097DF4 /* PBXTextBookmark */;
-			F428F626119B025F00097DF4 /* PBXTextBookmark */ = F428F626119B025F00097DF4 /* PBXTextBookmark */;
-			F428F629119B029C00097DF4 /* PBXTextBookmark */ = F428F629119B029C00097DF4 /* PBXTextBookmark */;
-			F428F630119B037A00097DF4 /* PBXTextBookmark */ = F428F630119B037A00097DF4 /* PBXTextBookmark */;
-			F428F635119B05C900097DF4 /* PBXTextBookmark */ = F428F635119B05C900097DF4 /* PBXTextBookmark */;
-			F428F636119B05CC00097DF4 /* PBXTextBookmark */ = F428F636119B05CC00097DF4 /* PBXTextBookmark */;
-			F428F63D119B06D100097DF4 /* PBXTextBookmark */ = F428F63D119B06D100097DF4 /* PBXTextBookmark */;
-			F428F63E119B06D100097DF4 /* PBXTextBookmark */ = F428F63E119B06D100097DF4 /* PBXTextBookmark */;
-			F428F63F119B06D100097DF4 /* PBXTextBookmark */ = F428F63F119B06D100097DF4 /* PBXTextBookmark */;
-			F428F660119B0C4600097DF4 /* PBXTextBookmark */ = F428F660119B0C4600097DF4 /* PBXTextBookmark */;
-			F428F665119B0C6C00097DF4 /* PBXTextBookmark */ = F428F665119B0C6C00097DF4 /* PBXTextBookmark */;
-			F428F666119B0C6C00097DF4 /* XCBuildMessageTextBookmark */ = F428F666119B0C6C00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F667119B0C6C00097DF4 /* PBXTextBookmark */ = F428F667119B0C6C00097DF4 /* PBXTextBookmark */;
-			F428F66C119B0C9200097DF4 /* PBXTextBookmark */ = F428F66C119B0C9200097DF4 /* PBXTextBookmark */;
-			F428F66D119B0C9200097DF4 /* XCBuildMessageTextBookmark */ = F428F66D119B0C9200097DF4 /* XCBuildMessageTextBookmark */;
-			F428F66E119B0C9200097DF4 /* PBXTextBookmark */ = F428F66E119B0C9200097DF4 /* PBXTextBookmark */;
-			F428F671119B0D0900097DF4 /* PBXTextBookmark */ = F428F671119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F672119B0D0900097DF4 /* PBXTextBookmark */ = F428F672119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F673119B0D0900097DF4 /* PBXTextBookmark */ = F428F673119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F674119B0D0900097DF4 /* PBXTextBookmark */ = F428F674119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F675119B0D0900097DF4 /* PBXTextBookmark */ = F428F675119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F676119B0D0900097DF4 /* PBXTextBookmark */ = F428F676119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F677119B0D0900097DF4 /* XCBuildMessageTextBookmark */ = F428F677119B0D0900097DF4 /* XCBuildMessageTextBookmark */;
-			F428F678119B0D0900097DF4 /* PBXTextBookmark */ = F428F678119B0D0900097DF4 /* PBXTextBookmark */;
-			F428F691119B0D8500097DF4 /* PBXTextBookmark */ = F428F691119B0D8500097DF4 /* PBXTextBookmark */;
-			F428F694119B0DDF00097DF4 /* PBXTextBookmark */ = F428F694119B0DDF00097DF4 /* PBXTextBookmark */;
-			F428F6A8119B13AC00097DF4 /* PBXTextBookmark */ = F428F6A8119B13AC00097DF4 /* PBXTextBookmark */;
-			F428F6A9119B13AC00097DF4 /* PBXTextBookmark */ = F428F6A9119B13AC00097DF4 /* PBXTextBookmark */;
-			F428F6AA119B13AC00097DF4 /* PBXTextBookmark */ = F428F6AA119B13AC00097DF4 /* PBXTextBookmark */;
-			F428F6AB119B13AC00097DF4 /* PBXTextBookmark */ = F428F6AB119B13AC00097DF4 /* PBXTextBookmark */;
-			F428F6AC119B13AC00097DF4 /* PBXTextBookmark */ = F428F6AC119B13AC00097DF4 /* PBXTextBookmark */;
-			F428F6B1119B14FB00097DF4 /* PBXTextBookmark */ = F428F6B1119B14FB00097DF4 /* PBXTextBookmark */;
-			F428F6B2119B14FB00097DF4 /* XCBuildMessageTextBookmark */ = F428F6B2119B14FB00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F6B3119B14FB00097DF4 /* PBXTextBookmark */ = F428F6B3119B14FB00097DF4 /* PBXTextBookmark */;
-			F428F6B6119B154F00097DF4 /* XCBuildMessageTextBookmark */ = F428F6B6119B154F00097DF4 /* XCBuildMessageTextBookmark */;
-			F428F6B7119B154F00097DF4 /* PBXTextBookmark */ = F428F6B7119B154F00097DF4 /* PBXTextBookmark */;
-			F428F6BC119B167800097DF4 /* PBXTextBookmark */ = F428F6BC119B167800097DF4 /* PBXTextBookmark */;
-			F428F6BD119B167800097DF4 /* PBXTextBookmark */ = F428F6BD119B167800097DF4 /* PBXTextBookmark */;
-			F428F6BE119B167800097DF4 /* PBXTextBookmark */ = F428F6BE119B167800097DF4 /* PBXTextBookmark */;
-			F428F6C1119B168A00097DF4 /* PBXTextBookmark */ = F428F6C1119B168A00097DF4 /* PBXTextBookmark */;
-			F428F6C5119B1E6000097DF4 /* PBXTextBookmark */ = F428F6C5119B1E6000097DF4 /* PBXTextBookmark */;
-			F428F6C6119B1E6000097DF4 /* PBXBookmark */ = F428F6C6119B1E6000097DF4 /* PBXBookmark */;
-			F428F6C7119B1E6000097DF4 /* PBXBookmark */ = F428F6C7119B1E6000097DF4 /* PBXBookmark */;
-			F428F6C8119B1E6000097DF4 /* PBXBookmark */ = F428F6C8119B1E6000097DF4 /* PBXBookmark */;
-			F428F6C9119B1E6000097DF4 /* PBXBookmark */ = F428F6C9119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CA119B1E6000097DF4 /* PBXBookmark */ = F428F6CA119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CB119B1E6000097DF4 /* PBXBookmark */ = F428F6CB119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CC119B1E6000097DF4 /* PBXBookmark */ = F428F6CC119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CD119B1E6000097DF4 /* PBXBookmark */ = F428F6CD119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CE119B1E6000097DF4 /* PBXBookmark */ = F428F6CE119B1E6000097DF4 /* PBXBookmark */;
-			F428F6CF119B1E6000097DF4 /* PBXBookmark */ = F428F6CF119B1E6000097DF4 /* PBXBookmark */;
-			F428F6D2119B217D00097DF4 /* PBXBookmark */ = F428F6D2119B217D00097DF4 /* PBXBookmark */;
-			F428F6D3119B217D00097DF4 /* PBXTextBookmark */ = F428F6D3119B217D00097DF4 /* PBXTextBookmark */;
-			F428F6D4119B217D00097DF4 /* PBXTextBookmark */ = F428F6D4119B217D00097DF4 /* PBXTextBookmark */;
-			F428F6D5119B218600097DF4 /* PBXTextBookmark */ = F428F6D5119B218600097DF4 /* PBXTextBookmark */;
-			F4316E57119904F400F55C7C = F4316E57119904F400F55C7C /* PBXTextBookmark */;
-			F4316E5D1199054D00F55C7C = F4316E5D1199054D00F55C7C /* PBXTextBookmark */;
-			F4316E661199234400F55C7C = F4316E661199234400F55C7C /* PBXTextBookmark */;
-			F4316EA71199FCC900F55C7C = F4316EA71199FCC900F55C7C /* PBXTextBookmark */;
-			F4316EA81199FCC900F55C7C = F4316EA81199FCC900F55C7C /* PBXTextBookmark */;
-			F4316EA91199FCC900F55C7C = F4316EA91199FCC900F55C7C /* PBXTextBookmark */;
-			F4316EAC1199FCCB00F55C7C = F4316EAC1199FCCB00F55C7C /* PBXTextBookmark */;
-			F4316EAD1199FCCD00F55C7C = F4316EAD1199FCCD00F55C7C /* PBXTextBookmark */;
-			F4316EAF1199FCD500F55C7C = F4316EAF1199FCD500F55C7C /* PBXTextBookmark */;
+			F428F4B1119A3A1E00097DF4 = F428F4B1119A3A1E00097DF4 /* PBXTextBookmark */;
+			F428F4B2119A3A1E00097DF4 = F428F4B2119A3A1E00097DF4 /* PBXTextBookmark */;
+			F428F4B3119A3A1E00097DF4 = F428F4B3119A3A1E00097DF4 /* PBXTextBookmark */;
+			F428F50A119A448400097DF4 = F428F50A119A448400097DF4 /* PBXBookmark */;
+			F428F50C119A448400097DF4 = F428F50C119A448400097DF4 /* PBXTextBookmark */;
+			F428F532119A5FF900097DF4 = F428F532119A5FF900097DF4 /* PBXTextBookmark */;
+			F428F549119A672000097DF4 = F428F549119A672000097DF4 /* PBXTextBookmark */;
+			F428F609119B001100097DF4 = F428F609119B001100097DF4 /* PBXTextBookmark */;
+			F428F6C6119B1E6000097DF4 = F428F6C6119B1E6000097DF4 /* PBXBookmark */;
+			F428F6C7119B1E6000097DF4 = F428F6C7119B1E6000097DF4 /* PBXBookmark */;
+			F428F6C8119B1E6000097DF4 = F428F6C8119B1E6000097DF4 /* PBXBookmark */;
+			F428F6C9119B1E6000097DF4 = F428F6C9119B1E6000097DF4 /* PBXBookmark */;
+			F428F6CA119B1E6000097DF4 = F428F6CA119B1E6000097DF4 /* PBXBookmark */;
+			F428F6CB119B1E6000097DF4 = F428F6CB119B1E6000097DF4 /* PBXBookmark */;
+			F428F6CC119B1E6000097DF4 = F428F6CC119B1E6000097DF4 /* PBXBookmark */;
+			F428F6CD119B1E6000097DF4 = F428F6CD119B1E6000097DF4 /* PBXBookmark */;
+			F428F6D2119B217D00097DF4 = F428F6D2119B217D00097DF4 /* PBXBookmark */;
 			F4316EB01199FCD500F55C7C = F4316EB01199FCD500F55C7C /* PlistBookmark */;
-			F4316EB11199FCD500F55C7C = F4316EB11199FCD500F55C7C /* PBXTextBookmark */;
-			F4316EB21199FCD500F55C7C = F4316EB21199FCD500F55C7C /* PBXTextBookmark */;
-			F4316EB31199FCD500F55C7C = F4316EB31199FCD500F55C7C /* PBXTextBookmark */;
-			F4316EBB1199FE8600F55C7C = F4316EBB1199FE8600F55C7C /* PBXTextBookmark */;
-			F4316EBC1199FE8600F55C7C = F4316EBC1199FE8600F55C7C /* PBXTextBookmark */;
 			F4316EBD1199FE8600F55C7C = F4316EBD1199FE8600F55C7C /* PBXTextBookmark */;
 			F4316EBE1199FE8600F55C7C = F4316EBE1199FE8600F55C7C /* PBXTextBookmark */;
-			F4316EBF1199FE8600F55C7C = F4316EBF1199FE8600F55C7C /* PBXTextBookmark */;
-			F4316EC01199FE8600F55C7C = F4316EC01199FE8600F55C7C /* PBXTextBookmark */;
-			F4316EC11199FE8600F55C7C = F4316EC11199FE8600F55C7C /* PBXTextBookmark */;
-			F4316EC21199FFD600F55C7C = F4316EC21199FFD600F55C7C /* PBXTextBookmark */;
-			F4316EC31199FFD600F55C7C = F4316EC31199FFD600F55C7C /* PBXTextBookmark */;
-			F4316EC41199FFD600F55C7C = F4316EC41199FFD600F55C7C /* PBXTextBookmark */;
-			F4316ECB119A010E00F55C7C = F4316ECB119A010E00F55C7C /* PBXTextBookmark */;
-			F4316ECC119A010E00F55C7C = F4316ECC119A010E00F55C7C /* PBXTextBookmark */;
-			F4316ECD119A010E00F55C7C = F4316ECD119A010E00F55C7C /* PBXTextBookmark */;
 			F44978B2118A89480047DB68 = F44978B2118A89480047DB68 /* PBXTextBookmark */;
 			F44978B3118A89480047DB68 = F44978B3118A89480047DB68 /* PBXTextBookmark */;
 			F44978B4118A89480047DB68 = F44978B4118A89480047DB68 /* PBXTextBookmark */;
-			F449791D118A921C0047DB68 = F449791D118A921C0047DB68 /* PBXTextBookmark */;
 			F449795A118A9E470047DB68 = F449795A118A9E470047DB68 /* PBXBookmark */;
 			F449795B118A9E470047DB68 = F449795B118A9E470047DB68 /* PBXBookmark */;
-			F449795C118A9E470047DB68 = F449795C118A9E470047DB68 /* PBXBookmark */;
 			F449795D118A9E470047DB68 = F449795D118A9E470047DB68 /* PBXBookmark */;
-			F44979D2118B35C40047DB68 = F44979D2118B35C40047DB68 /* PBXTextBookmark */;
-			F44979FB118B43340047DB68 = F44979FB118B43340047DB68 /* PBXTextBookmark */;
-			F44979FC118B43340047DB68 = F44979FC118B43340047DB68 /* PBXTextBookmark */;
-			F44979FF118B43340047DB68 = F44979FF118B43340047DB68 /* PBXTextBookmark */;
 			F466430E117D189C00BFC470 = F466430E117D189C00BFC470 /* PBXTextBookmark */;
+			F47DC37911A34B0F00C7EAE9 = F47DC37911A34B0F00C7EAE9 /* PBXTextBookmark */;
+			F47DC37B11A34B0F00C7EAE9 = F47DC37B11A34B0F00C7EAE9 /* PBXTextBookmark */;
+			F47DC37C11A34B0F00C7EAE9 = F47DC37C11A34B0F00C7EAE9 /* PBXTextBookmark */;
+			F47DC37D11A34B0F00C7EAE9 = F47DC37D11A34B0F00C7EAE9 /* PBXTextBookmark */;
+			F47DC37E11A34B0F00C7EAE9 = F47DC37E11A34B0F00C7EAE9 /* PBXTextBookmark */;
+			F47DC38011A34B0F00C7EAE9 = F47DC38011A34B0F00C7EAE9 /* PBXBookmark */;
+			F47DC38111A34B0F00C7EAE9 = F47DC38111A34B0F00C7EAE9 /* PBXBookmark */;
+			F47DC38211A34B0F00C7EAE9 = F47DC38211A34B0F00C7EAE9 /* PBXBookmark */;
+			F47DC38311A34B0F00C7EAE9 = F47DC38311A34B0F00C7EAE9 /* PBXBookmark */;
 			F4841DD61172CC2E0034AF4B = F4841DD61172CC2E0034AF4B /* PBXTextBookmark */;
 			F4841DD81172CC2E0034AF4B = F4841DD81172CC2E0034AF4B /* PBXTextBookmark */;
 			F4841E9F117369E80034AF4B = F4841E9F117369E80034AF4B /* PBXTextBookmark */;
 			F49A11ED1184DE0D005E3D0E = F49A11ED1184DE0D005E3D0E /* PBXBookmark */;
 			F49A11EE1184DE0D005E3D0E = F49A11EE1184DE0D005E3D0E /* PBXBookmark */;
 			F49A11EF1184DE0D005E3D0E = F49A11EF1184DE0D005E3D0E /* PBXBookmark */;
-			F49A11F01184DE0D005E3D0E = F49A11F01184DE0D005E3D0E /* PBXBookmark */;
-			F49A11F11184DE0D005E3D0E = F49A11F11184DE0D005E3D0E /* PBXBookmark */;
-			F49A11F21184DE0D005E3D0E = F49A11F21184DE0D005E3D0E /* PBXBookmark */;
-			F49A11F41184DE0D005E3D0E = F49A11F41184DE0D005E3D0E /* PlistBookmark */;
 			F49A11F61184DE0D005E3D0E = F49A11F61184DE0D005E3D0E /* PBXBookmark */;
-			F49D097D11962CBA00CE2D63 = F49D097D11962CBA00CE2D63 /* PBXTextBookmark */;
-			F49D097E11962CBA00CE2D63 = F49D097E11962CBA00CE2D63 /* PBXTextBookmark */;
-			F49D098411962CD700CE2D63 = F49D098411962CD700CE2D63 /* PBXTextBookmark */;
+			F4EC3A5C11A35E150056CE51 = F4EC3A5C11A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A5D11A35E150056CE51 = F4EC3A5D11A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A5E11A35E150056CE51 = F4EC3A5E11A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A5F11A35E150056CE51 = F4EC3A5F11A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A6011A35E150056CE51 = F4EC3A6011A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A6111A35E150056CE51 = F4EC3A6111A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A6211A35E150056CE51 = F4EC3A6211A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A6311A35E150056CE51 = F4EC3A6311A35E150056CE51 /* PBXTextBookmark */;
+			F4EC3A7511A448DE0056CE51 = F4EC3A7511A448DE0056CE51 /* PBXTextBookmark */;
 			F4F69B19117545FA00CBAF6E = F4F69B19117545FA00CBAF6E /* PBXTextBookmark */;
 			F4F69B981176572E00CBAF6E = F4F69B981176572E00CBAF6E /* PBXTextBookmark */;
 			F4F69C52117693AE00CBAF6E = F4F69C52117693AE00CBAF6E /* PBXTextBookmark */;
-			F4FEF1FB11928ACB00E51E9E = F4FEF1FB11928ACB00E51E9E /* PBXTextBookmark */;
-			F4FEF1FC11928ACB00E51E9E = F4FEF1FC11928ACB00E51E9E /* PBXBookmark */;
-			F4FEF1FD11928ACB00E51E9E = F4FEF1FD11928ACB00E51E9E /* PBXBookmark */;
-			F4FEF1FE11928ACB00E51E9E = F4FEF1FE11928ACB00E51E9E /* PBXTextBookmark */;
 			F4FEF1FF11928ACB00E51E9E = F4FEF1FF11928ACB00E51E9E /* PBXTextBookmark */;
 			F4FEF20011928ACB00E51E9E = F4FEF20011928ACB00E51E9E /* PBXTextBookmark */;
-			F4FEF20111928ACB00E51E9E = F4FEF20111928ACB00E51E9E /* PBXTextBookmark */;
 			F4FEF20F11928D1E00E51E9E = F4FEF20F11928D1E00E51E9E /* PBXTextBookmark */;
-			F4FEF22011928F7100E51E9E = F4FEF22011928F7100E51E9E /* PBXTextBookmark */;
 		};
 		sourceControlManager = F425BACA1172404300D8A1F4 /* Source Control */;
 		userBuildSettings = {
 	};
 	F40FCA41117EBBC4002A9011 /* AboutViewController.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {915, 578}}";
+			sepNavIntBoundsRect = "{{0, 0}, {988, 522}}";
 			sepNavSelRange = "{233, 0}";
 			sepNavVisRange = "{0, 233}";
 		};
 	};
 	F41158681178CE190082BD37 /* SineMaker.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {803, 510}}";
-			sepNavSelRange = "{317, 0}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 528}}";
+			sepNavSelRange = "{58, 0}";
 			sepNavVisRange = "{0, 510}";
 		};
 	};
 	F41158691178CE190082BD37 /* SineMaker.m */ = {
 		uiCtxt = {
-			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{687, 365}\";\n            s = 0;\n        },\n                {\n            r = \"{1305, 1056}\";\n            s = 0;\n        },\n                {\n            r = \"{2392, 364}\";\n            s = 0;\n        },\n                {\n            r = \"{2781, 2592}\";\n            s = 0;\n        },\n                {\n            r = \"{5398, 37}\";\n            s = 0;\n        },\n                {\n            r = \"{5475, 25}\";\n            s = 0;\n        },\n                {\n            r = \"{5540, 28}\";\n            s = 0;\n        },\n                {\n            r = \"{5605, 197}\";\n            s = 0;\n        },\n                {\n            r = \"{5840, 23}\";\n            s = 0;\n        },\n                {\n            r = \"{6026, 296}\";\n            s = 0;\n        },\n                {\n            r = \"{6366, 252}\";\n            s = 0;\n        },\n                {\n            r = \"{6658, 117}\";\n            s = 0;\n        },\n                {\n            r = \"{6796, 20}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 6824}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {874, 845}}";
-			sepNavSelRange = "{1394, 0}";
-			sepNavVisRange = "{594, 871}";
+			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{687, 365}\";\n            s = 0;\n        },\n                {\n            r = \"{1305, 1056}\";\n            s = 0;\n        },\n                {\n            r = \"{5030, 37}\";\n            s = 0;\n        },\n                {\n            r = \"{5107, 25}\";\n            s = 0;\n        },\n                {\n            r = \"{5172, 28}\";\n            s = 0;\n        },\n                {\n            r = \"{5237, 197}\";\n            s = 0;\n        },\n                {\n            r = \"{5472, 23}\";\n            s = 0;\n        },\n                {\n            r = \"{5658, 296}\";\n            s = 0;\n        },\n                {\n            r = \"{5998, 252}\";\n            s = 0;\n        },\n                {\n            r = \"{6290, 117}\";\n            s = 0;\n        },\n                {\n            r = \"{6428, 20}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 6456}\";\n    s = 0;\n}";
+			sepNavIntBoundsRect = "{{0, 0}, {978, 1898}}";
+			sepNavSelRange = "{1898, 0}";
+			sepNavVisRange = "{0, 971}";
 		};
 	};
-	F4156B3A1189170400660B62 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F40FCA41117EBBC4002A9011 /* AboutViewController.h */;
-		name = "AboutViewController.h: 17";
-		rLen = 0;
-		rLoc = 233;
-		rType = 0;
-		vrLen = 233;
-		vrLoc = 0;
-	};
 	F425BAC01172402400D8A1F4 /* WiiNunchuck */ = {
 		isa = PBXExecutable;
 		activeArgIndices = (
 	};
 	F425BACC1172406900D8A1F4 /* MainViewController.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {803, 1508}}";
-			sepNavSelRange = "{1754, 0}";
-			sepNavVisRange = "{1377, 1479}";
+			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{861, 917}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 3276}\";\n    s = 0;\n}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 1092}}";
+			sepNavSelRange = "{657, 13}";
+			sepNavVisRange = "{865, 1489}";
 			sepNavWindowFrame = "{{38, 28}, {1357, 824}}";
 		};
 	};
 	F425BACD1172406900D8A1F4 /* MainViewController.mm */ = {
 		uiCtxt = {
-			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{953, 78}\";\n            s = 0;\n        },\n                {\n            r = \"{3185, 783}\";\n            s = 0;\n        },\n                {\n            r = \"{3993, 483}\";\n            s = 0;\n        },\n                {\n            r = \"{4509, 400}\";\n            s = 0;\n        },\n                {\n            r = \"{4980, 386}\";\n            s = 0;\n        },\n                {\n            r = \"{5731, 157}\";\n            s = 0;\n        },\n                {\n            r = \"{6830, 1714}\";\n            s = 0;\n        },\n                {\n            r = \"{8568, 873}\";\n            s = 0;\n        },\n                {\n            r = \"{9465, 1819}\";\n            s = 0;\n        },\n                {\n            r = \"{12199, 22}\";\n            s = 0;\n        },\n                {\n            r = \"{13115, 1182}\";\n            s = 0;\n        },\n                {\n            r = \"{14389, 155}\";\n            s = 0;\n        },\n                {\n            r = \"{14571, 83}\";\n            s = 0;\n        },\n                {\n            r = \"{14675, 300}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 14984}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {803, 2899}}";
-			sepNavSelRange = "{3012, 0}";
-			sepNavVisRange = "{2733, 666}";
+			sepNavIntBoundsRect = "{{0, 0}, {988, 7865}}";
+			sepNavSelRange = "{16201, 0}";
+			sepNavVisRange = "{14768, 528}";
 			sepNavWindowFrame = "{{15, 49}, {1357, 824}}";
 		};
 	};
 	F425BACF1172407600D8A1F4 /* SettingsViewController.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {803, 624}}";
-			sepNavSelRange = "{501, 0}";
-			sepNavVisRange = "{89, 1173}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 624}}";
+			sepNavSelRange = "{569, 0}";
+			sepNavVisRange = "{0, 1127}";
 		};
 	};
 	F425BAD01172407600D8A1F4 /* SettingsViewController.mm */ = {
 		uiCtxt = {
 			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{535, 754}\";\n            s = 0;\n        },\n                {\n            r = \"{1376, 37}\";\n            s = 0;\n        },\n                {\n            r = \"{1460, 439}\";\n            s = 0;\n        },\n                {\n            r = \"{1942, 485}\";\n            s = 0;\n        },\n                {\n            r = \"{2888, 497}\";\n            s = 0;\n        },\n                {\n            r = \"{3444, 115}\";\n            s = 0;\n        },\n                {\n            r = \"{3651, 155}\";\n            s = 0;\n        },\n                {\n            r = \"{3833, 83}\";\n            s = 0;\n        },\n                {\n            r = \"{3937, 22}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 3968}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {720, 871}}";
-			sepNavSelRange = "{1132, 12}";
-			sepNavVisRange = "{774, 407}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 936}}";
+			sepNavSelRange = "{1150, 0}";
+			sepNavVisRange = "{51, 931}";
 			sepNavWindowFrame = "{{15, 49}, {1357, 824}}";
 		};
 	};
 	F428F45D119A375D00097DF4 /* avTouchController.h */ = {
 		uiCtxt = {
 			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{196, 597}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 1915}\";\n    s = 0;\n}";
-			sepNavIntBoundsRect = "{{0, 0}, {988, 429}}";
-			sepNavSelRange = "{85, 0}";
-			sepNavVisRange = "{0, 820}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 503}}";
+			sepNavSelRange = "{24, 0}";
+			sepNavVisRange = "{0, 1319}";
 		};
 	};
 	F428F45E119A375D00097DF4 /* avTouchController.mm */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1118, 4225}}";
-			sepNavSelRange = "{1855, 0}";
-			sepNavVisRange = "{1889, 444}";
+			sepNavFolds = "{\n    c =     (\n                {\n            r = \"{3480, 89}\";\n            s = 0;\n        },\n                {\n            r = \"{3621, 183}\";\n            s = 0;\n        },\n                {\n            r = \"{3857, 59}\";\n            s = 0;\n        },\n                {\n            r = \"{3968, 181}\";\n            s = 0;\n        },\n                {\n            r = \"{4202, 59}\";\n            s = 0;\n        },\n                {\n            r = \"{4314, 40}\";\n            s = 0;\n        },\n                {\n            r = \"{4409, 70}\";\n            s = 0;\n        },\n                {\n            r = \"{4534, 4}\";\n            s = 0;\n        },\n                {\n            r = \"{4558, 303}\";\n            s = 0;\n        },\n                {\n            r = \"{4909, 107}\";\n            s = 0;\n        },\n                {\n            r = \"{5035, 106}\";\n            s = 0;\n        },\n                {\n            r = \"{5203, 197}\";\n            s = 0;\n        },\n                {\n            r = \"{5437, 615}\";\n            s = 0;\n        },\n                {\n            r = \"{6087, 241}\";\n            s = 0;\n        },\n                {\n            r = \"{6549, 443}\";\n            s = 0;\n        }\n    );\n    r = \"{0, 8825}\";\n    s = 0;\n}";
+			sepNavIntBoundsRect = "{{0, 0}, {968, 3003}}";
+			sepNavSelRange = "{214, 0}";
+			sepNavVisRange = "{0, 1221}";
 			sepNavWindowFrame = "{{9, 4}, {1431, 874}}";
 		};
 	};
 			sepNavVisRange = "{5759, 483}";
 		};
 	};
-	F428F470119A387D00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F460119A375D00097DF4 /* CALevelMeter.mm */;
-		name = "CALevelMeter.mm: 53";
-		rLen = 0;
-		rLoc = 2443;
-		rType = 0;
-		vrLen = 408;
-		vrLoc = 2172;
-	};
-	F428F471119A387D00097DF4 /* XCBuildMessageTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "Invalid conversion from 'void*' to 'LevelMeterColorThreshold*'";
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		fallbackIsa = XCBuildMessageTextBookmark;
-		rLen = 1;
-		rLoc = 227;
-		rType = 1;
-	};
-	F428F472119A387D00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 277";
-		rLen = 0;
-		rLoc = 5845;
-		rType = 0;
-		vrLen = 644;
-		vrLoc = 7824;
-	};
-	F428F47C119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F41158691178CE190082BD37 /* SineMaker.m */;
-		name = "SineMaker.m: 252";
-		rLen = 0;
-		rLoc = 6618;
-		rType = 0;
-		vrLen = 6167;
-		vrLoc = 657;
-	};
-	F428F47D119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F425BACF1172407600D8A1F4 /* SettingsViewController.h */;
-		name = "SettingsViewController.h: 21";
-		rLen = 0;
-		rLoc = 501;
-		rType = 0;
-		vrLen = 1114;
-		vrLoc = 148;
-	};
-	F428F47E119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F425BACC1172406900D8A1F4 /* MainViewController.h */;
-		name = "MainViewController.h: 19";
-		rLen = 0;
-		rLoc = 471;
-		rType = 0;
-		vrLen = 801;
-		vrLoc = 0;
-	};
-	F428F47F119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F425BACD1172406900D8A1F4 /* MainViewController.mm */;
-		name = "MainViewController.mm: 391";
-		rLen = 0;
-		rLoc = 11284;
-		rType = 0;
-		vrLen = 7304;
-		vrLoc = 729;
-	};
-	F428F480119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1576;
-		vrLoc = 85;
-	};
-	F428F481119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 1D3623240D0F684500981E51 /* WiiNunchuckAppDelegate.h */;
-		name = "WiiNunchuckAppDelegate.h: 8";
-		rLen = 0;
-		rLoc = 148;
-		rType = 0;
-		vrLen = 946;
-		vrLoc = 0;
-	};
-	F428F482119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 36";
-		rLen = 0;
-		rLoc = 740;
-		rType = 0;
-		vrLen = 1471;
-		vrLoc = 491;
-	};
-	F428F483119A388400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 45";
-		rLen = 0;
-		rLoc = 1135;
-		rType = 0;
-		vrLen = 1038;
-		vrLoc = 1159;
-	};
-	F428F494119A398100097DF4 /* XCBuildMessageTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "Invalid conversion from 'void*' to 'LevelMeterColorThreshold*'";
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		fallbackIsa = XCBuildMessageTextBookmark;
-		rLen = 1;
-		rLoc = 227;
-		rType = 1;
-	};
-	F428F495119A398100097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 277";
-		rLen = 0;
-		rLoc = 5892;
-		rType = 0;
-		vrLen = 715;
-		vrLoc = 7898;
-	};
-	F428F4AA119A39CB00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 228";
-		rLen = 0;
-		rLoc = 5892;
-		rType = 0;
-		vrLen = 483;
-		vrLoc = 5759;
-	};
-	F428F4AF119A3A1500097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 228";
-		rLen = 0;
-		rLoc = 5892;
-		rType = 0;
-		vrLen = 483;
-		vrLoc = 5759;
-	};
-	F428F4B0119A3A1E00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1490;
-		vrLoc = 0;
-	};
 	F428F4B1119A3A1E00097DF4 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
 		vrLen = 1248;
 		vrLoc = 0;
 	};
-	F428F4B4119A3A1E00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 18";
-		rLen = 0;
-		rLoc = 497;
-		rType = 0;
-		vrLen = 832;
-		vrLoc = 1025;
-	};
-	F428F4B5119A3A1E00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 234";
-		rLen = 0;
-		rLoc = 7800;
-		rType = 0;
-		vrLen = 2516;
-		vrLoc = 3761;
-	};
-	F428F4C1119A3B0300097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 228";
-		rLen = 0;
-		rLoc = 5892;
-		rType = 0;
-		vrLen = 483;
-		vrLoc = 5759;
-	};
-	F428F4C3119A3B0800097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 234";
-		rLen = 0;
-		rLoc = 7800;
-		rType = 0;
-		vrLen = 2546;
-		vrLoc = 3730;
-	};
-	F428F4C4119A3B0800097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1490;
-		vrLoc = 0;
-	};
 	F428F4C6119A3BCE00097DF4 /* avTouchViewController.h */ = {
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {874, 545}}";
 			sepNavVisRange = "{0, 648}";
 		};
 	};
-	F428F4CE119A3CDD00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 234";
-		rLen = 0;
-		rLoc = 7800;
-		rType = 0;
-		vrLen = 2503;
-		vrLoc = 3729;
-	};
-	F428F4CF119A3CDD00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1490;
-		vrLoc = 0;
-	};
-	F428F4D0119A3CDD00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1385;
-		vrLoc = 0;
-	};
-	F428F4E6119A3D5C00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1548;
-		vrLoc = 0;
-	};
-	F428F4E7119A3D5C00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C6119A3BCE00097DF4 /* avTouchViewController.h */;
-		name = "avTouchViewController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 157;
-		vrLoc = 0;
-	};
-	F428F4E8119A3D5C00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C7119A3BCE00097DF4 /* avTouchViewController.m */;
-		name = "avTouchViewController.m: 4";
-		rLen = 90;
-		rLoc = 102;
-		rType = 0;
-		vrLen = 1215;
-		vrLoc = 0;
-	};
-	F428F4E9119A3D5C00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C7119A3BCE00097DF4 /* avTouchViewController.m */;
-		name = "avTouchViewController.m: 14";
-		rLen = 0;
-		rLoc = 104;
-		rType = 0;
-		vrLen = 1223;
-		vrLoc = 0;
-	};
-	F428F4EE119A3E9700097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C7119A3BCE00097DF4 /* avTouchViewController.m */;
-		name = "avTouchViewController.m: 14";
-		rLen = 0;
-		rLoc = 104;
-		rType = 0;
-		vrLen = 1223;
-		vrLoc = 0;
-	};
 	F428F50A119A448400097DF4 /* PBXBookmark */ = {
 		isa = PBXBookmark;
 		fRef = F428F4EF119A3EA900097DF4 /* wiichuck_with_arduino.jpg */;
 	};
-	F428F50B119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45E119A375D00097DF4 /* avTouchController.mm */;
-		name = "avTouchController.mm: 175";
-		rLen = 9;
-		rLoc = 1483;
-		rType = 0;
-		vrLen = 994;
-		vrLoc = 1024;
-	};
 	F428F50C119A448400097DF4 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = F428F460119A375D00097DF4 /* CALevelMeter.mm */;
 		vrLen = 6067;
 		vrLoc = 2469;
 	};
-	F428F50D119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F45D119A375D00097DF4 /* avTouchController.h */;
-		name = "avTouchController.h: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 1548;
-		vrLoc = 0;
-	};
-	F428F50E119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C7119A3BCE00097DF4 /* avTouchViewController.m */;
-		name = "avTouchViewController.m: 6";
-		rLen = 0;
-		rLoc = 102;
-		rType = 0;
-		vrLen = 1044;
-		vrLoc = 0;
-	};
-	F428F50F119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F41158691178CE190082BD37 /* SineMaker.m */;
-		name = "SineMaker.m: 252";
-		rLen = 0;
-		rLoc = 6618;
-		rType = 0;
-		vrLen = 6230;
-		vrLoc = 594;
-	};
-	F428F510119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C6119A3BCE00097DF4 /* avTouchViewController.h */;
-		name = "avTouchViewController.h: 8";
-		rLen = 0;
-		rLoc = 147;
-		rType = 0;
-		vrLen = 379;
-		vrLoc = 0;
-	};
-	F428F511119A448400097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F4C6119A3BCE00097DF4 /* avTouchViewController.h */;
-		name = "avTouchViewController.h: 12";
-		rLen = 0;
-		rLoc = 149;
-		rType = 0;
-		vrLen = 378;
-		vrLoc = 0;
-	};
-	F428F51C119A5F0F00097DF4 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = F428F46A119A385B00097DF4 /* LevelMeter.m */;
-		name = "LevelMeter.m: 228";
-		rLen = 0;
-		rLoc = 5892;