Full Code of libpd/pd-for-ios for AI

master be1593bf83b6 cached
150 files
574.4 KB
180.4k tokens
25 symbols
1 requests
Download .txt
Showing preview only (617K chars total). Download the full file or copy to clipboard to get everything.
Repository: libpd/pd-for-ios
Branch: master
Commit: be1593bf83b6
Files: 150
Total size: 574.4 KB

Directory structure:
gitextract_v8cb9u9o/

├── .gitignore
├── .gitmodules
├── DispatcherSample/
│   ├── DispatcherSample/
│   │   ├── DispatcherSample-Info.plist
│   │   ├── DispatcherSample-Prefix.pch
│   │   ├── DispatcherSampleAppDelegate.h
│   │   ├── DispatcherSampleAppDelegate.m
│   │   ├── DispatcherSampleViewController.h
│   │   ├── DispatcherSampleViewController.m
│   │   ├── SampleListener.h
│   │   ├── SampleListener.m
│   │   ├── en.lproj/
│   │   │   ├── DispatcherSampleViewController.xib
│   │   │   ├── InfoPlist.strings
│   │   │   └── MainWindow.xib
│   │   └── main.m
│   ├── DispatcherSample.xcodeproj/
│   │   └── project.pbxproj
│   ├── DispatcherSampleTests/
│   │   ├── DispatcherSampleTests-Info.plist
│   │   ├── DispatcherSampleTests-Prefix.pch
│   │   ├── DispatcherSampleTests.h
│   │   ├── DispatcherSampleTests.m
│   │   └── en.lproj/
│   │       └── InfoPlist.strings
│   └── patch/
│       └── sample.pd
├── LICENSE.txt
├── PdLinkSample/
│   ├── PdLinkSample/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── ViewController.h
│   │   ├── ViewController.m
│   │   ├── main.m
│   │   └── ping.pd
│   └── PdLinkSample.xcodeproj/
│       └── project.pbxproj
├── PdSettings/
│   ├── PdSettings/
│   │   ├── PdSettings-Info.plist
│   │   ├── PdSettings-Prefix.pch
│   │   ├── PdSettingsAppDelegate.h
│   │   ├── PdSettingsAppDelegate.m
│   │   ├── PdSettingsViewController.h
│   │   ├── PdSettingsViewController.m
│   │   ├── RDebug.h
│   │   ├── en.lproj/
│   │   │   └── InfoPlist.strings
│   │   └── main.m
│   ├── PdSettings.xcodeproj/
│   │   └── project.pbxproj
│   ├── ReadMe.txt
│   └── Resources/
│       ├── testinput.pd
│       └── testoutput.pd
├── PdTest01/
│   ├── Classes/
│   │   ├── PdTest01AppDelegate.h
│   │   ├── PdTest01AppDelegate.m
│   │   ├── PdTest01ViewController.h
│   │   └── PdTest01ViewController.m
│   ├── PdTest01-Info.plist
│   ├── PdTest01.xcodeproj/
│   │   └── project.pbxproj
│   ├── PdTest01_Prefix.pch
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── test.pd
│   └── main.m
├── PdTest02/
│   ├── Classes/
│   │   ├── PdTestAppDelegate.h
│   │   ├── PdTestAppDelegate.m
│   │   ├── PdTestViewController.h
│   │   └── PdTestViewController.m
│   ├── LoopWithExtern.pd
│   ├── MainWindow.xib
│   ├── PdTest02-Info.plist
│   ├── PdTest02.xcodeproj/
│   │   └── project.pbxproj
│   ├── PdTest02_Prefix.pch
│   ├── PdTestViewController.xib
│   ├── ReadMe.txt
│   ├── Storyboard.storyboard
│   └── main.m
├── PolyPatch/
│   ├── Classes/
│   │   ├── PatchTableViewCell.h
│   │   ├── PatchTableViewCell.m
│   │   ├── PolyPatchAppDelegate.h
│   │   ├── PolyPatchAppDelegate.m
│   │   ├── PolyPatchViewController.h
│   │   └── PolyPatchViewController.m
│   ├── PolyPatch-Info.plist
│   ├── PolyPatch.xcodeproj/
│   │   └── project.pbxproj
│   ├── PolyPatch_Prefix.pch
│   ├── RCommon.h
│   ├── ReadMe.txt
│   ├── Resources/
│   │   ├── synctest.pd
│   │   ├── test.pd
│   │   └── test2.pd
│   └── main.m
├── README.md
├── SlidePad/
│   ├── Classes/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Controllers/
│   │   │   ├── PolyPatchController.h
│   │   │   ├── PolyPatchController.m
│   │   │   ├── SlidePadViewController.h
│   │   │   └── SlidePadViewController.m
│   │   └── Views/
│   │       ├── Fingerboard.h
│   │       ├── Fingerboard.m
│   │       ├── QControl.h
│   │       ├── QControl.m
│   │       ├── QRadioDial.h
│   │       ├── QRadioDial.m
│   │       ├── QSlider.h
│   │       ├── QSlider.m
│   │       ├── TouchDiamond.h
│   │       └── TouchDiamond.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── Info.plist
│   ├── SlidePad.xcodeproj/
│   │   └── project.pbxproj
│   └── pd/
│       ├── classicsub-voice.pd
│       ├── load-meter.pd
│       ├── main.pd
│       └── wavetabler-voice.pd
├── SlidePadBasic/
│   ├── Classes/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Controllers/
│   │   │   ├── SlidePadBasicViewController.h
│   │   │   └── SlidePadBasicViewController.m
│   │   └── Views/
│   │       ├── Fingerboard.h
│   │       ├── Fingerboard.m
│   │       ├── TouchDiamond.h
│   │       └── TouchDiamond.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── Info.plist
│   ├── SlidePadBasic.xcodeproj/
│   │   └── project.pbxproj
│   └── pd/
│       ├── load-meter.pd
│       └── wavetabler.pd
├── WaveTables/
│   ├── Classes/
│   │   ├── PdArray.h
│   │   ├── PdArray.m
│   │   ├── RootViewController.h
│   │   ├── RootViewController.m
│   │   ├── WaveTableView.h
│   │   ├── WaveTableView.m
│   │   ├── WaveTablesAppDelegate.h
│   │   └── WaveTablesAppDelegate.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   ├── Info.plist
│   │   ├── resynthesis.pd
│   │   ├── util/
│   │   │   ├── for.pd
│   │   │   └── print-array.pd
│   │   └── wavetable.pd
│   └── WaveTables.xcodeproj/
│       └── project.pbxproj
└── abl_link/
    ├── README.md
    └── ios/
        ├── PdLinkAudioUnit.h
        ├── PdLinkAudioUnit.m
        ├── abl_link.c
        └── abl_link.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
#### `.gitignore`
# Xcode noise
*/build/*
*.mode1v3
*.pbxuser
*.perspective
*.perspectivev3
*.mode1v3
*.mode2v3
project.xcworkspace
xcuserdata

# osx noise
.DS_Store
profile

*.o
*.pd_darwin
*.dylib


================================================
FILE: .gitmodules
================================================
[submodule "libpd"]
	path = libpd
	url = git://github.com/libpd/libpd.git


================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSample-Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundleExecutable</key>
	<string>${EXECUTABLE_NAME}</string>
	<key>CFBundleIconFile</key>
	<string></string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1.1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>NSMainNibFile</key>
	<string>MainWindow</string>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
</dict>
</plist>


================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSample-Prefix.pch
================================================
//
// Prefix header for all source files of the 'DispatcherSample' target in the 'DispatcherSample' project
//

#import <Availability.h>

#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif


================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSampleAppDelegate.h
================================================
//
//  DispatcherSampleAppDelegate.h
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import <UIKit/UIKit.h>
#import "PdAudioController.h"
#import "PdDispatcher.h"

@class DispatcherSampleViewController;

@interface DispatcherSampleAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    DispatcherSampleViewController *viewController;
    
	PdAudioController *audioController;
    PdDispatcher *dispatcher;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet DispatcherSampleViewController *viewController;

@end




================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSampleAppDelegate.m
================================================
//
//  DispatcherSampleAppDelegate.m
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import "DispatcherSampleAppDelegate.h"
#import "DispatcherSampleViewController.h"
#import "PdBase.h"
#import "PdDispatcher.h"

@implementation DispatcherSampleAppDelegate

@synthesize window;
@synthesize viewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    window.rootViewController = self.viewController;
    [window makeKeyAndVisible];
    
    dispatcher = [[PdDispatcher alloc] init];
    [PdBase setDelegate:dispatcher];
    
	audioController = [[PdAudioController alloc] init];
    [audioController configureAmbientWithSampleRate:48000 numberChannels:2 mixingEnabled:YES];
    [audioController print];
    
    [viewController pdSetup];
    
    audioController.active = YES;
    return YES;
}

- (void)dealloc {
    [PdBase setDelegate:nil];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

- (void)applicationWillResignActive:(UIApplication *)application {
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
}

- (void)applicationWillTerminate:(UIApplication *)application {
}

@end


================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSampleViewController.h
================================================
//
//  DispatcherSampleViewController.h
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import <UIKit/UIKit.h>
#import "PdDispatcher.h"

@interface DispatcherSampleViewController : UIViewController {
    UILabel *fooLabel;
    UILabel *barLabel;
}

@property(nonatomic, retain) IBOutlet UILabel *fooLabel;
@property(nonatomic, retain) IBOutlet UILabel *barLabel;

-(void)pdSetup;

@end


================================================
FILE: DispatcherSample/DispatcherSample/DispatcherSampleViewController.m
================================================
//
//  DispatcherSampleViewController.m
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import "DispatcherSampleAppDelegate.h"
#import "DispatcherSampleViewController.h"
#import "SampleListener.h"

#define APP_DELEGATE ((DispatcherSampleAppDelegate *)[UIApplication sharedApplication].delegate)

@implementation DispatcherSampleViewController

@synthesize fooLabel;
@synthesize barLabel;

-(void)pdSetup {
    PdDispatcher *dispatcher = (PdDispatcher *)[PdBase delegate];
    SampleListener *listener = [[SampleListener alloc] initWithLabel:fooLabel];
    [dispatcher addListener:listener forSource:@"foo"];
    listener = [[SampleListener alloc] initWithLabel:barLabel];
    [dispatcher addListener:listener forSource:@"bar"];
    listener = [[SampleListener alloc] initWithLabel:nil];
    [dispatcher addListener:listener forSource:@"baz"];
    
	[PdBase openFile:@"sample.pd" path:[[NSBundle mainBundle] resourcePath]];
}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end


================================================
FILE: DispatcherSample/DispatcherSample/SampleListener.h
================================================
//
//  SampleListener.h
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import <Foundation/Foundation.h>
#import "PdBase.h"
#import "PdDispatcher.h"

@interface SampleListener : NSObject<PdListener> {
    UILabel *label;
}

- (id)initWithLabel:(UILabel *)label;
@end


================================================
FILE: DispatcherSample/DispatcherSample/SampleListener.m
================================================
//
//  SampleListener.m
//  DispatcherSample
//
//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)
//
//  For information on usage and redistribution, and for a DISCLAIMER OF ALL
//  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
//

#import "SampleListener.h"


@implementation SampleListener

- (id)initWithLabel:(UILabel *)s {
    self = [super init];
    if (self) {
        label = s;
    }
    return self;
}

- (void)receiveBangFromSource:(NSString *)source {
    NSLog(@"Listener %@: bang\n", label);
}

- (void)receiveFloat:(float)val fromSource:(NSString *)source {
    NSLog(@"Listener %@: float %f\n", label, val);
    NSString *s = [NSString stringWithFormat:@"%f", val];
    [label setText:s];
}

- (void)receiveSymbol:(NSString *)s fromSource:(NSString *)source {
    NSLog(@"Listener %@: symbol %@\n", label, s);
}

- (void)receiveList:(NSArray *)v fromSource:(NSString *)source {
    NSLog(@"Listener %@: list %@\n", label, v);
}

- (void)receiveMessage:(NSString *)message withArguments:(NSArray *)arguments fromSource:(NSString *)source {
    NSLog(@"Listener %@: message %@,  %@\n", label, message, arguments);
}

@end


================================================
FILE: DispatcherSample/DispatcherSample/en.lproj/DispatcherSampleViewController.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
	<data>
		<int key="IBDocument.SystemTarget">1056</int>
		<string key="IBDocument.SystemVersion">10K549</string>
		<string key="IBDocument.InterfaceBuilderVersion">1306</string>
		<string key="IBDocument.AppKitVersion">1038.36</string>
		<string key="IBDocument.HIToolboxVersion">461.00</string>
		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
			<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
			<string key="NS.object.0">301</string>
		</object>
		<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<string>IBProxyObject</string>
			<string>IBUIView</string>
			<string>IBUILabel</string>
		</object>
		<object class="NSArray" key="IBDocument.PluginDependencies">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
		</object>
		<object class="NSMutableDictionary" key="IBDocument.Metadata">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<object class="NSArray" key="dict.sortedKeys" id="0">
				<bool key="EncodedWithXMLCoder">YES</bool>
			</object>
			<reference key="dict.values" ref="0"/>
		</object>
		<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<object class="IBProxyObject" id="372490531">
				<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
			<object class="IBProxyObject" id="843779117">
				<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
			<object class="IBUIView" id="774585933">
				<reference key="NSNextResponder"/>
				<int key="NSvFlags">274</int>
				<object class="NSMutableArray" key="NSSubviews">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<object class="IBUILabel" id="217145765">
						<reference key="NSNextResponder" ref="774585933"/>
						<int key="NSvFlags">292</int>
						<string key="NSFrame">{{61, 69}, {168, 32}}</string>
						<reference key="NSSuperview" ref="774585933"/>
						<reference key="NSWindow"/>
						<reference key="NSNextKeyView" ref="197754745"/>
						<bool key="IBUIOpaque">NO</bool>
						<bool key="IBUIClipsSubviews">YES</bool>
						<int key="IBUIContentMode">7</int>
						<bool key="IBUIUserInteractionEnabled">NO</bool>
						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
						<string key="IBUIText">fooLabel</string>
						<object class="NSFont" key="IBUIFont" id="410543268">
							<string key="NSName">Helvetica</string>
							<double key="NSSize">17</double>
							<int key="NSfFlags">16</int>
						</object>
						<object class="NSColor" key="IBUITextColor" id="707737151">
							<int key="NSColorSpace">1</int>
							<bytes key="NSRGB">MCAwIDAAA</bytes>
						</object>
						<nil key="IBUIHighlightedColor"/>
						<int key="IBUIBaselineAdjustment">1</int>
						<float key="IBUIMinimumFontSize">10</float>
					</object>
					<object class="IBUILabel" id="197754745">
						<reference key="NSNextResponder" ref="774585933"/>
						<int key="NSvFlags">292</int>
						<string key="NSFrame">{{61, 201}, {168, 32}}</string>
						<reference key="NSSuperview" ref="774585933"/>
						<reference key="NSWindow"/>
						<reference key="NSNextKeyView"/>
						<bool key="IBUIOpaque">NO</bool>
						<bool key="IBUIClipsSubviews">YES</bool>
						<int key="IBUIContentMode">7</int>
						<bool key="IBUIUserInteractionEnabled">NO</bool>
						<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
						<string key="IBUIText">barLabel</string>
						<reference key="IBUIFont" ref="410543268"/>
						<reference key="IBUITextColor" ref="707737151"/>
						<nil key="IBUIHighlightedColor"/>
						<int key="IBUIBaselineAdjustment">1</int>
						<float key="IBUIMinimumFontSize">10</float>
					</object>
				</object>
				<string key="NSFrame">{{0, 20}, {320, 460}}</string>
				<reference key="NSSuperview"/>
				<reference key="NSWindow"/>
				<reference key="NSNextKeyView" ref="217145765"/>
				<object class="NSColor" key="IBUIBackgroundColor">
					<int key="NSColorSpace">3</int>
					<bytes key="NSWhite">MC43NQA</bytes>
					<object class="NSColorSpace" key="NSCustomColorSpace">
						<int key="NSID">2</int>
					</object>
				</object>
				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
				<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
		</object>
		<object class="IBObjectContainer" key="IBDocument.Objects">
			<object class="NSMutableArray" key="connectionRecords">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">view</string>
						<reference key="source" ref="372490531"/>
						<reference key="destination" ref="774585933"/>
					</object>
					<int key="connectionID">7</int>
				</object>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">barLabel</string>
						<reference key="source" ref="372490531"/>
						<reference key="destination" ref="197754745"/>
					</object>
					<int key="connectionID">10</int>
				</object>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">fooLabel</string>
						<reference key="source" ref="372490531"/>
						<reference key="destination" ref="217145765"/>
					</object>
					<int key="connectionID">11</int>
				</object>
			</object>
			<object class="IBMutableOrderedSet" key="objectRecords">
				<object class="NSArray" key="orderedObjects">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<object class="IBObjectRecord">
						<int key="objectID">0</int>
						<reference key="object" ref="0"/>
						<reference key="children" ref="1000"/>
						<nil key="parent"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">-1</int>
						<reference key="object" ref="372490531"/>
						<reference key="parent" ref="0"/>
						<string key="objectName">File's Owner</string>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">-2</int>
						<reference key="object" ref="843779117"/>
						<reference key="parent" ref="0"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">6</int>
						<reference key="object" ref="774585933"/>
						<object class="NSMutableArray" key="children">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<reference ref="217145765"/>
							<reference ref="197754745"/>
						</object>
						<reference key="parent" ref="0"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">8</int>
						<reference key="object" ref="217145765"/>
						<reference key="parent" ref="774585933"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">9</int>
						<reference key="object" ref="197754745"/>
						<reference key="parent" ref="774585933"/>
					</object>
				</object>
			</object>
			<object class="NSMutableDictionary" key="flattenedProperties">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="NSArray" key="dict.sortedKeys">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<string>-1.CustomClassName</string>
					<string>-2.CustomClassName</string>
					<string>6.IBEditorWindowLastContentRect</string>
					<string>6.IBPluginDependency</string>
					<string>8.IBPluginDependency</string>
					<string>9.IBPluginDependency</string>
				</object>
				<object class="NSMutableArray" key="dict.values">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<string>DispatcherSampleViewController</string>
					<string>UIResponder</string>
					<string>{{239, 654}, {320, 480}}</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
				</object>
			</object>
			<object class="NSMutableDictionary" key="unlocalizedProperties">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<reference key="dict.sortedKeys" ref="0"/>
				<reference key="dict.values" ref="0"/>
			</object>
			<nil key="activeLocalization"/>
			<object class="NSMutableDictionary" key="localizations">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<reference key="dict.sortedKeys" ref="0"/>
				<reference key="dict.values" ref="0"/>
			</object>
			<nil key="sourceID"/>
			<int key="maxID">11</int>
		</object>
		<object class="IBClassDescriber" key="IBDocument.Classes">
			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="IBPartialClassDescription">
					<string key="className">DispatcherSampleViewController</string>
					<string key="superclassName">UIViewController</string>
					<object class="NSMutableDictionary" key="outlets">
						<bool key="EncodedWithXMLCoder">YES</bool>
						<object class="NSArray" key="dict.sortedKeys">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>barLabel</string>
							<string>fooLabel</string>
						</object>
						<object class="NSMutableArray" key="dict.values">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>UILabel</string>
							<string>UILabel</string>
						</object>
					</object>
					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
						<bool key="EncodedWithXMLCoder">YES</bool>
						<object class="NSArray" key="dict.sortedKeys">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>barLabel</string>
							<string>fooLabel</string>
						</object>
						<object class="NSMutableArray" key="dict.values">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<object class="IBToOneOutletInfo">
								<string key="name">barLabel</string>
								<string key="candidateClassName">UILabel</string>
							</object>
							<object class="IBToOneOutletInfo">
								<string key="name">fooLabel</string>
								<string key="candidateClassName">UILabel</string>
							</object>
						</object>
					</object>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBProjectSource</string>
						<string key="minorKey">./Classes/DispatcherSampleViewController.h</string>
					</object>
				</object>
			</object>
		</object>
		<int key="IBDocument.localizationMode">0</int>
		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
			<integer value="3100" key="NS.object.0"/>
		</object>
		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
		<int key="IBDocument.defaultPropertyAccessControl">3</int>
		<string key="IBCocoaTouchPluginVersion">301</string>
	</data>
</archive>


================================================
FILE: DispatcherSample/DispatcherSample/en.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */



================================================
FILE: DispatcherSample/DispatcherSample/en.lproj/MainWindow.xib
================================================
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
	<data>
		<int key="IBDocument.SystemTarget">1024</int>
		<string key="IBDocument.SystemVersion">10D571</string>
		<string key="IBDocument.InterfaceBuilderVersion">786</string>
		<string key="IBDocument.AppKitVersion">1038.29</string>
		<string key="IBDocument.HIToolboxVersion">460.00</string>
		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
			<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
			<string key="NS.object.0">112</string>
		</object>
		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<integer value="10"/>
		</object>
		<object class="NSArray" key="IBDocument.PluginDependencies">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
		</object>
		<object class="NSMutableDictionary" key="IBDocument.Metadata">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<object class="NSArray" key="dict.sortedKeys" id="0">
				<bool key="EncodedWithXMLCoder">YES</bool>
			</object>
			<object class="NSMutableArray" key="dict.values">
				<bool key="EncodedWithXMLCoder">YES</bool>
			</object>
		</object>
		<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
			<bool key="EncodedWithXMLCoder">YES</bool>
			<object class="IBProxyObject" id="841351856">
				<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
			<object class="IBProxyObject" id="427554174">
				<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
			<object class="IBUICustomObject" id="664661524">
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
			</object>
			<object class="IBUIViewController" id="943309135">
				<string key="IBUINibName">DispatcherSampleViewController</string>
				<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
				<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
					<int key="interfaceOrientation">1</int>
				</object>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
				<bool key="IBUIHorizontal">NO</bool>
			</object>
			<object class="IBUIWindow" id="117978783">
				<nil key="NSNextResponder"/>
				<int key="NSvFlags">292</int>
				<string key="NSFrameSize">{320, 480}</string>
				<object class="NSColor" key="IBUIBackgroundColor">
					<int key="NSColorSpace">1</int>
					<bytes key="NSRGB">MSAxIDEAA</bytes>
				</object>
				<bool key="IBUIOpaque">NO</bool>
				<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
				<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
				<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
				<bool key="IBUIResizesToFullScreen">YES</bool>
			</object>
		</object>
		<object class="IBObjectContainer" key="IBDocument.Objects">
			<object class="NSMutableArray" key="connectionRecords">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">delegate</string>
						<reference key="source" ref="841351856"/>
						<reference key="destination" ref="664661524"/>
					</object>
					<int key="connectionID">4</int>
				</object>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">viewController</string>
						<reference key="source" ref="664661524"/>
						<reference key="destination" ref="943309135"/>
					</object>
					<int key="connectionID">11</int>
				</object>
				<object class="IBConnectionRecord">
					<object class="IBCocoaTouchOutletConnection" key="connection">
						<string key="label">window</string>
						<reference key="source" ref="664661524"/>
						<reference key="destination" ref="117978783"/>
					</object>
					<int key="connectionID">14</int>
				</object>
			</object>
			<object class="IBMutableOrderedSet" key="objectRecords">
				<object class="NSArray" key="orderedObjects">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<object class="IBObjectRecord">
						<int key="objectID">0</int>
						<reference key="object" ref="0"/>
						<reference key="children" ref="1000"/>
						<nil key="parent"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">-1</int>
						<reference key="object" ref="841351856"/>
						<reference key="parent" ref="0"/>
						<string key="objectName">File's Owner</string>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">3</int>
						<reference key="object" ref="664661524"/>
						<reference key="parent" ref="0"/>
						<string key="objectName">DispatcherSample App Delegate</string>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">-2</int>
						<reference key="object" ref="427554174"/>
						<reference key="parent" ref="0"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">10</int>
						<reference key="object" ref="943309135"/>
						<reference key="parent" ref="0"/>
					</object>
					<object class="IBObjectRecord">
						<int key="objectID">12</int>
						<reference key="object" ref="117978783"/>
						<reference key="parent" ref="0"/>
					</object>
				</object>
			</object>
			<object class="NSMutableDictionary" key="flattenedProperties">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="NSArray" key="dict.sortedKeys">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<string>-1.CustomClassName</string>
					<string>-2.CustomClassName</string>
					<string>10.CustomClassName</string>
					<string>10.IBEditorWindowLastContentRect</string>
					<string>10.IBPluginDependency</string>
					<string>12.IBEditorWindowLastContentRect</string>
					<string>12.IBPluginDependency</string>
					<string>3.CustomClassName</string>
					<string>3.IBPluginDependency</string>
				</object>
				<object class="NSMutableArray" key="dict.values">
					<bool key="EncodedWithXMLCoder">YES</bool>
					<string>UIApplication</string>
					<string>UIResponder</string>
					<string>DispatcherSampleViewController</string>
					<string>{{234, 376}, {320, 480}}</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
					<string>{{525, 346}, {320, 480}}</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
					<string>DispatcherSampleAppDelegate</string>
					<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
				</object>
			</object>
			<object class="NSMutableDictionary" key="unlocalizedProperties">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<reference key="dict.sortedKeys" ref="0"/>
				<object class="NSMutableArray" key="dict.values">
					<bool key="EncodedWithXMLCoder">YES</bool>
				</object>
			</object>
			<nil key="activeLocalization"/>
			<object class="NSMutableDictionary" key="localizations">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<reference key="dict.sortedKeys" ref="0"/>
				<object class="NSMutableArray" key="dict.values">
					<bool key="EncodedWithXMLCoder">YES</bool>
				</object>
			</object>
			<nil key="sourceID"/>
			<int key="maxID">15</int>
		</object>
		<object class="IBClassDescriber" key="IBDocument.Classes">
			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="IBPartialClassDescription">
					<string key="className">UIWindow</string>
					<string key="superclassName">UIView</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBUserSource</string>
						<string key="minorKey"/>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">DispatcherSampleAppDelegate</string>
					<string key="superclassName">NSObject</string>
					<object class="NSMutableDictionary" key="outlets">
						<bool key="EncodedWithXMLCoder">YES</bool>
						<object class="NSArray" key="dict.sortedKeys">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>viewController</string>
							<string>window</string>
						</object>
						<object class="NSMutableArray" key="dict.values">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>DispatcherSampleViewController</string>
							<string>UIWindow</string>
						</object>
					</object>
					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
						<bool key="EncodedWithXMLCoder">YES</bool>
						<object class="NSArray" key="dict.sortedKeys">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<string>viewController</string>
							<string>window</string>
						</object>
						<object class="NSMutableArray" key="dict.values">
							<bool key="EncodedWithXMLCoder">YES</bool>
							<object class="IBToOneOutletInfo">
								<string key="name">viewController</string>
								<string key="candidateClassName">DispatcherSampleViewController</string>
							</object>
							<object class="IBToOneOutletInfo">
								<string key="name">window</string>
								<string key="candidateClassName">UIWindow</string>
							</object>
						</object>
					</object>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBProjectSource</string>
						<string key="minorKey">DispatcherSampleAppDelegate.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">DispatcherSampleAppDelegate</string>
					<string key="superclassName">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBUserSource</string>
						<string key="minorKey"/>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">DispatcherSampleViewController</string>
					<string key="superclassName">UIViewController</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBProjectSource</string>
						<string key="minorKey">DispatcherSampleViewController.h</string>
					</object>
				</object>
			</object>
			<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
				<bool key="EncodedWithXMLCoder">YES</bool>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="356479594">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIApplication</string>
					<string key="superclassName">UIResponder</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIResponder</string>
					<string key="superclassName">NSObject</string>
					<reference key="sourceIdentifier" ref="356479594"/>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UISearchBar</string>
					<string key="superclassName">UIView</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UISearchDisplayController</string>
					<string key="superclassName">NSObject</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIView</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIView</string>
					<string key="superclassName">UIResponder</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIViewController</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIViewController</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIViewController</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIViewController</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIViewController</string>
					<string key="superclassName">UIResponder</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
					</object>
				</object>
				<object class="IBPartialClassDescription">
					<string key="className">UIWindow</string>
					<string key="superclassName">UIView</string>
					<object class="IBClassDescriptionSource" key="sourceIdentifier">
						<string key="majorKey">IBFrameworkSource</string>
						<string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
					</object>
				</object>
			</object>
		</object>
		<int key="IBDocument.localizationMode">0</int>
		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
			<integer value="1024" key="NS.object.0"/>
		</object>
		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
			<integer value="3100" key="NS.object.0"/>
		</object>
		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
		<string key="IBDocument.LastKnownRelativeProjectPath">DispatcherSample.xcodeproj</string>
		<int key="IBDocument.defaultPropertyAccessControl">3</int>
		<string key="IBCocoaTouchPluginVersion">112</string>
	</data>
</archive>


================================================
FILE: DispatcherSample/DispatcherSample/main.m
================================================
//
//  main.m
//  DispatcherSample
//
//  Created by Peter Brinkmann on 8/28/11.
//  Updated by Dan Wilcox 2018.
//

#import <UIKit/UIKit.h>
#import "DispatcherSampleAppDelegate.h"

int main(int argc, char *argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass(DispatcherSampleAppDelegate.class));
    }
}


================================================
FILE: DispatcherSample/DispatcherSample.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		5811EFC21482EB29006867D5 /* libpd-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5811EFBF1482EA65006867D5 /* libpd-ios.a */; };
		5811EFC41482EB2F006867D5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5811EFC31482EB2F006867D5 /* AudioToolbox.framework */; };
		5811EFC61482EB33006867D5 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5811EFC51482EB33006867D5 /* AVFoundation.framework */; };
		581A4B7714114A4E00C6AC68 /* sample.pd in Resources */ = {isa = PBXBuildFile; fileRef = 581A4B7514114A4E00C6AC68 /* sample.pd */; };
		58ABCE3F140ACCEE003C36F3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE3E140ACCEE003C36F3 /* UIKit.framework */; };
		58ABCE41140ACCEE003C36F3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE40140ACCEE003C36F3 /* Foundation.framework */; };
		58ABCE43140ACCEE003C36F3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE42140ACCEE003C36F3 /* CoreGraphics.framework */; };
		58ABCE49140ACCEE003C36F3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 58ABCE47140ACCEE003C36F3 /* InfoPlist.strings */; };
		58ABCE4C140ACCEF003C36F3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 58ABCE4B140ACCEF003C36F3 /* main.m */; };
		58ABCE4F140ACCEF003C36F3 /* DispatcherSampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 58ABCE4E140ACCEF003C36F3 /* DispatcherSampleAppDelegate.m */; };
		58ABCE52140ACCEF003C36F3 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 58ABCE50140ACCEF003C36F3 /* MainWindow.xib */; };
		58ABCE55140ACCEF003C36F3 /* DispatcherSampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 58ABCE54140ACCEF003C36F3 /* DispatcherSampleViewController.m */; };
		58ABCE58140ACCEF003C36F3 /* DispatcherSampleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 58ABCE56140ACCEF003C36F3 /* DispatcherSampleViewController.xib */; };
		58ABCE5F140ACCEF003C36F3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE3E140ACCEE003C36F3 /* UIKit.framework */; };
		58ABCE60140ACCEF003C36F3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE40140ACCEE003C36F3 /* Foundation.framework */; };
		58ABCE61140ACCEF003C36F3 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58ABCE42140ACCEE003C36F3 /* CoreGraphics.framework */; };
		58ABCE69140ACCEF003C36F3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 58ABCE67140ACCEF003C36F3 /* InfoPlist.strings */; };
		58ABCE6C140ACCEF003C36F3 /* DispatcherSampleTests.h in Resources */ = {isa = PBXBuildFile; fileRef = 58ABCE6B140ACCEF003C36F3 /* DispatcherSampleTests.h */; };
		58ABCE6E140ACCEF003C36F3 /* DispatcherSampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 58ABCE6D140ACCEF003C36F3 /* DispatcherSampleTests.m */; };
		58ABCE8E140AD038003C36F3 /* SampleListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 58ABCE8D140AD038003C36F3 /* SampleListener.m */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		11A30E611611509500786A6D /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 119013AB1486450C00086F19;
			remoteInfo = "libpd-osx";
		};
		3063EF1D2107F18C00C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D36D1FAA200100C67F08;
			remoteInfo = "libpd-ios-multi";
		};
		3063EF1F2107F18C00C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D2FA1FAA1FCC00C67F08;
			remoteInfo = "libpd-osx-multi";
		};
		5811EFBE1482EA65006867D5 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = D2AAC07E0554694100DB518D;
			remoteInfo = "libpd-ios";
		};
		5811EFC01482EB24006867D5 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
			proxyType = 1;
			remoteGlobalIDString = D2AAC07D0554694100DB518D;
			remoteInfo = "libpd-ios";
		};
		58ABCE62140ACCEF003C36F3 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 58ABCE31140ACCEE003C36F3 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 58ABCE39140ACCEE003C36F3;
			remoteInfo = DispatcherSample;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		5811EFB71482EA65006867D5 /* libpd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libpd.xcodeproj; path = ../libpd/libpd.xcodeproj; sourceTree = "<group>"; };
		5811EFC31482EB2F006867D5 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
		5811EFC51482EB33006867D5 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
		581A4B7514114A4E00C6AC68 /* sample.pd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sample.pd; sourceTree = "<group>"; };
		58ABCE3A140ACCEE003C36F3 /* DispatcherSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DispatcherSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
		58ABCE3E140ACCEE003C36F3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
		58ABCE40140ACCEE003C36F3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
		58ABCE42140ACCEE003C36F3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
		58ABCE46140ACCEE003C36F3 /* DispatcherSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DispatcherSample-Info.plist"; sourceTree = "<group>"; };
		58ABCE48140ACCEE003C36F3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
		58ABCE4A140ACCEE003C36F3 /* DispatcherSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DispatcherSample-Prefix.pch"; sourceTree = "<group>"; };
		58ABCE4B140ACCEF003C36F3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		58ABCE4D140ACCEF003C36F3 /* DispatcherSampleAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DispatcherSampleAppDelegate.h; sourceTree = "<group>"; };
		58ABCE4E140ACCEF003C36F3 /* DispatcherSampleAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DispatcherSampleAppDelegate.m; sourceTree = "<group>"; };
		58ABCE51140ACCEF003C36F3 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = "<group>"; };
		58ABCE53140ACCEF003C36F3 /* DispatcherSampleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DispatcherSampleViewController.h; sourceTree = "<group>"; };
		58ABCE54140ACCEF003C36F3 /* DispatcherSampleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DispatcherSampleViewController.m; sourceTree = "<group>"; };
		58ABCE57140ACCEF003C36F3 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/DispatcherSampleViewController.xib; sourceTree = "<group>"; };
		58ABCE5E140ACCEF003C36F3 /* DispatcherSampleTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DispatcherSampleTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
		58ABCE66140ACCEF003C36F3 /* DispatcherSampleTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "DispatcherSampleTests-Info.plist"; sourceTree = "<group>"; };
		58ABCE68140ACCEF003C36F3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
		58ABCE6A140ACCEF003C36F3 /* DispatcherSampleTests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DispatcherSampleTests-Prefix.pch"; sourceTree = "<group>"; };
		58ABCE6B140ACCEF003C36F3 /* DispatcherSampleTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DispatcherSampleTests.h; sourceTree = "<group>"; };
		58ABCE6D140ACCEF003C36F3 /* DispatcherSampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DispatcherSampleTests.m; sourceTree = "<group>"; };
		58ABCE8C140AD038003C36F3 /* SampleListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleListener.h; sourceTree = "<group>"; };
		58ABCE8D140AD038003C36F3 /* SampleListener.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SampleListener.m; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		58ABCE37140ACCEE003C36F3 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				5811EFC61482EB33006867D5 /* AVFoundation.framework in Frameworks */,
				5811EFC41482EB2F006867D5 /* AudioToolbox.framework in Frameworks */,
				5811EFC21482EB29006867D5 /* libpd-ios.a in Frameworks */,
				58ABCE3F140ACCEE003C36F3 /* UIKit.framework in Frameworks */,
				58ABCE41140ACCEE003C36F3 /* Foundation.framework in Frameworks */,
				58ABCE43140ACCEE003C36F3 /* CoreGraphics.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		58ABCE5A140ACCEF003C36F3 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				58ABCE5F140ACCEF003C36F3 /* UIKit.framework in Frameworks */,
				58ABCE60140ACCEF003C36F3 /* Foundation.framework in Frameworks */,
				58ABCE61140ACCEF003C36F3 /* CoreGraphics.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		5811EFB81482EA65006867D5 /* Products */ = {
			isa = PBXGroup;
			children = (
				5811EFBF1482EA65006867D5 /* libpd-ios.a */,
				11A30E621611509500786A6D /* libpd-osx.a */,
				3063EF1E2107F18C00C8A4A2 /* libpd-ios-multi.a */,
				3063EF202107F18C00C8A4A2 /* libpd-osx-multi.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		581A4B7314114A4E00C6AC68 /* patch */ = {
			isa = PBXGroup;
			children = (
				581A4B7514114A4E00C6AC68 /* sample.pd */,
			);
			path = patch;
			sourceTree = "<group>";
		};
		58ABCE2F140ACCEE003C36F3 = {
			isa = PBXGroup;
			children = (
				5811EFB71482EA65006867D5 /* libpd.xcodeproj */,
				581A4B7314114A4E00C6AC68 /* patch */,
				58ABCE44140ACCEE003C36F3 /* DispatcherSample */,
				58ABCE64140ACCEF003C36F3 /* DispatcherSampleTests */,
				58ABCE3D140ACCEE003C36F3 /* Frameworks */,
				58ABCE3B140ACCEE003C36F3 /* Products */,
			);
			sourceTree = "<group>";
		};
		58ABCE3B140ACCEE003C36F3 /* Products */ = {
			isa = PBXGroup;
			children = (
				58ABCE3A140ACCEE003C36F3 /* DispatcherSample.app */,
				58ABCE5E140ACCEF003C36F3 /* DispatcherSampleTests.octest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		58ABCE3D140ACCEE003C36F3 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				5811EFC51482EB33006867D5 /* AVFoundation.framework */,
				5811EFC31482EB2F006867D5 /* AudioToolbox.framework */,
				58ABCE3E140ACCEE003C36F3 /* UIKit.framework */,
				58ABCE40140ACCEE003C36F3 /* Foundation.framework */,
				58ABCE42140ACCEE003C36F3 /* CoreGraphics.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		58ABCE44140ACCEE003C36F3 /* DispatcherSample */ = {
			isa = PBXGroup;
			children = (
				58ABCE4D140ACCEF003C36F3 /* DispatcherSampleAppDelegate.h */,
				58ABCE4E140ACCEF003C36F3 /* DispatcherSampleAppDelegate.m */,
				58ABCE50140ACCEF003C36F3 /* MainWindow.xib */,
				58ABCE53140ACCEF003C36F3 /* DispatcherSampleViewController.h */,
				58ABCE54140ACCEF003C36F3 /* DispatcherSampleViewController.m */,
				58ABCE56140ACCEF003C36F3 /* DispatcherSampleViewController.xib */,
				58ABCE45140ACCEE003C36F3 /* Supporting Files */,
				58ABCE8C140AD038003C36F3 /* SampleListener.h */,
				58ABCE8D140AD038003C36F3 /* SampleListener.m */,
			);
			path = DispatcherSample;
			sourceTree = "<group>";
		};
		58ABCE45140ACCEE003C36F3 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				58ABCE46140ACCEE003C36F3 /* DispatcherSample-Info.plist */,
				58ABCE47140ACCEE003C36F3 /* InfoPlist.strings */,
				58ABCE4A140ACCEE003C36F3 /* DispatcherSample-Prefix.pch */,
				58ABCE4B140ACCEF003C36F3 /* main.m */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		58ABCE64140ACCEF003C36F3 /* DispatcherSampleTests */ = {
			isa = PBXGroup;
			children = (
				58ABCE6B140ACCEF003C36F3 /* DispatcherSampleTests.h */,
				58ABCE6D140ACCEF003C36F3 /* DispatcherSampleTests.m */,
				58ABCE65140ACCEF003C36F3 /* Supporting Files */,
			);
			path = DispatcherSampleTests;
			sourceTree = "<group>";
		};
		58ABCE65140ACCEF003C36F3 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				58ABCE66140ACCEF003C36F3 /* DispatcherSampleTests-Info.plist */,
				58ABCE67140ACCEF003C36F3 /* InfoPlist.strings */,
				58ABCE6A140ACCEF003C36F3 /* DispatcherSampleTests-Prefix.pch */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		58ABCE39140ACCEE003C36F3 /* DispatcherSample */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 58ABCE71140ACCEF003C36F3 /* Build configuration list for PBXNativeTarget "DispatcherSample" */;
			buildPhases = (
				58ABCE36140ACCEE003C36F3 /* Sources */,
				58ABCE37140ACCEE003C36F3 /* Frameworks */,
				58ABCE38140ACCEE003C36F3 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				5811EFC11482EB24006867D5 /* PBXTargetDependency */,
			);
			name = DispatcherSample;
			productName = DispatcherSample;
			productReference = 58ABCE3A140ACCEE003C36F3 /* DispatcherSample.app */;
			productType = "com.apple.product-type.application";
		};
		58ABCE5D140ACCEF003C36F3 /* DispatcherSampleTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 58ABCE74140ACCEF003C36F3 /* Build configuration list for PBXNativeTarget "DispatcherSampleTests" */;
			buildPhases = (
				58ABCE59140ACCEF003C36F3 /* Sources */,
				58ABCE5A140ACCEF003C36F3 /* Frameworks */,
				58ABCE5B140ACCEF003C36F3 /* Resources */,
				58ABCE5C140ACCEF003C36F3 /* ShellScript */,
			);
			buildRules = (
			);
			dependencies = (
				58ABCE63140ACCEF003C36F3 /* PBXTargetDependency */,
			);
			name = DispatcherSampleTests;
			productName = DispatcherSampleTests;
			productReference = 58ABCE5E140ACCEF003C36F3 /* DispatcherSampleTests.octest */;
			productType = "com.apple.product-type.bundle";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		58ABCE31140ACCEE003C36F3 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0930;
			};
			buildConfigurationList = 58ABCE34140ACCEE003C36F3 /* Build configuration list for PBXProject "DispatcherSample" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 58ABCE2F140ACCEE003C36F3;
			productRefGroup = 58ABCE3B140ACCEE003C36F3 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 5811EFB81482EA65006867D5 /* Products */;
					ProjectRef = 5811EFB71482EA65006867D5 /* libpd.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				58ABCE39140ACCEE003C36F3 /* DispatcherSample */,
				58ABCE5D140ACCEF003C36F3 /* DispatcherSampleTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		11A30E621611509500786A6D /* libpd-osx.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx.a";
			remoteRef = 11A30E611611509500786A6D /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF1E2107F18C00C8A4A2 /* libpd-ios-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios-multi.a";
			remoteRef = 3063EF1D2107F18C00C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF202107F18C00C8A4A2 /* libpd-osx-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx-multi.a";
			remoteRef = 3063EF1F2107F18C00C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		5811EFBF1482EA65006867D5 /* libpd-ios.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios.a";
			remoteRef = 5811EFBE1482EA65006867D5 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		58ABCE38140ACCEE003C36F3 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				58ABCE49140ACCEE003C36F3 /* InfoPlist.strings in Resources */,
				58ABCE52140ACCEF003C36F3 /* MainWindow.xib in Resources */,
				58ABCE58140ACCEF003C36F3 /* DispatcherSampleViewController.xib in Resources */,
				581A4B7714114A4E00C6AC68 /* sample.pd in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		58ABCE5B140ACCEF003C36F3 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				58ABCE69140ACCEF003C36F3 /* InfoPlist.strings in Resources */,
				58ABCE6C140ACCEF003C36F3 /* DispatcherSampleTests.h in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		58ABCE5C140ACCEF003C36F3 /* ShellScript */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputPaths = (
			);
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = /bin/sh;
			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		58ABCE36140ACCEE003C36F3 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				58ABCE4C140ACCEF003C36F3 /* main.m in Sources */,
				58ABCE4F140ACCEF003C36F3 /* DispatcherSampleAppDelegate.m in Sources */,
				58ABCE55140ACCEF003C36F3 /* DispatcherSampleViewController.m in Sources */,
				58ABCE8E140AD038003C36F3 /* SampleListener.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		58ABCE59140ACCEF003C36F3 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				58ABCE6E140ACCEF003C36F3 /* DispatcherSampleTests.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		5811EFC11482EB24006867D5 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			name = "libpd-ios";
			targetProxy = 5811EFC01482EB24006867D5 /* PBXContainerItemProxy */;
		};
		58ABCE63140ACCEF003C36F3 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 58ABCE39140ACCEE003C36F3 /* DispatcherSample */;
			targetProxy = 58ABCE62140ACCEF003C36F3 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		58ABCE47140ACCEE003C36F3 /* InfoPlist.strings */ = {
			isa = PBXVariantGroup;
			children = (
				58ABCE48140ACCEE003C36F3 /* en */,
			);
			name = InfoPlist.strings;
			sourceTree = "<group>";
		};
		58ABCE50140ACCEF003C36F3 /* MainWindow.xib */ = {
			isa = PBXVariantGroup;
			children = (
				58ABCE51140ACCEF003C36F3 /* en */,
			);
			name = MainWindow.xib;
			sourceTree = "<group>";
		};
		58ABCE56140ACCEF003C36F3 /* DispatcherSampleViewController.xib */ = {
			isa = PBXVariantGroup;
			children = (
				58ABCE57140ACCEF003C36F3 /* en */,
			);
			name = DispatcherSampleViewController.xib;
			sourceTree = "<group>";
		};
		58ABCE67140ACCEF003C36F3 /* InfoPlist.strings */ = {
			isa = PBXVariantGroup;
			children = (
				58ABCE68140ACCEF003C36F3 /* en */,
			);
			name = InfoPlist.strings;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		58ABCE6F140ACCEF003C36F3 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_VERSION = com.apple.compilers.llvmgcc42;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		58ABCE70140ACCEF003C36F3 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_VERSION = com.apple.compilers.llvmgcc42;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
				SDKROOT = iphoneos;
			};
			name = Release;
		};
		58ABCE72140ACCEF003C36F3 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_ARC = YES;
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "DispatcherSample/DispatcherSample-Prefix.pch";
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
				HEADER_SEARCH_PATHS = "";
				"HEADER_SEARCH_PATHS[arch=*]" = "";
				INFOPLIST_FILE = "DispatcherSample/DispatcherSample-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"\"$(SRCROOT)\"",
				);
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.DispatcherSample;
				PRODUCT_NAME = "$(TARGET_NAME)";
				USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../libpd/**";
				WRAPPER_EXTENSION = app;
			};
			name = Debug;
		};
		58ABCE73140ACCEF003C36F3 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_ARC = YES;
				COPY_PHASE_STRIP = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "DispatcherSample/DispatcherSample-Prefix.pch";
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
				HEADER_SEARCH_PATHS = "";
				"HEADER_SEARCH_PATHS[arch=*]" = "";
				INFOPLIST_FILE = "DispatcherSample/DispatcherSample-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"\"$(SRCROOT)\"",
				);
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.DispatcherSample;
				PRODUCT_NAME = "$(TARGET_NAME)";
				USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../libpd/**";
				VALIDATE_PRODUCT = YES;
				WRAPPER_EXTENSION = app;
			};
			name = Release;
		};
		58ABCE75140ACCEF003C36F3 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/DispatcherSample.app/DispatcherSample";
				CLANG_ENABLE_OBJC_WEAK = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
				);
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "DispatcherSampleTests/DispatcherSampleTests-Prefix.pch";
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
				INFOPLIST_FILE = "DispatcherSampleTests/DispatcherSampleTests-Info.plist";
				OTHER_LDFLAGS = (
					"-framework",
					SenTestingKit,
				);
				PRODUCT_BUNDLE_IDENTIFIER = "com.noisepages.nettoyeur.${PRODUCT_NAME:rfc1034identifier}";
				PRODUCT_NAME = "$(TARGET_NAME)";
				TEST_HOST = "$(BUNDLE_LOADER)";
				WRAPPER_EXTENSION = octest;
			};
			name = Debug;
		};
		58ABCE76140ACCEF003C36F3 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/DispatcherSample.app/DispatcherSample";
				CLANG_ENABLE_OBJC_WEAK = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(DEVELOPER_LIBRARY_DIR)/Frameworks",
				);
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "DispatcherSampleTests/DispatcherSampleTests-Prefix.pch";
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
				INFOPLIST_FILE = "DispatcherSampleTests/DispatcherSampleTests-Info.plist";
				OTHER_LDFLAGS = (
					"-framework",
					SenTestingKit,
				);
				PRODUCT_BUNDLE_IDENTIFIER = "com.noisepages.nettoyeur.${PRODUCT_NAME:rfc1034identifier}";
				PRODUCT_NAME = "$(TARGET_NAME)";
				TEST_HOST = "$(BUNDLE_LOADER)";
				WRAPPER_EXTENSION = octest;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		58ABCE34140ACCEE003C36F3 /* Build configuration list for PBXProject "DispatcherSample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				58ABCE6F140ACCEF003C36F3 /* Debug */,
				58ABCE70140ACCEF003C36F3 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		58ABCE71140ACCEF003C36F3 /* Build configuration list for PBXNativeTarget "DispatcherSample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				58ABCE72140ACCEF003C36F3 /* Debug */,
				58ABCE73140ACCEF003C36F3 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		58ABCE74140ACCEF003C36F3 /* Build configuration list for PBXNativeTarget "DispatcherSampleTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				58ABCE75140ACCEF003C36F3 /* Debug */,
				58ABCE76140ACCEF003C36F3 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 58ABCE31140ACCEE003C36F3 /* Project object */;
}


================================================
FILE: DispatcherSample/DispatcherSampleTests/DispatcherSampleTests-Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>${EXECUTABLE_NAME}</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: DispatcherSample/DispatcherSampleTests/DispatcherSampleTests-Prefix.pch
================================================
//
// Prefix header for all source files of the 'DispatcherSampleTests' target in the 'DispatcherSampleTests' project
//

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
#endif


================================================
FILE: DispatcherSample/DispatcherSampleTests/DispatcherSampleTests.h
================================================
//
//  DispatcherSampleTests.h
//  DispatcherSampleTests
//
//  Created by Peter Brinkmann on 8/28/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <SenTestingKit/SenTestingKit.h>


@interface DispatcherSampleTests : SenTestCase {
@private
    
}

@end


================================================
FILE: DispatcherSample/DispatcherSampleTests/DispatcherSampleTests.m
================================================
//
//  DispatcherSampleTests.m
//  DispatcherSampleTests
//
//  Created by Peter Brinkmann on 8/28/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "DispatcherSampleTests.h"


@implementation DispatcherSampleTests

- (void)setUp
{
    [super setUp];
    
    // Set-up code here.
}

- (void)tearDown
{
    // Tear-down code here.
    
    [super tearDown];
}

- (void)testExample
{
    STFail(@"Unit tests are not implemented yet in DispatcherSampleTests");
}

@end


================================================
FILE: DispatcherSample/DispatcherSampleTests/en.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */



================================================
FILE: DispatcherSample/patch/sample.pd
================================================
#N canvas 979 1230 450 300 10;
#X obj 52 13 loadbang;
#X obj 235 55 osc~ 220;
#X obj 233 93 dac~;
#X obj 34 61 metro 1000;
#X obj 117 85 timer;
#X obj 52 36 t b b;
#X obj 59 84 t b b;
#X obj 59 108 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 42 132 route 0 1;
#X obj 100 178 f;
#X obj 142 178 f;
#X floatatom 17 207 16 0 0 0 - - -;
#X floatatom 141 207 16 0 0 0 - - -;
#X obj 19 236 s bar;
#X obj 140 235 s foo;
#X obj 289 125 f 0;
#X obj 326 126 + 1;
#X msg 331 156 \$1 10 -0.123;
#X obj 331 183 s baz;
#X obj 243 160 print count;
#X connect 0 0 5 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 3 0 6 0;
#X connect 4 0 10 1;
#X connect 4 0 9 1;
#X connect 5 0 3 0;
#X connect 5 1 4 0;
#X connect 6 0 7 0;
#X connect 6 1 4 1;
#X connect 6 1 15 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 8 1 10 0;
#X connect 9 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 14 0;
#X connect 15 0 16 0;
#X connect 15 0 17 0;
#X connect 15 0 19 0;
#X connect 16 0 15 1;
#X connect 17 0 18 0;


================================================
FILE: LICENSE.txt
================================================
This software is copyrighted by Miller Puckette, Reality Jockey, Peter
Brinkmann, Google Inc, and others.

 The following terms (the "Standard Improved BSD License") apply to all files
associated with the software unless explicitly disclaimed in individual files:

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above  
   copyright notice, this list of conditions and the following 
   disclaimer in the documentation and/or other materials provided
   with the distribution.
3. The name of the author may not be used to endorse or promote
   products derived from this software without specific prior 
   written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: PdLinkSample/PdLinkSample/AppDelegate.h
================================================
/*
 *  For information on usage and redistribution, and for a DISCLAIMER OF ALL
 *  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 *
 */

#import <UIKit/UIKit.h>
#import "PdAudioController.h"
#include "ABLLink.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) PdAudioController *pd;

- (ABLLinkRef)getLinkRef;

@end



================================================
FILE: PdLinkSample/PdLinkSample/AppDelegate.m
================================================
/*
 *  For information on usage and redistribution, and for a DISCLAIMER OF ALL
 *  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 *
 */

#import "AppDelegate.h"
#import "PdLinkAudioUnit.h"

@interface AppDelegate ()

@end

@implementation AppDelegate {
    PdLinkAudioUnit *pd_au_;
    PdAudioController *pd_;
    ABLLinkRef linkRef_;
}

@synthesize pd = pd_;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    linkRef_ = ABLLinkNew(120);
    pd_au_ = [[PdLinkAudioUnit alloc] initWithLinkRef:linkRef_];
    pd_ = [[PdAudioController alloc] initWithAudioUnit:pd_au_];
    PdAudioStatus status = [pd_ configureAmbientWithSampleRate:44100 numberChannels:2 mixingEnabled:YES];
    if (status == PdAudioOK) {
        NSLog(@"Configured PdAudioController instance.");
    } else {
        NSLog(@"Failed to configure PdAudioController instance.");
    }
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    pd_.active = NO;
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    pd_.active = YES;
}

- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    ABLLinkDelete(linkRef_);
}

- (ABLLinkRef)getLinkRef {
    return linkRef_;
}

@end


================================================
FILE: PdLinkSample/PdLinkSample/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: PdLinkSample/PdLinkSample/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="53" y="375"/>
        </scene>
    </scenes>
</document>


================================================
FILE: PdLinkSample/PdLinkSample/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="tne-QT-ifu">
            <objects>
                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Tempo" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="58y-3V-cYd">
                                <frame key="frameInset" minX="20" minY="84" width="282" height="21"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Resolution" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SDI-JT-j7F">
                                <frame key="frameInset" minX="20" minY="183" width="282" height="21"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Quantum" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8ok-Bc-SDf">
                                <frame key="frameInset" minX="20" minY="289" width="282" height="21"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="120" minValue="20" maxValue="360" translatesAutoresizingMaskIntoConstraints="NO" id="eK0-65-Sz7">
                                <frame key="frameInset" minX="18" minY="113" width="286" height="31"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <connections>
                                    <action selector="tempoChanged:" destination="BYZ-38-t0r" eventType="valueChanged" id="rNK-WH-Scp"/>
                                </connections>
                            </slider>
                            <slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="1" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="YP3-Xy-SaD">
                                <frame key="frameInset" minX="18" minY="212" width="286" height="31"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <connections>
                                    <action selector="resolutionChanged:" destination="BYZ-38-t0r" eventType="valueChanged" id="cp1-to-dhS"/>
                                </connections>
                            </slider>
                            <slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="4" minValue="1" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="HNj-uK-g19">
                                <frame key="frameInset" minX="18" minY="310" width="286" height="31"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <connections>
                                    <action selector="quantumChanged:" destination="BYZ-38-t0r" eventType="valueChanged" id="h68-dE-Lgx"/>
                                </connections>
                            </slider>
                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HY8-tG-OrM">
                                <frame key="frameInset" minX="20" minY="402" width="30" height="30"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <state key="normal" title="Link"/>
                                <connections>
                                    <action selector="showLinkSettings:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Jcv-cT-sgT"/>
                                </connections>
                            </button>
                        </subviews>
                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                    </view>
                    <connections>
                        <outlet property="quantumLabel" destination="8ok-Bc-SDf" id="6H0-r6-8Ry"/>
                        <outlet property="quantumSlider" destination="HNj-uK-g19" id="Bht-TK-461"/>
                        <outlet property="resolutionLabel" destination="SDI-JT-j7F" id="yAY-9D-jhU"/>
                        <outlet property="resolutionSlider" destination="YP3-Xy-SaD" id="mYa-BH-Xgk"/>
                        <outlet property="tempoLabel" destination="58y-3V-cYd" id="hgZ-2O-IrB"/>
                        <outlet property="tempoSlider" destination="eK0-65-Sz7" id="RCP-v9-5Rq"/>
                    </connections>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="218" y="212"/>
        </scene>
    </scenes>
</document>


================================================
FILE: PdLinkSample/PdLinkSample/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIMainStoryboardFile</key>
	<string>Main</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: PdLinkSample/PdLinkSample/ViewController.h
================================================
/*
 *  For information on usage and redistribution, and for a DISCLAIMER OF ALL
 *  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 *
 */

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *tempoLabel;
@property (weak, nonatomic) IBOutlet UILabel *resolutionLabel;
@property (weak, nonatomic) IBOutlet UILabel *quantumLabel;
@property (weak, nonatomic) IBOutlet UISlider *tempoSlider;
@property (weak, nonatomic) IBOutlet UISlider *resolutionSlider;
@property (weak, nonatomic) IBOutlet UISlider *quantumSlider;

@end



================================================
FILE: PdLinkSample/PdLinkSample/ViewController.m
================================================
/*
 *  For information on usage and redistribution, and for a DISCLAIMER OF ALL
 *  WARRANTIES, see the file, "LICENSE.txt," in this distribution.
 *
 */

#import "ViewController.h"
#import "AppDelegate.h"
#import "PdAudioUnit.h"
#import "PdBase.h"
#import "PdFile.h"
#import "PdDispatcher.h"
#include "ABLLinkSettingsViewController.h"
#include "ABLLink.h"

@interface ViewController ()
- (void)updateTempo:(int)tempo;
@end

@implementation ViewController {
    PdDispatcher *dispatcher_;
    PdFile *patch_;
    UIViewController *linkSettings_;
}

void sessionTempoCallback(double tempo, void *context) {
    ViewController *vc = (__bridge ViewController*) context;
    [vc updateTempo:tempo];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    dispatcher_ = [[PdDispatcher alloc] init];
    [PdBase setDelegate:dispatcher_];
    patch_ = [PdFile openFileNamed:@"ping.pd" path:[[NSBundle mainBundle] resourcePath]];
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    ABLLinkRef linkRef = [appDelegate getLinkRef];
    linkSettings_ = [ABLLinkSettingsViewController instance:linkRef];
    ABLLinkSetSessionTempoCallback(linkRef, sessionTempoCallback, (__bridge void *)(self));
    ABLLinkTimelineRef timeline = ABLLinkCaptureAppTimeline(linkRef);
    [self updateTempo:ABLLinkGetTempo(timeline)];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)tempoChanged:(id)sender {
    UISlider *slider = (UISlider*) sender;
    int tempo = slider.value;
    [self updateTempo:tempo];
    [PdBase sendFloat:tempo toReceiver:@"tempo"];
}

- (IBAction)resolutionChanged:(id)sender {
    UISlider *slider = (UISlider*) sender;
    int res = slider.value;
    self.resolutionLabel.text = [NSString stringWithFormat:@"Resolution: %d", res];
    [PdBase sendFloat:(int)res toReceiver:@"resolution"];
}

- (IBAction)quantumChanged:(id)sender {
    UISlider *slider = (UISlider*) sender;
    int quantum = slider.value;
    self.quantumLabel.text = [NSString stringWithFormat:@"Quantum: %d", quantum];
    [PdBase sendFloat:quantum toReceiver:@"quantum"];
}

-(IBAction)showLinkSettings:(id)sender
{
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:linkSettings_];
    // this will present a view controller as a popover in iPad and a modal VC on iPhone
    linkSettings_.navigationItem.rightBarButtonItem =
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                  target:self
                                                  action:@selector(hideLinkSettings:)];
    
    navController.modalPresentationStyle = UIModalPresentationPopover;
    
    UIPopoverPresentationController *popC = navController.popoverPresentationController;
    popC.permittedArrowDirections = UIPopoverArrowDirectionAny;
    popC.sourceRect = [sender frame];
    
    // we recommend using a size of 320x400 for the display in a popover
    linkSettings_.preferredContentSize = CGSizeMake(320.f, 400.f);
    
    UIButton *button = (UIButton *)sender;
    popC.sourceView = button.superview;
    
    [self presentViewController:navController animated:YES completion:nil];
}

- (void)hideLinkSettings:(id)sender
{
#pragma unused(sender)
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)updateTempo:(int)tempo {
    self.tempoLabel.text = [NSString stringWithFormat:@"Tempo: %d", tempo];
}

@end



================================================
FILE: PdLinkSample/PdLinkSample/main.m
================================================
//
//  main.m
//  PdLinkSample
//
//  Created by Peter Brinkmann on 10/17/16.
//  Copyright © 2016 Peter Brinkmann. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass(AppDelegate.class));
    }
}


================================================
FILE: PdLinkSample/PdLinkSample/ping.pd
================================================
#N canvas 612 242 343 426 10;
#X obj 94 307 osc~ 440;
#X obj 73 331 *~;
#X obj 73 375 dac~;
#X obj 29 289 vline~;
#X msg 29 268 1 \, 0 250;
#X obj 250 197 f;
#X obj 214 226 f;
#X obj 214 248 print phase;
#X obj 73 353 *~ 0.25;
#X obj 250 219 print beat;
#X msg 56 64 tempo \$1;
#X msg 119 64 resolution \$1;
#X msg 216 64 reset 0 \$1;
#X floatatom 56 45 5 0 0 2 tempo tempo -, f 5;
#X floatatom 119 46 5 0 0 2 resolution resolution -, f 5;
#X floatatom 216 46 5 0 0 2 quantum quantum -, f 5;
#X obj 135 284 f 440;
#X obj 123 112 abl_link~ 1 0 4 140;
#X obj 94 284 f 880;
#X obj 119 150 t b f b b;
#X obj 103 211 select 0;
#X obj 103 234 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 148 233 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 112 258 print downbeat;
#X obj 234 134 print tempo;
#X connect 0 0 1 1;
#X connect 1 0 8 0;
#X connect 3 0 1 0;
#X connect 4 0 3 0;
#X connect 4 0 3 0;
#X connect 5 0 9 0;
#X connect 6 0 7 0;
#X connect 8 0 2 0;
#X connect 8 0 2 1;
#X connect 10 0 17 0;
#X connect 11 0 17 0;
#X connect 12 0 17 0;
#X connect 13 0 10 0;
#X connect 14 0 11 0;
#X connect 15 0 12 0;
#X connect 16 0 0 0;
#X connect 17 0 19 0;
#X connect 17 1 6 1;
#X connect 17 2 5 1;
#X connect 17 3 24 0;
#X connect 18 0 0 0;
#X connect 19 0 4 0;
#X connect 19 1 20 0;
#X connect 19 2 6 0;
#X connect 19 3 5 0;
#X connect 20 0 21 0;
#X connect 20 1 22 0;
#X connect 21 0 18 0;
#X connect 21 0 23 0;
#X connect 22 0 16 0;


================================================
FILE: PdLinkSample/PdLinkSample.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		583AB1511DB5A8CF001E5913 /* PdLinkAudioUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 583AB1501DB5A8CF001E5913 /* PdLinkAudioUnit.m */; };
		583AB1531DB5A905001E5913 /* libABLLink.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 583AB1521DB5A905001E5913 /* libABLLink.a */; };
		583AB1551DB5AA66001E5913 /* ping.pd in Resources */ = {isa = PBXBuildFile; fileRef = 583AB1541DB5AA66001E5913 /* ping.pd */; };
		586152721DB5A55800A5C131 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 586152711DB5A55800A5C131 /* main.m */; };
		586152751DB5A55800A5C131 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 586152741DB5A55800A5C131 /* AppDelegate.m */; };
		586152781DB5A55800A5C131 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 586152771DB5A55800A5C131 /* ViewController.m */; };
		5861527B1DB5A55800A5C131 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 586152791DB5A55800A5C131 /* Main.storyboard */; };
		5861527D1DB5A55800A5C131 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5861527C1DB5A55800A5C131 /* Assets.xcassets */; };
		586152801DB5A55800A5C131 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5861527E1DB5A55800A5C131 /* LaunchScreen.storyboard */; };
		586152921DB5A62800A5C131 /* libpd-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5861528D1DB5A5B500A5C131 /* libpd-ios.a */; };
		586152951DB5A64C00A5C131 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586152941DB5A64C00A5C131 /* AudioToolbox.framework */; };
		586152971DB5A65200A5C131 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586152961DB5A65200A5C131 /* AVFoundation.framework */; };
		589A4CEA1DB5DDC3000FC0CC /* Base.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 589A4CE91DB5DDC3000FC0CC /* Base.lproj */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		3063EF7E21091B3100C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D36D1FAA200100C67F08;
			remoteInfo = "libpd-ios-multi";
		};
		3063EF8021091B3100C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D2FA1FAA1FCC00C67F08;
			remoteInfo = "libpd-osx-multi";
		};
		5861528C1DB5A5B500A5C131 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = D2AAC07E0554694100DB518D;
			remoteInfo = "libpd-ios";
		};
		5861528E1DB5A5B500A5C131 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 119013AB1486450C00086F19;
			remoteInfo = "libpd-osx";
		};
		586152901DB5A5F000A5C131 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
			proxyType = 1;
			remoteGlobalIDString = D2AAC07D0554694100DB518D;
			remoteInfo = "libpd-ios";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		583AB14F1DB5A8CF001E5913 /* PdLinkAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PdLinkAudioUnit.h; path = ../../abl_link/ios/PdLinkAudioUnit.h; sourceTree = "<group>"; };
		583AB1501DB5A8CF001E5913 /* PdLinkAudioUnit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PdLinkAudioUnit.m; path = ../../abl_link/ios/PdLinkAudioUnit.m; sourceTree = "<group>"; };
		583AB1521DB5A905001E5913 /* libABLLink.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libABLLink.a; path = ../../LinkKit/lib/libABLLink.a; sourceTree = "<group>"; };
		583AB1541DB5AA66001E5913 /* ping.pd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ping.pd; sourceTree = "<group>"; };
		5861526D1DB5A55800A5C131 /* PdLinkSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PdLinkSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
		586152711DB5A55800A5C131 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		586152731DB5A55800A5C131 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
		586152741DB5A55800A5C131 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
		586152761DB5A55800A5C131 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
		586152771DB5A55800A5C131 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
		5861527A1DB5A55800A5C131 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		5861527C1DB5A55800A5C131 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		5861527F1DB5A55800A5C131 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		586152811DB5A55800A5C131 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		586152871DB5A5B400A5C131 /* libpd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libpd.xcodeproj; path = ../libpd/libpd.xcodeproj; sourceTree = "<group>"; };
		586152941DB5A64C00A5C131 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
		586152961DB5A65200A5C131 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
		589A4CE91DB5DDC3000FC0CC /* Base.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Base.lproj; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		5861526A1DB5A55800A5C131 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				586152971DB5A65200A5C131 /* AVFoundation.framework in Frameworks */,
				586152951DB5A64C00A5C131 /* AudioToolbox.framework in Frameworks */,
				586152921DB5A62800A5C131 /* libpd-ios.a in Frameworks */,
				583AB1531DB5A905001E5913 /* libABLLink.a in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		586152641DB5A55800A5C131 = {
			isa = PBXGroup;
			children = (
				583AB1521DB5A905001E5913 /* libABLLink.a */,
				586152871DB5A5B400A5C131 /* libpd.xcodeproj */,
				5861526F1DB5A55800A5C131 /* PdLinkSample */,
				5861526E1DB5A55800A5C131 /* Products */,
				586152931DB5A64C00A5C131 /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		5861526E1DB5A55800A5C131 /* Products */ = {
			isa = PBXGroup;
			children = (
				5861526D1DB5A55800A5C131 /* PdLinkSample.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		5861526F1DB5A55800A5C131 /* PdLinkSample */ = {
			isa = PBXGroup;
			children = (
				589A4CE91DB5DDC3000FC0CC /* Base.lproj */,
				583AB1541DB5AA66001E5913 /* ping.pd */,
				583AB14F1DB5A8CF001E5913 /* PdLinkAudioUnit.h */,
				583AB1501DB5A8CF001E5913 /* PdLinkAudioUnit.m */,
				586152731DB5A55800A5C131 /* AppDelegate.h */,
				586152741DB5A55800A5C131 /* AppDelegate.m */,
				586152761DB5A55800A5C131 /* ViewController.h */,
				586152771DB5A55800A5C131 /* ViewController.m */,
				586152791DB5A55800A5C131 /* Main.storyboard */,
				5861527C1DB5A55800A5C131 /* Assets.xcassets */,
				5861527E1DB5A55800A5C131 /* LaunchScreen.storyboard */,
				586152811DB5A55800A5C131 /* Info.plist */,
				586152701DB5A55800A5C131 /* Supporting Files */,
			);
			path = PdLinkSample;
			sourceTree = "<group>";
		};
		586152701DB5A55800A5C131 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				586152711DB5A55800A5C131 /* main.m */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		586152881DB5A5B400A5C131 /* Products */ = {
			isa = PBXGroup;
			children = (
				5861528D1DB5A5B500A5C131 /* libpd-ios.a */,
				5861528F1DB5A5B500A5C131 /* libpd-osx.a */,
				3063EF7F21091B3100C8A4A2 /* libpd-ios-multi.a */,
				3063EF8121091B3100C8A4A2 /* libpd-osx-multi.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		586152931DB5A64C00A5C131 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				586152961DB5A65200A5C131 /* AVFoundation.framework */,
				586152941DB5A64C00A5C131 /* AudioToolbox.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		5861526C1DB5A55800A5C131 /* PdLinkSample */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 586152841DB5A55800A5C131 /* Build configuration list for PBXNativeTarget "PdLinkSample" */;
			buildPhases = (
				586152691DB5A55800A5C131 /* Sources */,
				5861526A1DB5A55800A5C131 /* Frameworks */,
				5861526B1DB5A55800A5C131 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				586152911DB5A5F000A5C131 /* PBXTargetDependency */,
			);
			name = PdLinkSample;
			productName = PdLinkSample;
			productReference = 5861526D1DB5A55800A5C131 /* PdLinkSample.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		586152651DB5A55800A5C131 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0930;
				ORGANIZATIONNAME = "Peter Brinkmann";
				TargetAttributes = {
					5861526C1DB5A55800A5C131 = {
						CreatedOnToolsVersion = 8.0;
						ProvisioningStyle = Automatic;
					};
				};
			};
			buildConfigurationList = 586152681DB5A55800A5C131 /* Build configuration list for PBXProject "PdLinkSample" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 586152641DB5A55800A5C131;
			productRefGroup = 5861526E1DB5A55800A5C131 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 586152881DB5A5B400A5C131 /* Products */;
					ProjectRef = 586152871DB5A5B400A5C131 /* libpd.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				5861526C1DB5A55800A5C131 /* PdLinkSample */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		3063EF7F21091B3100C8A4A2 /* libpd-ios-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios-multi.a";
			remoteRef = 3063EF7E21091B3100C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF8121091B3100C8A4A2 /* libpd-osx-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx-multi.a";
			remoteRef = 3063EF8021091B3100C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		5861528D1DB5A5B500A5C131 /* libpd-ios.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios.a";
			remoteRef = 5861528C1DB5A5B500A5C131 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		5861528F1DB5A5B500A5C131 /* libpd-osx.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx.a";
			remoteRef = 5861528E1DB5A5B500A5C131 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		5861526B1DB5A55800A5C131 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				586152801DB5A55800A5C131 /* LaunchScreen.storyboard in Resources */,
				5861527D1DB5A55800A5C131 /* Assets.xcassets in Resources */,
				589A4CEA1DB5DDC3000FC0CC /* Base.lproj in Resources */,
				5861527B1DB5A55800A5C131 /* Main.storyboard in Resources */,
				583AB1551DB5AA66001E5913 /* ping.pd in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		586152691DB5A55800A5C131 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				583AB1511DB5A8CF001E5913 /* PdLinkAudioUnit.m in Sources */,
				586152781DB5A55800A5C131 /* ViewController.m in Sources */,
				586152751DB5A55800A5C131 /* AppDelegate.m in Sources */,
				586152721DB5A55800A5C131 /* main.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		586152911DB5A5F000A5C131 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			name = "libpd-ios";
			targetProxy = 586152901DB5A5F000A5C131 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		586152791DB5A55800A5C131 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				5861527A1DB5A55800A5C131 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		5861527E1DB5A55800A5C131 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				5861527F1DB5A55800A5C131 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		586152821DB5A55800A5C131 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_SUSPICIOUS_MOVES = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		586152831DB5A55800A5C131 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_SUSPICIOUS_MOVES = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		586152851DB5A55800A5C131 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = PdLinkSample/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				OTHER_LDFLAGS = (
					"-L../../LinkKit/lib",
					"-lc++",
				);
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdLinkSample;
				PRODUCT_NAME = "$(TARGET_NAME)";
				USER_HEADER_SEARCH_PATHS = "../libpd/** ../../LinkKit/include";
			};
			name = Debug;
		};
		586152861DB5A55800A5C131 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = PdLinkSample/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				OTHER_LDFLAGS = (
					"-L../../LinkKit/lib",
					"-lc++",
				);
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdLinkSample;
				PRODUCT_NAME = "$(TARGET_NAME)";
				USER_HEADER_SEARCH_PATHS = "../libpd/** ../../LinkKit/include";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		586152681DB5A55800A5C131 /* Build configuration list for PBXProject "PdLinkSample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				586152821DB5A55800A5C131 /* Debug */,
				586152831DB5A55800A5C131 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		586152841DB5A55800A5C131 /* Build configuration list for PBXNativeTarget "PdLinkSample" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				586152851DB5A55800A5C131 /* Debug */,
				586152861DB5A55800A5C131 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 586152651DB5A55800A5C131 /* Project object */;
}


================================================
FILE: PdSettings/PdSettings/PdSettings-Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleDisplayName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundleExecutable</key>
	<string>${EXECUTABLE_NAME}</string>
	<key>CFBundleIconFile</key>
	<string></string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.1</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1.0</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UIBackgroundModes</key>
	<array>
		<string>audio</string>
	</array>
	<key>UIRequiresFullScreen</key>
	<false/>
	<key>UIStatusBarHidden</key>
	<false/>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: PdSettings/PdSettings/PdSettings-Prefix.pch
================================================
//
// Prefix header for all source files of the 'PdSettings' target in the 'PdSettings' project
//

#import <Availability.h>

#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "RDebug.h"
#endif


================================================
FILE: PdSettings/PdSettings/PdSettingsAppDelegate.h
================================================
//
//  PdSettingsAppDelegate.h
//  PdSettings
//
//  Created by Richard Eakin on 18/09/11.
//  Copyright 2011 Blarg. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface PdSettingsAppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, retain) UIWindow *window;
@end


================================================
FILE: PdSettings/PdSettings/PdSettingsAppDelegate.m
================================================
//
//  PdSettingsAppDelegate.m
//  PdSettings
//
//  Created by Richard Eakin on 18/09/11.
//  Copyright 2011 Blarg. All rights reserved.
//  Updated by Dan Wilcox 2018.
//

#import "PdSettingsAppDelegate.h"
#import "PdSettingsViewController.h"

@implementation PdSettingsAppDelegate

@synthesize window = window_;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
	self.window.rootViewController = [[PdSettingsViewController alloc] init];
	[self.window makeKeyAndVisible];
    return YES;
}

- (void)dealloc {
	self.window = nil;
}

@end


================================================
FILE: PdSettings/PdSettings/PdSettingsViewController.h
================================================
//
//  PdSettingsViewController.h
//  PdSettings
//
//  Created by Richard Eakin on 18/09/11.
//  Copyright 2011 Blarg. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "PdBase.h"

@interface PdSettingsViewController : UIViewController <PdReceiverDelegate, UIPickerViewDelegate, UIPickerViewDataSource>

@end


================================================
FILE: PdSettings/PdSettings/PdSettingsViewController.m
================================================
//
//  PdSettingsViewController.m
//  PdSettings
//
//  Created by Richard Eakin on 18/09/11.
//  Copyright 2011 Blarg. All rights reserved.
//  Updated by Dan Wilcox 2018.
//

#import "PdSettingsViewController.h"
#import "PdBase.h"
#import "PdFile.h"
#import "PdAudioController.h"
#import <QuartzCore/QuartzCore.h>

static const CGFloat kFramePadding = 12.0;
static const CGFloat kButtonFontSize = 12.0;
static const CGFloat kLabelHeight = 20.0;
static const CGFloat kPickerFirstComponentProportion = 0.33333333;
static const CGFloat kPickerOtherComponentsProportion = 0.22222222;

typedef enum {
	SettingsPickerComponentSampleRate,
	SettingsPickerComponentNumberInputChannels,
	SettingsPickerComponentNumberOutputChannels,
	SettingsPickerComponentNumberTicks,
	SettingsPickerNumberComponents
} SettingsPickerComponent;

@interface PdSettingsViewController ()

@property (nonatomic, retain) PdAudioController *audioController;
@property (nonatomic, retain) PdFile *patch;
@property (nonatomic, retain) NSArray *settingsArray;
@property (nonatomic, retain) UIButton *activeButton;
@property (nonatomic, retain) UIButton *reloadButton;
@property (nonatomic, retain) UIButton *ambientAudioButton;
@property (nonatomic, retain) UIButton *allowMixingButton;
@property (nonatomic, retain) UIPickerView *settingsPicker;
@property (nonatomic, retain) UISegmentedControl *patchSelector;

- (void)configureAudio; // this is where PdAudioController's configure method is called and audio properties are actually set
- (void)layoutInterface;
- (void)layoutLabels;
- (void)activeButtonWasTapped:(UIButton *)sender;
- (void)reloadButtonWasTapped:(UIButton *)sender;
- (void)ambientButtonWasTapped:(UIButton *)sender;
- (void)allowMixingButtonWasTapped:(UIButton *)sender;
- (void)patchSelectorChanged:(UISegmentedControl *)sender;
- (UILabel *)addLabelWithText:(NSString *)text;
- (UIButton *)addButtonWithText:(NSString *)text selector:(SEL)selector;
- (void)fillSettingsArray;
- (void)indicateSettingsChanged;
- (void)updatePickerSettings;
- (int)pickerValueForComponent:(SettingsPickerComponent)component;
- (void)setPickerValue:(int)value component:(SettingsPickerComponent)component animated:(BOOL)animated;

@end


@implementation PdSettingsViewController

@synthesize audioController = audioController_,
patch = patch_,
settingsArray = settingsArray_,
activeButton = activeButton_,
reloadButton = reloadButton_,
settingsPicker = settingsPicker_,
patchSelector = patchSelector_,
ambientAudioButton = ambientAudioButton_,
allowMixingButton = allowMixingButton_;

#pragma mark - Init / Dealloc

- (id)init {
	self = [super init];
	if (self) {
		[PdBase setDelegate:self];
		[PdBase subscribe:@"test-value"];
		self.audioController = [[PdAudioController alloc] init];
		[self.audioController configurePlaybackWithSampleRate:44100 numberChannels:2 inputEnabled:YES mixingEnabled:NO]; // well known settings
		[self fillSettingsArray];
	}
	return self;
}

- (void)dealloc {
	self.audioController = nil;
	self.patch = nil;
	self.activeButton = nil;
	self.reloadButton = nil;
	self.ambientAudioButton = nil;
    self.allowMixingButton = nil;
	self.patchSelector = nil;
	self.settingsArray = nil;
}

#pragma mark - View lifecycle

- (void)loadView {
	[super loadView];
	self.view.backgroundColor = [UIColor darkGrayColor];
	
	self.activeButton = [self addButtonWithText:@"Inactive" selector:@selector(activeButtonWasTapped:)];
	[self.activeButton setTitle:@"Active" forState:UIControlStateSelected];
    
	self.reloadButton = [self addButtonWithText:@"Reload Settings" selector:@selector(reloadButtonWasTapped:)];
	self.reloadButton.enabled = NO;
	
	self.ambientAudioButton = [self addButtonWithText:@"Ambient Audio" selector:@selector(ambientButtonWasTapped:)];
	self.allowMixingButton = [self addButtonWithText:@"Allow Mixing" selector:@selector(allowMixingButtonWasTapped:)];
	
	self.settingsPicker = [[UIPickerView alloc] init];
	self.settingsPicker.delegate = self;
	self.settingsPicker.dataSource = self;
	self.settingsPicker.showsSelectionIndicator = YES;
	
	self.patchSelector = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"testoutput.pd", @"testinput.pd", nil]];
    self.patchSelector.tintColor = [UIColor colorWithRed:54.0/255.0 green:56.0/255.0 blue:96.0/255.0 alpha:1.0];
    self.patchSelector.selectedSegmentIndex = 0;
    [self.patchSelector addTarget:self action:@selector(patchSelectorChanged:) forControlEvents:UIControlEventValueChanged];
	[self patchSelectorChanged:self.patchSelector];
    
	[self.view addSubview:self.settingsPicker];
	[self.view addSubview:self.patchSelector];
}

-(BOOL)prefersStatusBarHidden{
    return YES;
}

- (void)viewDidAppear:(BOOL)animated {
	[super viewDidAppear:animated];
	[self updatePickerSettings];
	[self.audioController print];
}

- (void)viewDidLayoutSubviews {
	[self layoutInterface];
	[self layoutLabels];
}

- (void)viewWillTransitionToSize:(CGSize)size
	   withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
	for (UIView *view in self.view.subviews) {
		if ([view isKindOfClass:[UILabel class]]) {
			[view removeFromSuperview];
		}
	}
}

#pragma mark - PdReceiverDelegate

- (void)receivePrint:(NSString *)message {
	RLog(@"%@", message);
}

#pragma mark - UIPickerViewDataSource

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
	return SettingsPickerNumberComponents;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
	return [[self.settingsArray objectAtIndex:component] count];
}

#pragma mark - UIPickerViewDelegate

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
	CGFloat totalWidth = self.settingsPicker.frame.size.width - kFramePadding * 2;
	if (component == SettingsPickerComponentSampleRate) {
		return floor(totalWidth * kPickerFirstComponentProportion);
	}
	return floor(totalWidth * kPickerOtherComponentsProportion);
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
	return [[self.settingsArray objectAtIndex:component] objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
	// if the user selects inputs > 0, make sure to disable the
	// ambient audio button
	if (component == SettingsPickerComponentNumberInputChannels && [self pickerValueForComponent:SettingsPickerComponentNumberInputChannels] > 0) {
		self.ambientAudioButton.selected = NO;
	}
	
	// number of ticks can be changed while the audio unit is running, without it needing to be recreated, so it has a different configure method
	if (component == SettingsPickerComponentNumberTicks) {
		int ticks = [self pickerValueForComponent:SettingsPickerComponentNumberTicks];
		PdAudioStatus status = [self.audioController configureTicksPerBuffer:ticks];
		if (status == PdAudioPropertyChanged) {
			RLog(@"Could not configure ticksPerBuffer = %d, instead got %d", ticks, self.audioController.ticksPerBuffer);
			[self setPickerValue:self.audioController.ticksPerBuffer component:SettingsPickerComponentNumberTicks animated:YES];
		}
	} else {
		[self indicateSettingsChanged];
	}
}


#pragma mark - Private (UI)

- (void)layoutInterface {
	const CGFloat kButtonHeight = 34.0;
	const CGFloat kPSWidth = 300.0;
	const CGFloat kActiveButtonWidth = 70.0;
	const CGFloat kReloadButtonWidth = 120.0;
	const CGFloat kButtonSpacer = 10.0;
	const CGFloat kPickerHeight = 162.0;
	CGSize viewSize = self.view.bounds.size;
    
	self.settingsPicker.frame = CGRectMake(0.0, viewSize.height - kPickerHeight, viewSize.width, kPickerHeight);
	
	CGFloat psXOffset = (viewSize.width - kPSWidth) * 0.5;
	CGFloat psYOffset = self.settingsPicker.frame.origin.y - kButtonHeight - 26.0;
	self.patchSelector.frame = CGRectIntegral(CGRectMake(psXOffset, psYOffset, kPSWidth, kButtonHeight));

	CGFloat bYOffset = 0.0;
	self.activeButton.frame = CGRectMake(kFramePadding, kFramePadding, kActiveButtonWidth, kButtonHeight);
	CGFloat rButtonXOffset = viewSize.width - kFramePadding - kReloadButtonWidth;
	self.reloadButton.frame = CGRectMake(rButtonXOffset, kFramePadding, kReloadButtonWidth, kButtonHeight);
	int currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
	if (UIInterfaceOrientationIsPortrait(currentOrientation)) {
		self.ambientAudioButton.frame = CGRectMake(self.reloadButton.frame.origin.x,
                                                   self.reloadButton.frame.origin.y + kButtonHeight + kButtonSpacer + bYOffset,
                                                   kReloadButtonWidth,
                                                   kButtonHeight);
		self.allowMixingButton.frame = CGRectMake(self.reloadButton.frame.origin.x,
                                                  self.reloadButton.frame.origin.y + 2 * (kButtonHeight + kButtonSpacer + bYOffset),
                                                  kReloadButtonWidth,
                                                  kButtonHeight);
	} else {
		self.ambientAudioButton.frame = CGRectMake(self.reloadButton.frame.origin.x -
		                                           self.reloadButton.frame.size.width - kButtonSpacer,
                                                   self.reloadButton.frame.origin.y + bYOffset,
                                                   kReloadButtonWidth,
                                                   kButtonHeight);
		self.allowMixingButton.frame = CGRectMake(self.reloadButton.frame.origin.x - 2 * (self.reloadButton.frame.size.width + kButtonSpacer),
                                                  self.reloadButton.frame.origin.y + bYOffset,
                                                  kReloadButtonWidth,
                                                  kButtonHeight);
	}
    
}

- (void)layoutLabels {
	CGSize viewSize = self.view.bounds.size;
	const CGFloat kPSLabelWidth = 100.0;
    
	CGFloat pickerLabelsYOffset = viewSize.height - self.settingsPicker.frame.size.height - kLabelHeight;
	CGFloat drawingWidth = viewSize.width - kFramePadding * 2;
	CGFloat xOffset = kFramePadding + 2;
	UILabel *srLabel = [self addLabelWithText:@"samplerate"];
	srLabel.frame = CGRectIntegral(CGRectMake(xOffset,
											  pickerLabelsYOffset,
											  drawingWidth * kPickerFirstComponentProportion,
											  kLabelHeight));
	
	UILabel *insLabel = [self addLabelWithText:@"ins"];
	xOffset += kPickerFirstComponentProportion * drawingWidth + 2;
	insLabel.frame = CGRectIntegral(CGRectMake(xOffset,
											   pickerLabelsYOffset,
											   drawingWidth * kPickerOtherComponentsProportion,
											   kLabelHeight));
	
	UILabel *outsLabel = [self addLabelWithText:@"outs"];
	xOffset += kPickerOtherComponentsProportion * drawingWidth;
	outsLabel.frame = CGRectIntegral(CGRectMake(xOffset,
												pickerLabelsYOffset,
												drawingWidth * kPickerOtherComponentsProportion,
												kLabelHeight));
	UILabel *ticksLabel = [self addLabelWithText:@"ticks"];
	xOffset += kPickerOtherComponentsProportion * drawingWidth;
	ticksLabel.frame = CGRectIntegral(CGRectMake(xOffset,
												 pickerLabelsYOffset,
												 drawingWidth * kPickerOtherComponentsProportion,
												 kLabelHeight));
    
	UILabel *psLabel = [self addLabelWithText:@"patch selector"];
	psLabel.textAlignment = NSTextAlignmentCenter;
	CGFloat psLabelYOffset = self.patchSelector.frame.origin.y - kLabelHeight - 2;
	psLabel.frame = CGRectIntegral(CGRectMake((viewSize.width - kPSLabelWidth) * 0.5,
											  psLabelYOffset,
											  kPSLabelWidth,
											  kLabelHeight));
}

- (UILabel *)addLabelWithText:(NSString *)text {
	UILabel *label = [[UILabel alloc] init];
	[self.view addSubview:label];
	label.text = text;
	label.textColor = [UIColor lightGrayColor];
	label.backgroundColor = [UIColor clearColor];
	label.font = [UIFont systemFontOfSize:14];
	return label;
}

- (UIButton *)addButtonWithText:(NSString *)text selector:(SEL)selector {
	UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
	[button setTitle:text forState:UIControlStateNormal];
	[button addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside];
	
	[button setTitleShadowColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
	button.titleLabel.shadowOffset = CGSizeMake(0.0, -1.0);
	button.titleLabel.font = [UIFont boldSystemFontOfSize:kButtonFontSize];
	
	[button setTitleColor:[UIColor colorWithRed:0.75 green:0.75 blue:0.75 alpha:1.0] forState:UIControlStateNormal];
	[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
	[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
    
	UIImage *normalImage = [[UIImage imageNamed:@"button-normal.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];
	[button setBackgroundImage:normalImage forState:UIControlStateNormal];
	UIImage *pressedImage = [[UIImage imageNamed:@"button-pressed.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];
	[button setBackgroundImage:pressedImage forState:UIControlStateHighlighted];
	[button setBackgroundImage:pressedImage forState:UIControlStateSelected];
	
	[self.view addSubview:button];
	return button;
}

#pragma mark - Private (Selectors)

- (void)activeButtonWasTapped:(UIButton *)sender {
	sender.selected = !sender.selected;
	[self.audioController setActive:sender.selected];
}

// configure PdAudioController, then update the picker with the actual settings
- (void)reloadButtonWasTapped:(UIButton *)sender {
	RLog(@"reloading audio configuration");
	[self configureAudio];
    
	[self.reloadButton.layer removeAnimationForKey:@"shadow"];
	[self.audioController print];
	self.reloadButton.enabled = NO;
}

- (void)ambientButtonWasTapped:(UIButton *)sender {
	sender.selected = !sender.selected;
    if (sender.selected) {
        [self setPickerValue:0 component:SettingsPickerComponentNumberInputChannels animated:YES];
    }
	RLog(@"selected: %d", sender.selected);
	[self indicateSettingsChanged];
}

- (void)allowMixingButtonWasTapped:(UIButton *)sender {
	sender.selected = !sender.selected;
	RLog(@"selected: %d", sender.selected);
	[self indicateSettingsChanged];
}

#pragma mark - Private (Audio)

- (void)configureAudio {
	PdAudioStatus status;
	int sampleRate = [self pickerValueForComponent:SettingsPickerComponentSampleRate];
	int numInputs = [self pickerValueForComponent:SettingsPickerComponentNumberInputChannels];
	int numOutputs = [self pickerValueForComponent:SettingsPickerComponentNumberOutputChannels];
	
	if (self.ambientAudioButton.selected) {
		status = [self.audioController configureAmbientWithSampleRate:sampleRate numberChannels:numOutputs mixingEnabled:self.allowMixingButton.selected];
	} else {
        int numChannels = (numInputs > numOutputs) ? numInputs : numOutputs;
		status = [self.audioController configurePlaybackWithSampleRate:sampleRate numberChannels:numChannels
                                                          inputEnabled:(numInputs > 0) mixingEnabled:self.allowMixingButton.selected];
	}
	if (status == PdAudioError) {
		RLog(@"Error configuring PdAudioController");
        [self.reloadButton setTitle:@"Error!" forState:UIControlStateNormal];
	} else if (status == PdAudioPropertyChanged) {
		RLog(@"Could not configure with provided properties (samplerate: %d, numInputs: %d, numOutputs: %d)", sampleRate, numInputs, numOutputs);
		RLog(@"Instead got samplerate: %d, numChannels: %d", self.audioController.sampleRate, self.audioController.numberChannels);
        [self.reloadButton setTitle:@"Property Changed!" forState:UIControlStateNormal];
	} else {
        [self.reloadButton setTitle:@"Success!" forState:UIControlStateNormal];
    }
    [self updatePickerSettings];
}

- (void)patchSelectorChanged:(UISegmentedControl *)sender {
    NSString *name = [sender titleForSegmentAtIndex:sender.selectedSegmentIndex];
	self.patch = [PdFile openFileNamed:name path:[[NSBundle mainBundle] resourcePath]];
	if (self.patch) {
		RLog(@"opened patch: %@", name);
	} else {
		RError(@"couldn't open patch: %@", name);
	}
	[PdBase sendFloat:95 toReceiver:@"mag"];
}

// TODO: test with bogus values
- (void)fillSettingsArray {
	const int kNumTickOptions = 32;
    
	NSArray *sampleratesArray = [NSArray arrayWithObjects: @"8000", @"22050", @"24000", @"32000", @"44100", @"48000", nil];
	
	NSArray *inputChannelsArray = [NSArray arrayWithObjects:@"0", @"1", @"2", nil];
	NSArray *outputChannelsArray = [NSArray arrayWithObjects:@"0", @"1", @"2", nil];
	
	NSMutableArray *ticksArray = [NSMutableArray arrayWithCapacity:kNumTickOptions];
	for (int i = 1; i <= 64; i++) {
		[ticksArray addObject:[NSString stringWithFormat:@"%d", i]];
	}
	
	self.settingsArray = [NSArray arrayWithObjects:sampleratesArray,
						  inputChannelsArray,
						  outputChannelsArray,
						  ticksArray,
						  nil];
}

- (void)updatePickerSettings {
	[self setPickerValue:self.audioController.sampleRate component:SettingsPickerComponentSampleRate animated:YES];
	[self setPickerValue:(self.audioController.inputEnabled ? self.audioController.numberChannels : 0) component:SettingsPickerComponentNumberInputChannels animated:YES];
	[self setPickerValue:self.audioController.numberChannels component:SettingsPickerComponentNumberOutputChannels animated:YES];
	[self setPickerValue:self.audioController.ticksPerBuffer component:SettingsPickerComponentNumberTicks animated:YES];
}

- (int)pickerValueForComponent:(SettingsPickerComponent)component {
	int row = (int)[self.settingsPicker selectedRowInComponent:component];
	NSString *value = [[self.settingsArray objectAtIndex:component] objectAtIndex:row];
	return [value intValue];
}

- (void)setPickerValue:(int)value component:(SettingsPickerComponent)component animated:(BOOL)animated {
	NSString *valueString = [NSString stringWithFormat:@"%d", value];
	NSArray *componentArray = [self.settingsArray objectAtIndex:component];
	int row = 0;
	for (NSString *pickerValue in componentArray) {
		if ([valueString isEqualToString:pickerValue]) {
			[self.settingsPicker selectRow:row inComponent:component animated:animated];
			return;
		}
		row++;
	}
	// if we made it here, there was a problem
	RLog(@"* ERROR * could not find a value equal to %d in component %d", value, component);
}

- (void)indicateSettingsChanged {
	if (!self.reloadButton.enabled) {
		self.reloadButton.enabled = YES;
        [self.reloadButton setTitle:@"Reload Settings" forState:UIControlStateNormal];
        
		self.reloadButton.layer.shadowRadius = 5.0;
		self.reloadButton.layer.shadowColor = [UIColor cyanColor].CGColor;
		self.reloadButton.layer.shadowOpacity = 0.0;
		self.reloadButton.layer.shadowOffset = CGSizeMake(0.0, 0.0);
		CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"]; 
		animation.fromValue = [NSNumber numberWithFloat:0.0];
		animation.toValue = [NSNumber numberWithFloat:0.4];
		animation.autoreverses = YES;
		animation.duration = .4;
		animation.repeatCount = NSIntegerMax;
		[self.reloadButton.layer addAnimation:animation forKey:@"shadow"];
	}
}

@end


================================================
FILE: PdSettings/PdSettings/RDebug.h
================================================
//
//  WDebug.h
//  Wombat
//
//  Created by Richard Eakin on 1/08/11.
//  Copyright 2011 Richard Eakin. All rights reserved.
//

//////////////////////////////////////////////////////////////////////
#ifdef R_DEBUG
//////////////////// Debug Mode //////////////////////////////////////

#include <assert.h>
#include <stdbool.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/sysctl.h>

// Returns true if the current process is being debugged (either 
// running under the debugger or has a debugger attached post facto).
// from: Apple's Technical Q&A QA1361 - http://developer.apple.com/library/mac/#qa/qa1361/_index.html
static inline bool AmIBeingDebugged(void) {
    int                 junk;
    int                 mib[4];
    struct kinfo_proc   info;
    size_t              size;
    info.kp_proc.p_flag = 0;
    mib[0] = CTL_KERN;
    mib[1] = KERN_PROC;
    mib[2] = KERN_PROC_PID;
    mib[3] = getpid();
    size = sizeof(info);
    junk = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0);
    assert(junk == 0);
    return ( (info.kp_proc.p_flag & P_TRACED) != 0 );
}

// RBreak () - method to programmatically break at the line where it was called
// from: http://danwright.info/blog/author/dan/page/3/ and http://cocoawithlove.com/2008/03/break-into-debugger.html
#if __ppc64__ || __ppc__
#define RBreak() \
do { \
	if(AmIBeingDebugged()) \
	{ \
	__asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \
	: : : "memory","r0","r3","r4" ); \
	} \
} while (0)
#elif __i386__ || __x86_64__
#define RBreak() \
do { \
	if(AmIBeingDebugged()) { \
	__asm__("int $3\n" : : ); \
	} \
} while (0)
#elif __arm__
#define RBreak() \
do { \
	if (AmIBeingDebugged()) { \
		__asm__("mov r0, #20\nmov ip, r0\nsvc 128\nmov r1, #37\nmov ip, r1\nmov r1, #2\nmov r2, #1\n svc 128\n" : : : "memory","ip","r0","r1","r2"); \
	} \
} while (0)
#else // unknown architecture
#define RBreak() \
do { \
	if (AmIBeingDebugged()) { \
		raise(SIGINT); \
	} \
} while (0)
#endif


// RStrackTrace - print the stacktrace back to the specified depth. if depth == 0, the entire stacktrace is printed
#define RStackTrace(depth) \
do { \
	printf("%s * CALL STACK *\n", __PRETTY_FUNCTION__); \
	int currentDepth = 0; \
	for (NSString* stackElement in [NSThread callStackSymbols]) { \
		if (!depth || currentDepth++ < depth) { \
			printf ("%s\n", [stackElement UTF8String]); \
		} else { \
			break; \
		} \
	} \
} while (0)


#define RLog(nslog_string, ...) \
do { \
	printf("%s\t", __PRETTY_FUNCTION__); \
	printf("%s\n", [[NSString stringWithFormat:nslog_string, ##__VA_ARGS__] UTF8String]); \
} while (0)

#define RAssert(check_value)	\
do { \
	if (!(check_value)) { \
		printf("%s * ASSERT FAILED *\t", __PRETTY_FUNCTION__); \
		printf("'%s'\n", #check_value); \
		RBreak(); \
	} \
} while (0)

#define RAssertM(check_value, nslog_string, ...) \
do { \
	if (!(check_value)) { \
		printf("%s * ASSERT FAILED *\t", __PRETTY_FUNCTION__); \
		printf("%s\n", [[NSString stringWithFormat:nslog_string, ##__VA_ARGS__] UTF8String]); \
		RBreak(); \
	} \
} while (0)

#define RWarnCheck(check_value, nslog_string, ...) \
do { \
	if (!(check_value)) { \
		{ printf("%s * WARNING *\t", __PRETTY_FUNCTION__); \
		printf("%s\n", [[NSString stringWithFormat:nslog_string, ##__VA_ARGS__] UTF8String]); \
	} \
} while (0)

#define RWarning(nslog_string, ...) \
do { \
	printf("%s * WARNING *\t", __PRETTY_FUNCTION__); \
	printf("%s\n", [[NSString stringWithFormat:nslog_string, ##__VA_ARGS__] UTF8String]); \
} while (0)

#define RError(nslog_string, ...) \
do { \
	printf("%s * ERROR *\t", __PRETTY_FUNCTION__); \
	printf("%s\n", [[NSString stringWithFormat:nslog_string, ##__VA_ARGS__] UTF8String]); \
} while (0)

//////////////////////////////////////////////////////////////////////
#else
//////////////////// Release Mode ////////////////////////////////////

#define RLog(...)
#define RAssert(check_value)
#define RAssertM(check_value, nslog_string, ...)
#define RWarnCheck(check_value, nslog_string, ...)
#define RWarning(nslog_string, ...)
#define RError(nslog_string, ...)
#define RBreak()

#define RStackTrace()

#endif


================================================
FILE: PdSettings/PdSettings/en.lproj/InfoPlist.strings
================================================
/* Localized versions of Info.plist keys */



================================================
FILE: PdSettings/PdSettings/main.m
================================================
//
//  main.m
//  PdSettings
//
//  Created by Richard Eakin on 18/09/11.
//  Copyright 2011 Blarg. All rights reserved.
//  Updated by Dan Wilcox 2018.
//

#import <UIKit/UIKit.h>
#import "PdSettingsAppDelegate.h"

int main(int argc, char *argv[]) {
	@autoreleasepool {
		return UIApplicationMain(argc, argv, nil, NSStringFromClass(PdSettingsAppDelegate.class));
	}
}


================================================
FILE: PdSettings/PdSettings.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		114DD8D714344B5700EA5EA7 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 114DD8D614344B5700EA5EA7 /* AVFoundation.framework */; };
		1151DD0414455C3300E1BAA8 /* button-normal.png in Resources */ = {isa = PBXBuildFile; fileRef = 1151DD0214455C3300E1BAA8 /* button-normal.png */; };
		1151DD0514455C3300E1BAA8 /* button-pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 1151DD0314455C3300E1BAA8 /* button-pressed.png */; };
		1151DD0814455C9900E1BAA8 /* testinput.pd in Resources */ = {isa = PBXBuildFile; fileRef = 1151DD0614455C9900E1BAA8 /* testinput.pd */; };
		1151DD0914455C9900E1BAA8 /* testoutput.pd in Resources */ = {isa = PBXBuildFile; fileRef = 1151DD0714455C9900E1BAA8 /* testoutput.pd */; };
		1151DD141445975F00E1BAA8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1151DD131445975F00E1BAA8 /* QuartzCore.framework */; };
		11A8BDB41425EC200006B996 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11A8BDB31425EC200006B996 /* UIKit.framework */; };
		11A8BDB61425EC200006B996 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11A8BDB51425EC200006B996 /* Foundation.framework */; };
		11A8BDB81425EC200006B996 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11A8BDB71425EC200006B996 /* CoreGraphics.framework */; };
		11A8BDBE1425EC200006B996 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 11A8BDBC1425EC200006B996 /* InfoPlist.strings */; };
		11A8BDC01425EC200006B996 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A8BDBF1425EC200006B996 /* main.m */; };
		11A8BDC41425EC200006B996 /* PdSettingsAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A8BDC31425EC200006B996 /* PdSettingsAppDelegate.m */; };
		11A8BDCA1425EC200006B996 /* PdSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A8BDC91425EC200006B996 /* PdSettingsViewController.m */; };
		11A8BDE81425F4B10006B996 /* libpd-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11A8BDE51425F4930006B996 /* libpd-ios.a */; };
		11A8BDEA1425F4C10006B996 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11A8BDE91425F4C10006B996 /* AudioToolbox.framework */; };
		3063EF2B21087CE200C8A4A2 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3063EF2A21087CE200C8A4A2 /* Default-568h@2x.png */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		1176E14115BB6E510061A139 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 119013AB1486450C00086F19;
			remoteInfo = "libpd-osx";
		};
		11A8BDE41425F4930006B996 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = D2AAC07E0554694100DB518D;
			remoteInfo = libpd;
		};
		11A8BDE61425F4A70006B996 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
			proxyType = 1;
			remoteGlobalIDString = D2AAC07D0554694100DB518D;
			remoteInfo = libpd;
		};
		3063EF25210867A500C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D36D1FAA200100C67F08;
			remoteInfo = "libpd-ios-multi";
		};
		3063EF27210867A500C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D2FA1FAA1FCC00C67F08;
			remoteInfo = "libpd-osx-multi";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		114DD8D614344B5700EA5EA7 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
		1151DD0214455C3300E1BAA8 /* button-normal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "button-normal.png"; path = "Resources/button-normal.png"; sourceTree = "<group>"; };
		1151DD0314455C3300E1BAA8 /* button-pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "button-pressed.png"; path = "Resources/button-pressed.png"; sourceTree = "<group>"; };
		1151DD0614455C9900E1BAA8 /* testinput.pd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = testinput.pd; path = Resources/testinput.pd; sourceTree = "<group>"; };
		1151DD0714455C9900E1BAA8 /* testoutput.pd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = testoutput.pd; path = Resources/testoutput.pd; sourceTree = "<group>"; };
		1151DD131445975F00E1BAA8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
		11A8BDAF1425EC200006B996 /* PdSettings.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PdSettings.app; sourceTree = BUILT_PRODUCTS_DIR; };
		11A8BDB31425EC200006B996 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
		11A8BDB51425EC200006B996 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
		11A8BDB71425EC200006B996 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
		11A8BDBB1425EC200006B996 /* PdSettings-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PdSettings-Info.plist"; sourceTree = "<group>"; };
		11A8BDBD1425EC200006B996 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
		11A8BDBF1425EC200006B996 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		11A8BDC11425EC200006B996 /* PdSettings-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PdSettings-Prefix.pch"; sourceTree = "<group>"; };
		11A8BDC21425EC200006B996 /* PdSettingsAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PdSettingsAppDelegate.h; sourceTree = "<group>"; };
		11A8BDC31425EC200006B996 /* PdSettingsAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PdSettingsAppDelegate.m; sourceTree = "<group>"; };
		11A8BDC81425EC200006B996 /* PdSettingsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PdSettingsViewController.h; sourceTree = "<group>"; };
		11A8BDC91425EC200006B996 /* PdSettingsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PdSettingsViewController.m; sourceTree = "<group>"; };
		11A8BDDC1425ED810006B996 /* RDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RDebug.h; sourceTree = "<group>"; };
		11A8BDDD1425F4920006B996 /* libpd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libpd.xcodeproj; path = ../libpd/libpd.xcodeproj; sourceTree = "<group>"; };
		11A8BDE91425F4C10006B996 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
		3063EF2A21087CE200C8A4A2 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		11A8BDAC1425EC200006B996 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1151DD141445975F00E1BAA8 /* QuartzCore.framework in Frameworks */,
				114DD8D714344B5700EA5EA7 /* AVFoundation.framework in Frameworks */,
				11A8BDEA1425F4C10006B996 /* AudioToolbox.framework in Frameworks */,
				11A8BDE81425F4B10006B996 /* libpd-ios.a in Frameworks */,
				11A8BDB41425EC200006B996 /* UIKit.framework in Frameworks */,
				11A8BDB61425EC200006B996 /* Foundation.framework in Frameworks */,
				11A8BDB81425EC200006B996 /* CoreGraphics.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		1151DCFE1445468100E1BAA8 /* Images */ = {
			isa = PBXGroup;
			children = (
				1151DD0214455C3300E1BAA8 /* button-normal.png */,
				1151DD0314455C3300E1BAA8 /* button-pressed.png */,
			);
			name = Images;
			sourceTree = "<group>";
		};
		11A8BDA41425EC200006B996 = {
			isa = PBXGroup;
			children = (
				3063EF2A21087CE200C8A4A2 /* Default-568h@2x.png */,
				11A8BDDD1425F4920006B996 /* libpd.xcodeproj */,
				11A8BDB91425EC200006B996 /* Source */,
				11A8BDEB1425F7660006B996 /* Pd Patches */,
				1151DCFE1445468100E1BAA8 /* Images */,
				11A8BDB21425EC200006B996 /* Frameworks */,
				11A8BDB01425EC200006B996 /* Products */,
			);
			sourceTree = "<group>";
		};
		11A8BDB01425EC200006B996 /* Products */ = {
			isa = PBXGroup;
			children = (
				11A8BDAF1425EC200006B996 /* PdSettings.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		11A8BDB21425EC200006B996 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				114DD8D614344B5700EA5EA7 /* AVFoundation.framework */,
				11A8BDE91425F4C10006B996 /* AudioToolbox.framework */,
				11A8BDB31425EC200006B996 /* UIKit.framework */,
				11A8BDB51425EC200006B996 /* Foundation.framework */,
				1151DD131445975F00E1BAA8 /* QuartzCore.framework */,
				11A8BDB71425EC200006B996 /* CoreGraphics.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		11A8BDB91425EC200006B996 /* Source */ = {
			isa = PBXGroup;
			children = (
				11A8BDDC1425ED810006B996 /* RDebug.h */,
				11A8BDC21425EC200006B996 /* PdSettingsAppDelegate.h */,
				11A8BDC31425EC200006B996 /* PdSettingsAppDelegate.m */,
				11A8BDC81425EC200006B996 /* PdSettingsViewController.h */,
				11A8BDC91425EC200006B996 /* PdSettingsViewController.m */,
				11A8BDBA1425EC200006B996 /* Supporting Files */,
			);
			name = Source;
			path = PdSettings;
			sourceTree = "<group>";
		};
		11A8BDBA1425EC200006B996 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				11A8BDBB1425EC200006B996 /* PdSettings-Info.plist */,
				11A8BDBC1425EC200006B996 /* InfoPlist.strings */,
				11A8BDBF1425EC200006B996 /* main.m */,
				11A8BDC11425EC200006B996 /* PdSettings-Prefix.pch */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		11A8BDDE1425F4920006B996 /* Products */ = {
			isa = PBXGroup;
			children = (
				11A8BDE51425F4930006B996 /* libpd-ios.a */,
				1176E14215BB6E510061A139 /* libpd-osx.a */,
				3063EF26210867A500C8A4A2 /* libpd-ios-multi.a */,
				3063EF28210867A500C8A4A2 /* libpd-osx-multi.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		11A8BDEB1425F7660006B996 /* Pd Patches */ = {
			isa = PBXGroup;
			children = (
				1151DD0614455C9900E1BAA8 /* testinput.pd */,
				1151DD0714455C9900E1BAA8 /* testoutput.pd */,
			);
			name = "Pd Patches";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		11A8BDAE1425EC200006B996 /* PdSettings */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 11A8BDD01425EC200006B996 /* Build configuration list for PBXNativeTarget "PdSettings" */;
			buildPhases = (
				11A8BDAB1425EC200006B996 /* Sources */,
				11A8BDAC1425EC200006B996 /* Frameworks */,
				11A8BDAD1425EC200006B996 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				11A8BDE71425F4A70006B996 /* PBXTargetDependency */,
			);
			name = PdSettings;
			productName = PdSettings;
			productReference = 11A8BDAF1425EC200006B996 /* PdSettings.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		11A8BDA61425EC200006B996 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0930;
				ORGANIZATIONNAME = Blarg;
			};
			buildConfigurationList = 11A8BDA91425EC200006B996 /* Build configuration list for PBXProject "PdSettings" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 11A8BDA41425EC200006B996;
			productRefGroup = 11A8BDB01425EC200006B996 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 11A8BDDE1425F4920006B996 /* Products */;
					ProjectRef = 11A8BDDD1425F4920006B996 /* libpd.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				11A8BDAE1425EC200006B996 /* PdSettings */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		1176E14215BB6E510061A139 /* libpd-osx.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx.a";
			remoteRef = 1176E14115BB6E510061A139 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		11A8BDE51425F4930006B996 /* libpd-ios.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios.a";
			remoteRef = 11A8BDE41425F4930006B996 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF26210867A500C8A4A2 /* libpd-ios-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios-multi.a";
			remoteRef = 3063EF25210867A500C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF28210867A500C8A4A2 /* libpd-osx-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx-multi.a";
			remoteRef = 3063EF27210867A500C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		11A8BDAD1425EC200006B996 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				11A8BDBE1425EC200006B996 /* InfoPlist.strings in Resources */,
				1151DD0414455C3300E1BAA8 /* button-normal.png in Resources */,
				1151DD0514455C3300E1BAA8 /* button-pressed.png in Resources */,
				1151DD0814455C9900E1BAA8 /* testinput.pd in Resources */,
				1151DD0914455C9900E1BAA8 /* testoutput.pd in Resources */,
				3063EF2B21087CE200C8A4A2 /* Default-568h@2x.png in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		11A8BDAB1425EC200006B996 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				11A8BDC01425EC200006B996 /* main.m in Sources */,
				11A8BDC41425EC200006B996 /* PdSettingsAppDelegate.m in Sources */,
				11A8BDCA1425EC200006B996 /* PdSettingsViewController.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		11A8BDE71425F4A70006B996 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			name = libpd;
			targetProxy = 11A8BDE61425F4A70006B996 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		11A8BDBC1425EC200006B996 /* InfoPlist.strings */ = {
			isa = PBXVariantGroup;
			children = (
				11A8BDBD1425EC200006B996 /* en */,
			);
			name = InfoPlist.strings;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		11A8BDCE1425EC200006B996 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_THUMB_SUPPORT = NO;
				GCC_VERSION = "";
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DR_DEBUG=1";
				OTHER_LDFLAGS = "-ObjC";
				SDKROOT = iphoneos;
				USER_HEADER_SEARCH_PATHS = ../libpd/objc;
			};
			name = Debug;
		};
		11A8BDCF1425EC200006B996 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = YES;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_THUMB_SUPPORT = NO;
				GCC_VERSION = "";
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
				OTHER_LDFLAGS = "-ObjC";
				SDKROOT = iphoneos;
				USER_HEADER_SEARCH_PATHS = ../libpd/objc;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		11A8BDD11425EC200006B996 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_OBJC_WEAK = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "PdSettings/PdSettings-Prefix.pch";
				GCC_THUMB_SUPPORT = NO;
				GCC_VERSION = "";
				INFOPLIST_FILE = "PdSettings/PdSettings-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdSettings;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = 1;
				WRAPPER_EXTENSION = app;
			};
			name = Debug;
		};
		11A8BDD21425EC200006B996 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_OBJC_WEAK = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = "PdSettings/PdSettings-Prefix.pch";
				GCC_THUMB_SUPPORT = NO;
				GCC_VERSION = "";
				INFOPLIST_FILE = "PdSettings/PdSettings-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdSettings;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = 1;
				WRAPPER_EXTENSION = app;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		11A8BDA91425EC200006B996 /* Build configuration list for PBXProject "PdSettings" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				11A8BDCE1425EC200006B996 /* Debug */,
				11A8BDCF1425EC200006B996 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		11A8BDD01425EC200006B996 /* Build configuration list for PBXNativeTarget "PdSettings" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				11A8BDD11425EC200006B996 /* Debug */,
				11A8BDD21425EC200006B996 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 11A8BDA61425EC200006B996 /* Project object */;
}


================================================
FILE: PdSettings/ReadMe.txt
================================================
PdSettings iOS app (part of pd-for-ios, example apps for libpd in iOS)
Nov 21, 2011

This sample app demonstrates the various audio settings and how to change
them at runtime.  There are two classes in use. PdAudioUnit, a class built
around an AudioUnit, is the core of the audio processing. It asks PdBase
to process the audio. PdAudioController is a high level (convenience, if
you will) class, which tries to govern PdAudioUnit and the app's Audio
Session at the same time, deciding whether the settings are OK, need adjustment,
or if there is an unrecoverable error.

------ Notes on using PdAudioController in your project -------------------

In order to use PdAudioController, you need to add the AVAudioSession
framework to your project's "Link Binary With Libraries" section under
"Build Phases".  You can also then interact with the shared instance of
the AVAudioSession (there is only one per app) to get or set specific properties.

------ Notes on configuring PdAudioController -----------------------------

Many of the settings won't be in effect until you
reconfigure the Audio Session / Audio Unit, tap on the 'Reload Settings'
button in order to update the audio components, while others are settable
on the fly (an important one is the ticksPerBuffer size).  As such, there
are multiple configure methods that each return a PdAudioStatus code, each
documented with it's purpose at a high level in PdAudioController.h.

------ Notes on background audio: -----------------------------------------

In order for the audio callbacks to continue producing audio in the
background, you need to add an array entry to your app's info.plist file
called "UIBackgroundModes" and set one of it's values to "audio" (Xcode 4
automatically show's the human readable name for this, "Required background
modes" for the key and "App plays audio" for the value within the created 
array).  The PdSettings example app will always give provide mixing enabled,
but this is setable in PdAudioController's configure method.

------ License ------------------------------------------------------------

This software is copyrighted by Miller Puckette, Reality Jockey,
Peter Brinkmann, Richard Eakin and others.  
The following terms (the "Standard Improved BSD License") apply to all files 
associated with the software unless explicitly disclaimed in individual files:

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above  
   copyright notice, this list of conditions and the following 
   disclaimer in the documentation and/or other materials provided
   with the distribution.
3. The name of the author may not be used to endorse or promote
   products derived from this software without specific prior 
   written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: PdSettings/Resources/testinput.pd
================================================
#N canvas 584 171 580 466 10;
#X obj 153 70 adc~;
#X obj 140 217 *~;
#X obj 179 217 *~;
#X obj 85 374 dac~;
#X obj 225 153 osc~;
#X obj 291 142 sig~;
#X obj 291 122 dbtorms;
#X obj 225 182 *~;
#X obj 225 128 +~ 1000;
#X obj 225 102 *~ 50;
#X obj 225 71 osc~ 1;
#X floatatom 291 102 5 0 0 0 - - -;
#X obj 288 70 r mag;
#X obj -93 255 delwrite~ blarg0 500;
#X obj 36 256 delwrite~ blarg1 500;
#X obj -107 103 delread~ blarg0 500;
#X obj 16 103 delread~ blarg1 500;
#X obj 85 346 +~;
#X obj 125 347 +~;
#X obj 16 124 *~ 0.35;
#X obj -107 125 *~ 0.35;
#X connect 0 0 1 0;
#X connect 0 1 2 0;
#X connect 1 0 17 1;
#X connect 1 0 13 0;
#X connect 2 0 18 1;
#X connect 2 0 14 0;
#X connect 4 0 7 0;
#X connect 5 0 7 1;
#X connect 6 0 5 0;
#X connect 7 0 1 1;
#X connect 7 0 2 1;
#X connect 8 0 4 0;
#X connect 9 0 8 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 11 0;
#X connect 15 0 20 0;
#X connect 16 0 19 0;
#X connect 17 0 3 0;
#X connect 18 0 3 1;
#X connect 19 0 14 0;
#X connect 19 0 18 0;
#X connect 20 0 13 0;
#X connect 20 0 17 0;


================================================
FILE: PdSettings/Resources/testoutput.pd
================================================
#N canvas 544 67 475 289 10;
#X obj 94 31 osc~ 440;
#X obj 104 131 dac~;
#X obj 104 102 *~;
#X obj 157 78 sig~;
#X obj 157 58 dbtorms;
#X obj 157 31 r mag;
#X obj 279 207 s test-value;
#X obj 280 122 metro 1000;
#X obj 280 96 loadbang;
#X obj 279 156 f 0;
#X obj 311 157 + 1;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 0 1 1;
#X connect 3 0 2 1;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 9 0 6 0;
#X connect 9 0 10 0;
#X connect 10 0 9 1;


================================================
FILE: PdTest01/Classes/PdTest01AppDelegate.h
================================================
//
//  PdTest01AppDelegate.h
//  PdTest01
//
//  Created by Richard Lawler on 10/3/10.
/**
 * This software is copyrighted by Richard Lawler. 
 * The following terms (the "Standard Improved BSD License") apply to 
 * all files associated with the software unless explicitly disclaimed 
 * in individual files:
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above  
 * copyright notice, this list of conditions and the following 
 * disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 3. The name of the author may not be used to endorse or promote
 * products derived from this software without specific prior 
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

#import <UIKit/UIKit.h>

@interface PdTest01AppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, retain) UIWindow *window;
@end



================================================
FILE: PdTest01/Classes/PdTest01AppDelegate.m
================================================
//
//  PdTest01AppDelegate.m
//  PdTest01
//
//  Created by Richard Lawler on 10/3/10.
/**
 * This software is copyrighted by Richard Lawler. 
 * The following terms (the "Standard Improved BSD License") apply to 
 * all files associated with the software unless explicitly disclaimed 
 * in individual files:
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above  
 * copyright notice, this list of conditions and the following 
 * disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 3. The name of the author may not be used to endorse or promote
 * products derived from this software without specific prior 
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

#import "PdTest01AppDelegate.h"
#import "PdTest01ViewController.h"
#import "PdAudioController.h"
#import "PdBase.h"

@interface PdTest01AppDelegate()
@property (nonatomic, retain) PdAudioController *audioController;
@end

@implementation PdTest01AppDelegate

@synthesize window;
@synthesize audioController = audioController_;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
	self.audioController = [[PdAudioController alloc] init];
	[self.audioController configurePlaybackWithSampleRate:44100 numberChannels:2 inputEnabled:YES mixingEnabled:NO];
	[PdBase openFile:@"test.pd" path:[[NSBundle mainBundle] resourcePath]];
	[self.audioController setActive:YES];
	[self.audioController print];
	
	self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
	self.window.rootViewController = [[PdTest01ViewController alloc] init];
    [self.window makeKeyAndVisible];
	return YES;
}

- (void)dealloc {
	self.audioController = nil;
	self.window = nil;
}

@end


================================================
FILE: PdTest01/Classes/PdTest01ViewController.h
================================================
//
//  PdTest01ViewController.h
//  PdTest01
//
//  Created by Richard Lawler on 10/3/10.
/**
 * This software is copyrighted by Richard Lawler. 
 * The following terms (the "Standard Improved BSD License") apply to 
 * all files associated with the software unless explicitly disclaimed 
 * in individual files:
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above  
 * copyright notice, this list of conditions and the following 
 * disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 3. The name of the author may not be used to endorse or promote
 * products derived from this software without specific prior 
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

#import <UIKit/UIKit.h>

@interface PdTest01ViewController : UIViewController {

}

@end



================================================
FILE: PdTest01/Classes/PdTest01ViewController.m
================================================
//
//  PdTest01ViewController.m
//  PdTest01
//
//  Created by Richard Lawler on 10/3/10.
/**
 * This software is copyrighted by Richard Lawler. 
 * The following terms (the "Standard Improved BSD License") apply to 
 * all files associated with the software unless explicitly disclaimed 
 * in individual files:
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above  
 * copyright notice, this list of conditions and the following 
 * disclaimer in the documentation and/or other materials provided
 * with the distribution.
 * 3. The name of the author may not be used to endorse or promote
 * products derived from this software without specific prior 
 * written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,   
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

#import "PdTest01ViewController.h"

@implementation PdTest01ViewController

- (void)viewDidLoad {
	self.view.backgroundColor = [UIColor blueColor];
}

@end


================================================
FILE: PdTest01/PdTest01-Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleDisplayName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundleExecutable</key>
	<string>${EXECUTABLE_NAME}</string>
	<key>CFBundleIconFile</key>
	<string></string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>${PRODUCT_NAME}</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.1</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1.0</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
		<string>UIInterfaceOrientationLandscapeLeft</string>
		<string>UIInterfaceOrientationLandscapeRight</string>
	</array>
</dict>
</plist>


================================================
FILE: PdTest01/PdTest01.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		1152A402147E9D6C00DCD675 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1152A401147E9D6C00DCD675 /* AVFoundation.framework */; };
		1D3623260D0F684500981E51 /* PdTest01AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* PdTest01AppDelegate.m */; };
		1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
		28D7ACF80DDB3853001CB0EB /* PdTest01ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* PdTest01ViewController.m */; };
		3063EF36210888BE00C8A4A2 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3063EF35210888BE00C8A4A2 /* Default-568h@2x.png */; };
		30ADB08A1E5412FD00CB0E41 /* libpd-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 30ADB0871E5412E700CB0E41 /* libpd-ios.a */; };
		DC0C300E125D15FC008B6389 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC0C300D125D15FC008B6389 /* Foundation.framework */; };
		DC0C3012125D160B008B6389 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC0C3011125D160B008B6389 /* UIKit.framework */; };
		DC0C3016125D1614008B6389 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC0C3015125D1614008B6389 /* CoreGraphics.framework */; };
		DC35155112676B75004825FB /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = DC35155012676B75004825FB /* ReadMe.txt */; };
		DC609326125BBEED00F8509D /* test.pd in Resources */ = {isa = PBXBuildFile; fileRef = DC609325125BBEED00F8509D /* test.pd */; };
		DCCC7CDF125C3E0F002CF6AC /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCCC7CDE125C3E0F002CF6AC /* AudioToolbox.framework */; };
		DCD724CF125D1A1E000A4BDE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCD724CE125D1A1E000A4BDE /* Foundation.framework */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		3063EF31210888AF00C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D36D1FAA200100C67F08;
			remoteInfo = "libpd-ios-multi";
		};
		3063EF33210888AF00C8A4A2 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 30C3D2FA1FAA1FCC00C67F08;
			remoteInfo = "libpd-osx-multi";
		};
		30ADB0861E5412E700CB0E41 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = D2AAC07E0554694100DB518D;
			remoteInfo = "libpd-ios";
		};
		30ADB0881E5412E700CB0E41 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 119013AB1486450C00086F19;
			remoteInfo = "libpd-osx";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		1152A401147E9D6C00DCD675 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
		1D3623240D0F684500981E51 /* PdTest01AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PdTest01AppDelegate.h; sourceTree = "<group>"; };
		1D3623250D0F684500981E51 /* PdTest01AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PdTest01AppDelegate.m; sourceTree = "<group>"; };
		1D6058910D05DD3D006BFB54 /* PdTest01.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PdTest01.app; sourceTree = BUILT_PRODUCTS_DIR; };
		28D7ACF60DDB3853001CB0EB /* PdTest01ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PdTest01ViewController.h; sourceTree = "<group>"; };
		28D7ACF70DDB3853001CB0EB /* PdTest01ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PdTest01ViewController.m; sourceTree = "<group>"; };
		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		3063EF35210888BE00C8A4A2 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
		30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libpd.xcodeproj; path = ../libpd/libpd.xcodeproj; sourceTree = "<group>"; };
		32CA4F630368D1EE00C91783 /* PdTest01_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PdTest01_Prefix.pch; sourceTree = "<group>"; };
		8D1107310486CEB800E47090 /* PdTest01-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "PdTest01-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
		DC0C300D125D15FC008B6389 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
		DC0C3011125D160B008B6389 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
		DC0C3015125D1614008B6389 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
		DC35155012676B75004825FB /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; };
		DC609325125BBEED00F8509D /* test.pd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = test.pd; path = Resources/test.pd; sourceTree = "<group>"; };
		DCCC7CDE125C3E0F002CF6AC /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
		DCD724CE125D1A1E000A4BDE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				30ADB08A1E5412FD00CB0E41 /* libpd-ios.a in Frameworks */,
				1152A402147E9D6C00DCD675 /* AVFoundation.framework in Frameworks */,
				DCCC7CDF125C3E0F002CF6AC /* AudioToolbox.framework in Frameworks */,
				DC0C300E125D15FC008B6389 /* Foundation.framework in Frameworks */,
				DC0C3012125D160B008B6389 /* UIKit.framework in Frameworks */,
				DC0C3016125D1614008B6389 /* CoreGraphics.framework in Frameworks */,
				DCD724CF125D1A1E000A4BDE /* Foundation.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		080E96DDFE201D6D7F000001 /* Classes */ = {
			isa = PBXGroup;
			children = (
				1D3623240D0F684500981E51 /* PdTest01AppDelegate.h */,
				1D3623250D0F684500981E51 /* PdTest01AppDelegate.m */,
				28D7ACF60DDB3853001CB0EB /* PdTest01ViewController.h */,
				28D7ACF70DDB3853001CB0EB /* PdTest01ViewController.m */,
			);
			path = Classes;
			sourceTree = "<group>";
		};
		19C28FACFE9D520D11CA2CBB /* Products */ = {
			isa = PBXGroup;
			children = (
				1D6058910D05DD3D006BFB54 /* PdTest01.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
			isa = PBXGroup;
			children = (
				3063EF35210888BE00C8A4A2 /* Default-568h@2x.png */,
				DC35155012676B75004825FB /* ReadMe.txt */,
				30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */,
				080E96DDFE201D6D7F000001 /* Classes */,
				29B97315FDCFA39411CA2CEA /* Other Sources */,
				29B97317FDCFA39411CA2CEA /* Resources */,
				29B97323FDCFA39411CA2CEA /* Frameworks */,
				19C28FACFE9D520D11CA2CBB /* Products */,
			);
			name = CustomTemplate;
			sourceTree = "<group>";
		};
		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
			isa = PBXGroup;
			children = (
				32CA4F630368D1EE00C91783 /* PdTest01_Prefix.pch */,
				29B97316FDCFA39411CA2CEA /* main.m */,
			);
			name = "Other Sources";
			sourceTree = "<group>";
		};
		29B97317FDCFA39411CA2CEA /* Resources */ = {
			isa = PBXGroup;
			children = (
				DC609325125BBEED00F8509D /* test.pd */,
				8D1107310486CEB800E47090 /* PdTest01-Info.plist */,
			);
			name = Resources;
			sourceTree = "<group>";
		};
		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				DCCC7CDE125C3E0F002CF6AC /* AudioToolbox.framework */,
				DC0C300D125D15FC008B6389 /* Foundation.framework */,
				DC0C3011125D160B008B6389 /* UIKit.framework */,
				DC0C3015125D1614008B6389 /* CoreGraphics.framework */,
				DCD724CE125D1A1E000A4BDE /* Foundation.framework */,
				1152A401147E9D6C00DCD675 /* AVFoundation.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		30ADB0821E5412E700CB0E41 /* Products */ = {
			isa = PBXGroup;
			children = (
				30ADB0871E5412E700CB0E41 /* libpd-ios.a */,
				30ADB0891E5412E700CB0E41 /* libpd-osx.a */,
				3063EF32210888AF00C8A4A2 /* libpd-ios-multi.a */,
				3063EF34210888AF00C8A4A2 /* libpd-osx-multi.a */,
			);
			name = Products;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		1D6058900D05DD3D006BFB54 /* PdTest01 */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "PdTest01" */;
			buildPhases = (
				1D60588D0D05DD3D006BFB54 /* Resources */,
				1D60588E0D05DD3D006BFB54 /* Sources */,
				1D60588F0D05DD3D006BFB54 /* Frameworks */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = PdTest01;
			productName = PdTest01;
			productReference = 1D6058910D05DD3D006BFB54 /* PdTest01.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		29B97313FDCFA39411CA2CEA /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0930;
			};
			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "PdTest01" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 1;
			knownRegions = (
				English,
				Japanese,
				French,
				German,
			);
			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 30ADB0821E5412E700CB0E41 /* Products */;
					ProjectRef = 30ADB0811E5412E700CB0E41 /* libpd.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				1D6058900D05DD3D006BFB54 /* PdTest01 */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		3063EF32210888AF00C8A4A2 /* libpd-ios-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios-multi.a";
			remoteRef = 3063EF31210888AF00C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		3063EF34210888AF00C8A4A2 /* libpd-osx-multi.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx-multi.a";
			remoteRef = 3063EF33210888AF00C8A4A2 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		30ADB0871E5412E700CB0E41 /* libpd-ios.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-ios.a";
			remoteRef = 30ADB0861E5412E700CB0E41 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		30ADB0891E5412E700CB0E41 /* libpd-osx.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = "libpd-osx.a";
			remoteRef = 30ADB0881E5412E700CB0E41 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		1D60588D0D05DD3D006BFB54 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				DC609326125BBEED00F8509D /* test.pd in Resources */,
				DC35155112676B75004825FB /* ReadMe.txt in Resources */,
				3063EF36210888BE00C8A4A2 /* Default-568h@2x.png in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		1D60588E0D05DD3D006BFB54 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				1D60589B0D05DD56006BFB54 /* main.m in Sources */,
				1D3623260D0F684500981E51 /* PdTest01AppDelegate.m in Sources */,
				28D7ACF80DDB3853001CB0EB /* PdTest01ViewController.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		1D6058940D05DD3E006BFB54 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_WEAK = YES;
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = PdTest01_Prefix.pch;
				HEADER_SEARCH_PATHS = "../libpd/**";
				INFOPLIST_FILE = "PdTest01-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				ONLY_ACTIVE_ARCH = YES;
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdTest01;
				PRODUCT_NAME = PdTest01;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		1D6058950D05DD3E006BFB54 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ENABLE_OBJC_WEAK = YES;
				COPY_PHASE_STRIP = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_PREFIX_HEADER = PdTest01_Prefix.pch;
				HEADER_SEARCH_PATHS = "../libpd/**";
				INFOPLIST_FILE = "PdTest01-Info.plist";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				ONLY_ACTIVE_ARCH = YES;
				PRODUCT_BUNDLE_IDENTIFIER = cc.libpd.PdTest01;
				PRODUCT_NAME = PdTest01;
				SDKROOT = iphoneos;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		C01FCF4F08A954540054247B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = c99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
				GCC_WARN_MISSING_PARENTHESES = NO;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUS
Download .txt
gitextract_v8cb9u9o/

├── .gitignore
├── .gitmodules
├── DispatcherSample/
│   ├── DispatcherSample/
│   │   ├── DispatcherSample-Info.plist
│   │   ├── DispatcherSample-Prefix.pch
│   │   ├── DispatcherSampleAppDelegate.h
│   │   ├── DispatcherSampleAppDelegate.m
│   │   ├── DispatcherSampleViewController.h
│   │   ├── DispatcherSampleViewController.m
│   │   ├── SampleListener.h
│   │   ├── SampleListener.m
│   │   ├── en.lproj/
│   │   │   ├── DispatcherSampleViewController.xib
│   │   │   ├── InfoPlist.strings
│   │   │   └── MainWindow.xib
│   │   └── main.m
│   ├── DispatcherSample.xcodeproj/
│   │   └── project.pbxproj
│   ├── DispatcherSampleTests/
│   │   ├── DispatcherSampleTests-Info.plist
│   │   ├── DispatcherSampleTests-Prefix.pch
│   │   ├── DispatcherSampleTests.h
│   │   ├── DispatcherSampleTests.m
│   │   └── en.lproj/
│   │       └── InfoPlist.strings
│   └── patch/
│       └── sample.pd
├── LICENSE.txt
├── PdLinkSample/
│   ├── PdLinkSample/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets/
│   │   │   └── AppIcon.appiconset/
│   │   │       └── Contents.json
│   │   ├── Base.lproj/
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── ViewController.h
│   │   ├── ViewController.m
│   │   ├── main.m
│   │   └── ping.pd
│   └── PdLinkSample.xcodeproj/
│       └── project.pbxproj
├── PdSettings/
│   ├── PdSettings/
│   │   ├── PdSettings-Info.plist
│   │   ├── PdSettings-Prefix.pch
│   │   ├── PdSettingsAppDelegate.h
│   │   ├── PdSettingsAppDelegate.m
│   │   ├── PdSettingsViewController.h
│   │   ├── PdSettingsViewController.m
│   │   ├── RDebug.h
│   │   ├── en.lproj/
│   │   │   └── InfoPlist.strings
│   │   └── main.m
│   ├── PdSettings.xcodeproj/
│   │   └── project.pbxproj
│   ├── ReadMe.txt
│   └── Resources/
│       ├── testinput.pd
│       └── testoutput.pd
├── PdTest01/
│   ├── Classes/
│   │   ├── PdTest01AppDelegate.h
│   │   ├── PdTest01AppDelegate.m
│   │   ├── PdTest01ViewController.h
│   │   └── PdTest01ViewController.m
│   ├── PdTest01-Info.plist
│   ├── PdTest01.xcodeproj/
│   │   └── project.pbxproj
│   ├── PdTest01_Prefix.pch
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── test.pd
│   └── main.m
├── PdTest02/
│   ├── Classes/
│   │   ├── PdTestAppDelegate.h
│   │   ├── PdTestAppDelegate.m
│   │   ├── PdTestViewController.h
│   │   └── PdTestViewController.m
│   ├── LoopWithExtern.pd
│   ├── MainWindow.xib
│   ├── PdTest02-Info.plist
│   ├── PdTest02.xcodeproj/
│   │   └── project.pbxproj
│   ├── PdTest02_Prefix.pch
│   ├── PdTestViewController.xib
│   ├── ReadMe.txt
│   ├── Storyboard.storyboard
│   └── main.m
├── PolyPatch/
│   ├── Classes/
│   │   ├── PatchTableViewCell.h
│   │   ├── PatchTableViewCell.m
│   │   ├── PolyPatchAppDelegate.h
│   │   ├── PolyPatchAppDelegate.m
│   │   ├── PolyPatchViewController.h
│   │   └── PolyPatchViewController.m
│   ├── PolyPatch-Info.plist
│   ├── PolyPatch.xcodeproj/
│   │   └── project.pbxproj
│   ├── PolyPatch_Prefix.pch
│   ├── RCommon.h
│   ├── ReadMe.txt
│   ├── Resources/
│   │   ├── synctest.pd
│   │   ├── test.pd
│   │   └── test2.pd
│   └── main.m
├── README.md
├── SlidePad/
│   ├── Classes/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Controllers/
│   │   │   ├── PolyPatchController.h
│   │   │   ├── PolyPatchController.m
│   │   │   ├── SlidePadViewController.h
│   │   │   └── SlidePadViewController.m
│   │   └── Views/
│   │       ├── Fingerboard.h
│   │       ├── Fingerboard.m
│   │       ├── QControl.h
│   │       ├── QControl.m
│   │       ├── QRadioDial.h
│   │       ├── QRadioDial.m
│   │       ├── QSlider.h
│   │       ├── QSlider.m
│   │       ├── TouchDiamond.h
│   │       └── TouchDiamond.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── Info.plist
│   ├── SlidePad.xcodeproj/
│   │   └── project.pbxproj
│   └── pd/
│       ├── classicsub-voice.pd
│       ├── load-meter.pd
│       ├── main.pd
│       └── wavetabler-voice.pd
├── SlidePadBasic/
│   ├── Classes/
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Controllers/
│   │   │   ├── SlidePadBasicViewController.h
│   │   │   └── SlidePadBasicViewController.m
│   │   └── Views/
│   │       ├── Fingerboard.h
│   │       ├── Fingerboard.m
│   │       ├── TouchDiamond.h
│   │       └── TouchDiamond.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   └── Info.plist
│   ├── SlidePadBasic.xcodeproj/
│   │   └── project.pbxproj
│   └── pd/
│       ├── load-meter.pd
│       └── wavetabler.pd
├── WaveTables/
│   ├── Classes/
│   │   ├── PdArray.h
│   │   ├── PdArray.m
│   │   ├── RootViewController.h
│   │   ├── RootViewController.m
│   │   ├── WaveTableView.h
│   │   ├── WaveTableView.m
│   │   ├── WaveTablesAppDelegate.h
│   │   └── WaveTablesAppDelegate.m
│   ├── OtherSources/
│   │   ├── Common.h
│   │   ├── Prefix.pch
│   │   └── main.m
│   ├── ReadMe.txt
│   ├── Resources/
│   │   ├── Info.plist
│   │   ├── resynthesis.pd
│   │   ├── util/
│   │   │   ├── for.pd
│   │   │   └── print-array.pd
│   │   └── wavetable.pd
│   └── WaveTables.xcodeproj/
│       └── project.pbxproj
└── abl_link/
    ├── README.md
    └── ios/
        ├── PdLinkAudioUnit.h
        ├── PdLinkAudioUnit.m
        ├── abl_link.c
        └── abl_link.h
Download .txt
SYMBOL INDEX (25 symbols across 13 files)

FILE: DispatcherSample/DispatcherSample/DispatcherSampleAppDelegate.h
  function interface (line 17) | interface DispatcherSampleAppDelegate : NSObject <UIApplicationDelegate> {

FILE: DispatcherSample/DispatcherSample/DispatcherSampleViewController.h
  function interface (line 14) | interface DispatcherSampleViewController : UIViewController {

FILE: DispatcherSample/DispatcherSample/SampleListener.h
  function interface (line 15) | interface SampleListener : NSObject<PdListener> {

FILE: DispatcherSample/DispatcherSampleTests/DispatcherSampleTests.h
  function interface (line 12) | interface DispatcherSampleTests : SenTestCase {

FILE: PdSettings/PdSettings/RDebug.h
  function AmIBeingDebugged (line 22) | static inline bool AmIBeingDebugged(void) {

FILE: PdTest01/Classes/PdTest01ViewController.h
  function interface (line 42) | interface PdTest01ViewController : UIViewController {

FILE: PdTest02/Classes/PdTestViewController.h
  function interface (line 42) | interface PdTestViewController : UIViewController {

FILE: SlidePad/Classes/Views/QSlider.h
  type RQSliderOrientation (line 25) | typedef enum {

FILE: WaveTables/Classes/PdArray.h
  function interface (line 57) | interface PdArray : NSObject {

FILE: WaveTables/Classes/RootViewController.h
  function interface (line 49) | interface RootViewController : UIViewController <PdReceiverDelegate> {

FILE: WaveTables/Classes/WaveTableView.h
  function interface (line 47) | interface WaveTableView : UIView {

FILE: WaveTables/Classes/WaveTablesAppDelegate.h
  function interface (line 48) | interface WaveTablesAppDelegate : NSObject <UIApplicationDelegate> {

FILE: abl_link/ios/abl_link.c
  function abl_link_set_link_ref (line 18) | void abl_link_set_link_ref(ABLLinkRef ref) {
  function abl_link_set_timeline (line 22) | void abl_link_set_timeline(ABLLinkTimelineRef timeline) {
  function abl_link_set_time (line 26) | void abl_link_set_time(uint64_t curr_time) {
  type t_abl_link_tilde (line 32) | typedef struct _abl_link_tilde {
  function t_int (line 46) | static t_int *abl_link_tilde_perform(t_int *w) {
  function abl_link_tilde_dsp (line 52) | static void abl_link_tilde_dsp(t_abl_link_tilde *x, t_signal **sp) {
  function abl_link_tilde_tick (line 56) | static void abl_link_tilde_tick(t_abl_link_tilde *x) {
  function abl_link_tilde_enable (line 88) | static void abl_link_tilde_enable(t_abl_link_tilde *x, t_floatarg enable...
  function abl_link_tilde_set_tempo (line 93) | static void abl_link_tilde_set_tempo(t_abl_link_tilde *x, t_floatarg bpm) {
  function abl_link_tilde_set_resolution (line 97) | static void abl_link_tilde_set_resolution(t_abl_link_tilde *x, t_floatar...
  function abl_link_tilde_reset (line 101) | static void abl_link_tilde_reset(t_abl_link_tilde *x, t_symbol *s, int a...
  function abl_link_tilde_free (line 149) | static void abl_link_tilde_free(t_abl_link_tilde *x) {
  function abl_link_tilde_setup (line 153) | void abl_link_tilde_setup(void) {
Condensed preview — 150 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (638K chars).
[
  {
    "path": ".gitignore",
    "chars": 199,
    "preview": "#### `.gitignore`\n# Xcode noise\n*/build/*\n*.mode1v3\n*.pbxuser\n*.perspective\n*.perspectivev3\n*.mode1v3\n*.mode2v3\nproject."
  },
  {
    "path": ".gitmodules",
    "chars": 74,
    "preview": "[submodule \"libpd\"]\n\tpath = libpd\n\turl = git://github.com/libpd/libpd.git\n"
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSample-Info.plist",
    "chars": 1058,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSample-Prefix.pch",
    "chars": 338,
    "preview": "//\n// Prefix header for all source files of the 'DispatcherSample' target in the 'DispatcherSample' project\n//\n\n#import "
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSampleAppDelegate.h",
    "chars": 776,
    "preview": "//\n//  DispatcherSampleAppDelegate.h\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gma"
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSampleAppDelegate.m",
    "chars": 1467,
    "preview": "//\n//  DispatcherSampleAppDelegate.m\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gma"
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSampleViewController.h",
    "chars": 581,
    "preview": "//\n//  DispatcherSampleViewController.h\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@"
  },
  {
    "path": "DispatcherSample/DispatcherSample/DispatcherSampleViewController.m",
    "chars": 1854,
    "preview": "//\n//  DispatcherSampleViewController.m\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@"
  },
  {
    "path": "DispatcherSample/DispatcherSample/SampleListener.h",
    "chars": 462,
    "preview": "//\n//  SampleListener.h\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)\n//\n//"
  },
  {
    "path": "DispatcherSample/DispatcherSample/SampleListener.m",
    "chars": 1171,
    "preview": "//\n//  SampleListener.m\n//  DispatcherSample\n//\n//  Copyright (c) 2011 Peter Brinkmann (peter.brinkmann@gmail.com)\n//\n//"
  },
  {
    "path": "DispatcherSample/DispatcherSample/en.lproj/DispatcherSampleViewController.xib",
    "chars": 11403,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"7.10\">\n\t<data"
  },
  {
    "path": "DispatcherSample/DispatcherSample/en.lproj/InfoPlist.strings",
    "chars": 45,
    "preview": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "DispatcherSample/DispatcherSample/en.lproj/MainWindow.xib",
    "chars": 20101,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<archive type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"7.10\">\n\t<data"
  },
  {
    "path": "DispatcherSample/DispatcherSample/main.m",
    "chars": 353,
    "preview": "//\n//  main.m\n//  DispatcherSample\n//\n//  Created by Peter Brinkmann on 8/28/11.\n//  Updated by Dan Wilcox 2018.\n//\n\n#im"
  },
  {
    "path": "DispatcherSample/DispatcherSample.xcodeproj/project.pbxproj",
    "chars": 27347,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "DispatcherSample/DispatcherSampleTests/DispatcherSampleTests-Info.plist",
    "chars": 674,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "DispatcherSample/DispatcherSampleTests/DispatcherSampleTests-Prefix.pch",
    "chars": 173,
    "preview": "//\n// Prefix header for all source files of the 'DispatcherSampleTests' target in the 'DispatcherSampleTests' project\n//"
  },
  {
    "path": "DispatcherSample/DispatcherSampleTests/DispatcherSampleTests.h",
    "chars": 279,
    "preview": "//\n//  DispatcherSampleTests.h\n//  DispatcherSampleTests\n//\n//  Created by Peter Brinkmann on 8/28/11.\n//  Copyright 201"
  },
  {
    "path": "DispatcherSample/DispatcherSampleTests/DispatcherSampleTests.m",
    "chars": 492,
    "preview": "//\n//  DispatcherSampleTests.m\n//  DispatcherSampleTests\n//\n//  Created by Peter Brinkmann on 8/28/11.\n//  Copyright 201"
  },
  {
    "path": "DispatcherSample/DispatcherSampleTests/en.lproj/InfoPlist.strings",
    "chars": 45,
    "preview": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "DispatcherSample/patch/sample.pd",
    "chars": 1031,
    "preview": "#N canvas 979 1230 450 300 10;\n#X obj 52 13 loadbang;\n#X obj 235 55 osc~ 220;\n#X obj 233 93 dac~;\n#X obj 34 61 metro 100"
  },
  {
    "path": "LICENSE.txt",
    "chars": 1616,
    "preview": "This software is copyrighted by Miller Puckette, Reality Jockey, Peter\nBrinkmann, Google Inc, and others.\n\n The followin"
  },
  {
    "path": "PdLinkSample/PdLinkSample/AppDelegate.h",
    "chars": 428,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "PdLinkSample/PdLinkSample/AppDelegate.m",
    "chars": 2753,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "PdLinkSample/PdLinkSample/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 585,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "PdLinkSample/PdLinkSample/Base.lproj/LaunchScreen.storyboard",
    "chars": 1663,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
  },
  {
    "path": "PdLinkSample/PdLinkSample/Base.lproj/Main.storyboard",
    "chars": 8361,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "PdLinkSample/PdLinkSample/Info.plist",
    "chars": 1152,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PdLinkSample/PdLinkSample/ViewController.h",
    "chars": 601,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "PdLinkSample/PdLinkSample/ViewController.m",
    "chars": 3614,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "PdLinkSample/PdLinkSample/main.m",
    "chars": 346,
    "preview": "//\n//  main.m\n//  PdLinkSample\n//\n//  Created by Peter Brinkmann on 10/17/16.\n//  Copyright © 2016 Peter Brinkmann. All "
  },
  {
    "path": "PdLinkSample/PdLinkSample/ping.pd",
    "chars": 1464,
    "preview": "#N canvas 612 242 343 426 10;\n#X obj 94 307 osc~ 440;\n#X obj 73 331 *~;\n#X obj 73 375 dac~;\n#X obj 29 289 vline~;\n#X msg"
  },
  {
    "path": "PdLinkSample/PdLinkSample.xcodeproj/project.pbxproj",
    "chars": 20044,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PdSettings/PdSettings/PdSettings-Info.plist",
    "chars": 1271,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PdSettings/PdSettings/PdSettings-Prefix.pch",
    "chars": 337,
    "preview": "//\n// Prefix header for all source files of the 'PdSettings' target in the 'PdSettings' project\n//\n\n#import <Availabilit"
  },
  {
    "path": "PdSettings/PdSettings/PdSettingsAppDelegate.h",
    "chars": 288,
    "preview": "//\n//  PdSettingsAppDelegate.h\n//  PdSettings\n//\n//  Created by Richard Eakin on 18/09/11.\n//  Copyright 2011 Blarg. All"
  },
  {
    "path": "PdSettings/PdSettings/PdSettingsAppDelegate.m",
    "chars": 679,
    "preview": "//\n//  PdSettingsAppDelegate.m\n//  PdSettings\n//\n//  Created by Richard Eakin on 18/09/11.\n//  Copyright 2011 Blarg. All"
  },
  {
    "path": "PdSettings/PdSettings/PdSettingsViewController.h",
    "chars": 317,
    "preview": "//\n//  PdSettingsViewController.h\n//  PdSettings\n//\n//  Created by Richard Eakin on 18/09/11.\n//  Copyright 2011 Blarg. "
  },
  {
    "path": "PdSettings/PdSettings/PdSettingsViewController.m",
    "chars": 19131,
    "preview": "//\n//  PdSettingsViewController.m\n//  PdSettings\n//\n//  Created by Richard Eakin on 18/09/11.\n//  Copyright 2011 Blarg. "
  },
  {
    "path": "PdSettings/PdSettings/RDebug.h",
    "chars": 4127,
    "preview": "//\n//  WDebug.h\n//  Wombat\n//\n//  Created by Richard Eakin on 1/08/11.\n//  Copyright 2011 Richard Eakin. All rights rese"
  },
  {
    "path": "PdSettings/PdSettings/en.lproj/InfoPlist.strings",
    "chars": 45,
    "preview": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "PdSettings/PdSettings/main.m",
    "chars": 369,
    "preview": "//\n//  main.m\n//  PdSettings\n//\n//  Created by Richard Eakin on 18/09/11.\n//  Copyright 2011 Blarg. All rights reserved."
  },
  {
    "path": "PdSettings/PdSettings.xcodeproj/project.pbxproj",
    "chars": 21762,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PdSettings/ReadMe.txt",
    "chars": 3716,
    "preview": "PdSettings iOS app (part of pd-for-ios, example apps for libpd in iOS)\nNov 21, 2011\n\nThis sample app demonstrates the va"
  },
  {
    "path": "PdSettings/Resources/testinput.pd",
    "chars": 1050,
    "preview": "#N canvas 584 171 580 466 10;\n#X obj 153 70 adc~;\n#X obj 140 217 *~;\n#X obj 179 217 *~;\n#X obj 85 374 dac~;\n#X obj 225 1"
  },
  {
    "path": "PdSettings/Resources/testoutput.pd",
    "chars": 498,
    "preview": "#N canvas 544 67 475 289 10;\n#X obj 94 31 osc~ 440;\n#X obj 104 131 dac~;\n#X obj 104 102 *~;\n#X obj 157 78 sig~;\n#X obj 1"
  },
  {
    "path": "PdTest01/Classes/PdTest01AppDelegate.h",
    "chars": 1875,
    "preview": "//\n//  PdTest01AppDelegate.h\n//  PdTest01\n//\n//  Created by Richard Lawler on 10/3/10.\n/**\n * This software is copyright"
  },
  {
    "path": "PdTest01/Classes/PdTest01AppDelegate.m",
    "chars": 2769,
    "preview": "//\n//  PdTest01AppDelegate.m\n//  PdTest01\n//\n//  Created by Richard Lawler on 10/3/10.\n/**\n * This software is copyright"
  },
  {
    "path": "PdTest01/Classes/PdTest01ViewController.h",
    "chars": 1823,
    "preview": "//\n//  PdTest01ViewController.h\n//  PdTest01\n//\n//  Created by Richard Lawler on 10/3/10.\n/**\n * This software is copyri"
  },
  {
    "path": "PdTest01/Classes/PdTest01ViewController.m",
    "chars": 1889,
    "preview": "//\n//  PdTest01ViewController.m\n//  PdTest01\n//\n//  Created by Richard Lawler on 10/3/10.\n/**\n * This software is copyri"
  },
  {
    "path": "PdTest01/PdTest01-Info.plist",
    "chars": 1179,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PdTest01/PdTest01.xcodeproj/project.pbxproj",
    "chars": 19075,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PdTest01/PdTest01_Prefix.pch",
    "chars": 185,
    "preview": "//\n// Prefix header for all source files of the 'PdTest01' target in the 'PdTest01' project\n//\n\n#ifdef __OBJC__\n    #imp"
  },
  {
    "path": "PdTest01/ReadMe.txt",
    "chars": 4544,
    "preview": "\nThis is a simple sample Universal iPad/iPhone app using Libpd to load and run a PD patch file.\n\nThe Libpd source and do"
  },
  {
    "path": "PdTest01/Resources/test.pd",
    "chars": 896,
    "preview": "#N canvas 156 309 250 287 10;\n#X obj 78 116 dac~;\n#X obj 157 81 *~ 1;\n#X obj 158 37 *~ 0.2;\n#X obj 14 83 *~ 1;\n#X obj 15"
  },
  {
    "path": "PdTest01/main.m",
    "chars": 1934,
    "preview": "//\n//  main.m\n//  PdTest01\n//\n//  Created by Richard Lawler on 10/3/10.\n/**\n * This software is copyrighted by Richard L"
  },
  {
    "path": "PdTest02/Classes/PdTestAppDelegate.h",
    "chars": 2008,
    "preview": "//\n//  PdTestAppDelegate.h\n//  PdTest02\n//\n//  Created by Richard Lawler on 11/22/10.\n/**\n * This software is copyrighte"
  },
  {
    "path": "PdTest02/Classes/PdTestAppDelegate.m",
    "chars": 3283,
    "preview": "//\n//  PdTestAppDelegate.m\n//  PdTest02\n//\n//  Created by Richard Lawler on 11/22/10.\n//  Updated by Dan Wilcox 2018.\n/*"
  },
  {
    "path": "PdTest02/Classes/PdTestViewController.h",
    "chars": 2222,
    "preview": "//\n//  PdTestViewController.h\n//  PdTest02\n//\n//  Created by Richard Lawler on 11/22/10.\n/**\n * This software is copyrig"
  },
  {
    "path": "PdTest02/Classes/PdTestViewController.m",
    "chars": 2483,
    "preview": "//\n//  PdTestViewController.m\n//  PdTest02\n//\n//  Created by Richard Lawler on 11/22/10.\n//  Updated by Dan Wilcox 2018."
  },
  {
    "path": "PdTest02/LoopWithExtern.pd",
    "chars": 972,
    "preview": "#N canvas 805 300 665 638 10;\n#X obj 113 82 loadbang;\n#X obj 87 512 lrshift~ -1;\n#X obj 316 506 lrshift~ 2;\n#X obj 195 5"
  },
  {
    "path": "PdTest02/MainWindow.xib",
    "chars": 2092,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB\" version=\"3.0\" to"
  },
  {
    "path": "PdTest02/PdTest02-Info.plist",
    "chars": 1309,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PdTest02/PdTest02.xcodeproj/project.pbxproj",
    "chars": 20972,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PdTest02/PdTest02_Prefix.pch",
    "chars": 1888,
    "preview": "//\n// Prefix header for all source files of the 'PdTest02' target in the 'PdTest02' project\n//\n//  PdTest02\n//\n//  Creat"
  },
  {
    "path": "PdTest02/PdTestViewController.xib",
    "chars": 8629,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB\" version=\"3.0\" to"
  },
  {
    "path": "PdTest02/ReadMe.txt",
    "chars": 5752,
    "preview": "\nPdTest02 demonstrates the use of Libpd in a Universal iPad/iPhone app.\n\n*** Note: These docs are out of date, from an e"
  },
  {
    "path": "PdTest02/Storyboard.storyboard",
    "chars": 10104,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
  },
  {
    "path": "PdTest02/main.m",
    "chars": 1961,
    "preview": "//\n//  main.m\n//  PdTest02\n//\n//  Created by Richard Lawler on 11/22/10.\n//  Updated by Dan Wilcox 2018.\n/**\n * This sof"
  },
  {
    "path": "PolyPatch/Classes/PatchTableViewCell.h",
    "chars": 1903,
    "preview": "//\n//  PatchTableViewCell.h\n//  PolyPatch\n//\n/**\n * This software is copyrighted by Richard Eakin. \n * The following ter"
  },
  {
    "path": "PolyPatch/Classes/PatchTableViewCell.m",
    "chars": 3312,
    "preview": "//\n//  PatchTableViewCell.m\n//  PolyPatch\n//\n//  Created by Richard Eakin on 21/02/11.\n/**\n * This software is copyright"
  },
  {
    "path": "PolyPatch/Classes/PolyPatchAppDelegate.h",
    "chars": 1952,
    "preview": "//\n//  PolyPatchAppDelegate.h\n//  PolyPatch\n//\n//  Created by Richard Eakin on 01/23/11.\n/**\n * This software is copyrig"
  },
  {
    "path": "PolyPatch/Classes/PolyPatchAppDelegate.m",
    "chars": 3071,
    "preview": "//\n//  PolyPatchAppDelegate.m\n//  PolyPatch\n//\n//  Created by Richard Eakin on 01/23/11.\n/**\n * This software is copyrig"
  },
  {
    "path": "PolyPatch/Classes/PolyPatchViewController.h",
    "chars": 1864,
    "preview": "//\n//  PolyPatchViewController.h\n//  PolyPatch\n//\n//  Created by Richard Eakin on 01/23/11.\n/**\n * This software is copy"
  },
  {
    "path": "PolyPatch/Classes/PolyPatchViewController.m",
    "chars": 6912,
    "preview": "//\n//  PolyPatchViewController.m\n//  PolyPatch\n//\n//  Created by Richard Eakin on 01/23/11.\n//\n/**\n * This software is c"
  },
  {
    "path": "PolyPatch/PolyPatch-Info.plist",
    "chars": 1218,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "PolyPatch/PolyPatch.xcodeproj/project.pbxproj",
    "chars": 20980,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "PolyPatch/PolyPatch_Prefix.pch",
    "chars": 208,
    "preview": "//\n// Prefix header for all source files of the 'PolyPatch' target in the 'PolyPatch' project\n//\n\n#ifdef __OBJC__\n    #i"
  },
  {
    "path": "PolyPatch/RCommon.h",
    "chars": 235,
    "preview": "#if defined(R_DEBUG)\n#define RLog(nslog_string, ...)\tprintf(\"%s\\t\", __PRETTY_FUNCTION__); printf(\"%s\", [[NSString string"
  },
  {
    "path": "PolyPatch/ReadMe.txt",
    "chars": 2422,
    "preview": "PolyPatch iOS app\n\nThis is a sample app that demonstrates opening and maintaining many instances of \nthe same pd patch w"
  },
  {
    "path": "PolyPatch/Resources/synctest.pd",
    "chars": 37816,
    "preview": "#N canvas 325 128 593 583 10;\n#X floatatom 48 226 5 0 0 1 notenumber - -;\n#X obj 48 248 mtof;\n#X text 190 230 first inle"
  },
  {
    "path": "PolyPatch/Resources/test.pd",
    "chars": 146,
    "preview": "#N canvas 579 276 420 312 10;\n#X obj 87 152 loadbang;\n#X obj 87 202 print \\$0;\n#X obj 87 174 metro 10000;\n#X connect 0 0"
  },
  {
    "path": "PolyPatch/Resources/test2.pd",
    "chars": 1814,
    "preview": "#N canvas 1090 250 499 462 10;\n#X obj 145 407 dac~;\n#X obj 279 64 r \\$0-pitch;\n#X obj 49 17 loadbang;\n#X obj 146 293 lin"
  },
  {
    "path": "PolyPatch/main.m",
    "chars": 254,
    "preview": "//\n//  main.m\n//  PolyPatch\n//\n\n#import <UIKit/UIKit.h>\n#import \"PolyPatchAppDelegate.h\"\n\nint main(int argc, char *argv["
  },
  {
    "path": "README.md",
    "chars": 357,
    "preview": "\nAfter cloning the pd-for-ios repository, please make sure to cd into the\npd-for-ios folder and say\n\n    git submodule i"
  },
  {
    "path": "SlidePad/Classes/AppDelegate.h",
    "chars": 1595,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/AppDelegate.m",
    "chars": 4139,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePad/Classes/Controllers/PolyPatchController.h",
    "chars": 1914,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Controllers/PolyPatchController.m",
    "chars": 2338,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePad/Classes/Controllers/SlidePadViewController.h",
    "chars": 1427,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Controllers/SlidePadViewController.m",
    "chars": 12237,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePad/Classes/Views/Fingerboard.h",
    "chars": 2035,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/Fingerboard.m",
    "chars": 13080,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePad/Classes/Views/QControl.h",
    "chars": 1933,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/QControl.m",
    "chars": 2444,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/QRadioDial.h",
    "chars": 1400,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/QRadioDial.m",
    "chars": 6556,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/QSlider.h",
    "chars": 1544,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/QSlider.m",
    "chars": 5449,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/TouchDiamond.h",
    "chars": 1659,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/Classes/Views/TouchDiamond.m",
    "chars": 2844,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePad/OtherSources/Common.h",
    "chars": 242,
    "preview": "\n// debug macros from: http://www.cimgf.com/2010/05/02/my-current-prefix-pch-file/\n#ifdef R_DEBUG\n#define RLog(...) NSLo"
  },
  {
    "path": "SlidePad/OtherSources/Prefix.pch",
    "chars": 146,
    "preview": "\n#ifdef __OBJC__\n    #import <Foundation/Foundation.h>\n    #import <UIKit/UIKit.h>\n\t#import <QuartzCore/QuartzCore.h>\n\t#"
  },
  {
    "path": "SlidePad/OtherSources/main.m",
    "chars": 205,
    "preview": "\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char *argv[]) {\n    @autoreleasepool {\n        retu"
  },
  {
    "path": "SlidePad/ReadMe.txt",
    "chars": 2179,
    "preview": "SlidePad iOS app (part of pd-for-ios, example apps for libpd in iOS)\nNov 21, 2011\n\nThis is a polyphonic synthesizer the "
  },
  {
    "path": "SlidePad/Resources/Info.plist",
    "chars": 1069,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SlidePad/SlidePad.xcodeproj/project.pbxproj",
    "chars": 26882,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "SlidePad/pd/classicsub-voice.pd",
    "chars": 3401,
    "preview": "#N canvas 762 139 429 483 10;\n#N canvas 58 40 781 654 16x 0;\n#X obj 69 345 *~ 0.064;\n#X obj 69 368 rpole~ 0.93538;\n#X ob"
  },
  {
    "path": "SlidePad/pd/load-meter.pd",
    "chars": 549,
    "preview": "#N canvas 161 261 299 317 12;\n#X floatatom 79 255 0 0 0 0 - - -;\n#X obj 118 168 cputime;\n#X obj 118 28 loadbang;\n#X obj "
  },
  {
    "path": "SlidePad/pd/main.pd",
    "chars": 1576,
    "preview": "#N canvas 1476 761 408 358 10;\n#X obj 239 66 table wavetable 1027;\n#N canvas 0 22 450 300 load-wavetable 0;\n#X obj 53 23"
  },
  {
    "path": "SlidePad/pd/wavetabler-voice.pd",
    "chars": 1746,
    "preview": "#N canvas 840 357 432 571 10;\n#X obj 105 284 line~;\n#X obj 105 255 pack 0 40;\n#X obj 57 325 *~;\n#X obj 58 61 mtof;\n#X ob"
  },
  {
    "path": "SlidePadBasic/Classes/AppDelegate.h",
    "chars": 1595,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePadBasic/Classes/AppDelegate.m",
    "chars": 4139,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePadBasic/Classes/Controllers/SlidePadBasicViewController.h",
    "chars": 1432,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePadBasic/Classes/Controllers/SlidePadBasicViewController.m",
    "chars": 6310,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePadBasic/Classes/Views/Fingerboard.h",
    "chars": 1940,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePadBasic/Classes/Views/Fingerboard.m",
    "chars": 8209,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePadBasic/Classes/Views/TouchDiamond.h",
    "chars": 1536,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n\n Redistribution and use in source and binary forms, with or without modification,"
  },
  {
    "path": "SlidePadBasic/Classes/Views/TouchDiamond.m",
    "chars": 2869,
    "preview": "/*\n Copyright (c) 2012, Richard Eakin\n Updated by Dan Wilcox 2018\n\n Redistribution and use in source and binary forms, w"
  },
  {
    "path": "SlidePadBasic/OtherSources/Common.h",
    "chars": 161,
    "preview": "#ifdef R_DEBUG\n\t#define RLog(...) NSLog(@\"%s %@\", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])\n#else\n\t#"
  },
  {
    "path": "SlidePadBasic/OtherSources/Prefix.pch",
    "chars": 147,
    "preview": "\n#ifdef __OBJC__\n    #import <Foundation/Foundation.h>\n    #import <UIKit/UIKit.h>\n\t#import <QuartzCore/QuartzCore.h>\n\t#"
  },
  {
    "path": "SlidePadBasic/OtherSources/main.m",
    "chars": 205,
    "preview": "\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char *argv[]) {\n    @autoreleasepool {\n        retu"
  },
  {
    "path": "SlidePadBasic/ReadMe.txt",
    "chars": 2197,
    "preview": "SlidePadBasic iOS app (part of pd-for-ios, example apps for libpd in iOS)\nNov 21, 2011\n\nThis is a simpler, monophonic ve"
  },
  {
    "path": "SlidePadBasic/Resources/Info.plist",
    "chars": 1069,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SlidePadBasic/SlidePadBasic.xcodeproj/project.pbxproj",
    "chars": 23362,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "SlidePadBasic/pd/load-meter.pd",
    "chars": 549,
    "preview": "#N canvas 161 261 299 317 12;\n#X floatatom 79 255 0 0 0 0 - - -;\n#X obj 118 168 cputime;\n#X obj 118 28 loadbang;\n#X obj "
  },
  {
    "path": "SlidePadBasic/pd/wavetabler.pd",
    "chars": 1935,
    "preview": "#N canvas 414 226 652 503 10;\n#X obj 57 398 dac~;\n#X obj 105 324 line~;\n#X obj 105 275 pack 0 40;\n#X obj 57 365 *~;\n#X o"
  },
  {
    "path": "WaveTables/Classes/PdArray.h",
    "chars": 3623,
    "preview": "//\n//  PdArray.h\n//  libpd\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All rights reserve"
  },
  {
    "path": "WaveTables/Classes/PdArray.m",
    "chars": 3560,
    "preview": "//\n//  PdArray.m\n//  libpd\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All rights reserve"
  },
  {
    "path": "WaveTables/Classes/RootViewController.h",
    "chars": 2025,
    "preview": "//\n//  RootViewController.h\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. Al"
  },
  {
    "path": "WaveTables/Classes/RootViewController.m",
    "chars": 9352,
    "preview": "//\n//  RootViewController.m\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. Al"
  },
  {
    "path": "WaveTables/Classes/WaveTableView.h",
    "chars": 2350,
    "preview": "//\n//  WaveTableView.h\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All rig"
  },
  {
    "path": "WaveTables/Classes/WaveTableView.m",
    "chars": 7980,
    "preview": "//\n//  WaveTableView.m\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All rig"
  },
  {
    "path": "WaveTables/Classes/WaveTablesAppDelegate.h",
    "chars": 2156,
    "preview": "//\n//  AppDelegate.h\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All right"
  },
  {
    "path": "WaveTables/Classes/WaveTablesAppDelegate.m",
    "chars": 2754,
    "preview": "//\n//  AppDelegate.m\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All right"
  },
  {
    "path": "WaveTables/OtherSources/Common.h",
    "chars": 1017,
    "preview": "/*\n *  Common.h\n *  SlidePad\n *\n *  Created by Rich E on 22/12/10.\n *  Copyright 2010 Richard T. Eakin. All rights reser"
  },
  {
    "path": "WaveTables/OtherSources/Prefix.pch",
    "chars": 209,
    "preview": "//\n// Prefix header for all source files of the 'WaveTables' target in the 'WaveTables' project\n//\n\n#ifdef __OBJC__\n    "
  },
  {
    "path": "WaveTables/OtherSources/main.m",
    "chars": 353,
    "preview": "//\n//  main.m\n//  WaveTables\n//\n//  Created by Rich E on 16/05/11.\n//  Copyright 2011 Richard T. Eakin. All rights reser"
  },
  {
    "path": "WaveTables/ReadMe.txt",
    "chars": 3087,
    "preview": "WaveTables iOS app\nauthor: Rich Eakin (reakinator@gmail.com)\n\nSample app for libpd for iphone/ipad that demonstrates how"
  },
  {
    "path": "WaveTables/Resources/Info.plist",
    "chars": 1069,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "WaveTables/Resources/resynthesis.pd",
    "chars": 4812,
    "preview": "#N canvas 743 321 580 406 12;\n#N canvas 265 48 643 640 fft-analysis 0;\n#X obj 15 164 *~;\n#X obj 14 99 inlet~;\n#X obj 15 "
  },
  {
    "path": "WaveTables/Resources/util/for.pd",
    "chars": 646,
    "preview": "#N canvas 756 360 387 277 10;\n#X obj 53 30 inlet;\n#X obj 52 102 until;\n#X obj 79 176 sel \\$2;\n#X obj 103 103 \\$1;\n#X obj"
  },
  {
    "path": "WaveTables/Resources/util/print-array.pd",
    "chars": 365,
    "preview": "#N canvas 1475 169 308 351 10;\n#X obj 72 136 t f f;\n#X msg 68 217 \\$1 \\$2;\n#X obj 68 195 pack f f;\n#X obj 72 60 r \\$1-pr"
  },
  {
    "path": "WaveTables/Resources/wavetable.pd",
    "chars": 1416,
    "preview": "#N canvas 604 147 436 280 10;\n#X obj 31 53 mtof;\n#X obj 31 82 tabosc4~ \\$0-array;\n#N canvas 0 22 236 256 output~ 0;\n#X o"
  },
  {
    "path": "WaveTables/WaveTables.xcodeproj/project.pbxproj",
    "chars": 21301,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "abl_link/README.md",
    "chars": 1184,
    "preview": "# abl_link~\nAbleton Link integration for Pd.\n\n## Desktop/Android version\n\nThe version of abl_link~ for desktop and Andro"
  },
  {
    "path": "abl_link/ios/PdLinkAudioUnit.h",
    "chars": 313,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "abl_link/ios/PdLinkAudioUnit.m",
    "chars": 3832,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "abl_link/ios/abl_link.c",
    "chars": 5721,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  },
  {
    "path": "abl_link/ios/abl_link.h",
    "chars": 353,
    "preview": "/*\n *  For information on usage and redistribution, and for a DISCLAIMER OF ALL\n *  WARRANTIES, see the file, \"LICENSE.t"
  }
]

About this extraction

This page contains the full source code of the libpd/pd-for-ios GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 150 files (574.4 KB), approximately 180.4k tokens, and a symbol index with 25 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!