aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/MacAU/NonlinearSpace
diff options
context:
space:
mode:
authorairwindows <jinx6568@sover.net>2018-04-01 21:07:49 -0400
committerairwindows <jinx6568@sover.net>2018-04-01 21:07:49 -0400
commit14e001ba28240d6a88045aea801ee8e38c6a235c (patch)
tree10ccbe0099ac6da1823c27ef38e3d311216ea6e2 /plugins/MacAU/NonlinearSpace
parent9f95683034d82bb246ae1bfd754b95515211dd93 (diff)
downloadairwindows-lv2-port-14e001ba28240d6a88045aea801ee8e38c6a235c.tar.gz
airwindows-lv2-port-14e001ba28240d6a88045aea801ee8e38c6a235c.tar.bz2
airwindows-lv2-port-14e001ba28240d6a88045aea801ee8e38c6a235c.zip
NonlinearSpace
Diffstat (limited to 'plugins/MacAU/NonlinearSpace')
-rwxr-xr-xplugins/MacAU/NonlinearSpace/English.lproj/InfoPlist.stringsbin0 -> 404 bytes
-rwxr-xr-xplugins/MacAU/NonlinearSpace/Info.plist28
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.cpp1196
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.exp1
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.h308
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.r61
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.mode1v31369
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser131
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev31483
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj490
-rwxr-xr-xplugins/MacAU/NonlinearSpace/NonlinearSpaceVersion.h58
-rwxr-xr-xplugins/MacAU/NonlinearSpace/version.plist16
12 files changed, 5141 insertions, 0 deletions
diff --git a/plugins/MacAU/NonlinearSpace/English.lproj/InfoPlist.strings b/plugins/MacAU/NonlinearSpace/English.lproj/InfoPlist.strings
new file mode 100755
index 0000000..5009ebf
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/English.lproj/InfoPlist.strings
Binary files differ
diff --git a/plugins/MacAU/NonlinearSpace/Info.plist b/plugins/MacAU/NonlinearSpace/Info.plist
new file mode 100755
index 0000000..12f0517
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/Info.plist
@@ -0,0 +1,28 @@
+<?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>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
+ <key>CFBundleName</key>
+ <string>${PROJECTNAMEASIDENTIFIER}</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>Dthr</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CSResourcesFileMapped</key>
+ <true/>
+</dict>
+</plist>
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp
new file mode 100755
index 0000000..4c11ff3
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.cpp
@@ -0,0 +1,1196 @@
+/*
+* File: NonlinearSpace.cpp
+*
+* Version: 1.0
+*
+* Created: 12/21/14
+*
+* Copyright: Copyright © 2014 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+/*=============================================================================
+ NonlinearSpace.cpp
+
+=============================================================================*/
+#include "NonlinearSpace.h"
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+COMPONENT_ENTRY(NonlinearSpace)
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// NonlinearSpace::NonlinearSpace
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+NonlinearSpace::NonlinearSpace(AudioUnit component)
+: AUEffectBase(component)
+{
+ CreateElements();
+ Globals()->UseIndexedParameters(kNumberOfParameters);
+ SetParameter(kParam_One, kDefaultValue_ParamOne );
+ SetParameter(kParam_Two, kDefaultValue_ParamTwo );
+ SetParameter(kParam_Three, kDefaultValue_ParamThree );
+ SetParameter(kParam_Four, kDefaultValue_ParamFour );
+ SetParameter(kParam_Five, kDefaultValue_ParamFive );
+ SetParameter(kParam_Six, kDefaultValue_ParamSix );
+
+#if AU_DEBUG_DISPATCHER
+ mDebugDispatcher = new AUDebugDispatcher (this);
+#endif
+
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// NonlinearSpace::GetParameterValueStrings
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult NonlinearSpace::GetParameterValueStrings(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ CFArrayRef * outStrings)
+{
+ if ((inScope == kAudioUnitScope_Global) && (inParameterID == kParam_One)) //ID must be actual name of parameter identifier, not number
+ {
+ if (outStrings == NULL) return noErr;
+ CFStringRef strings [] =
+ {
+ kMenuItem_16,
+ kMenuItem_32,
+ kMenuItem_44,
+ kMenuItem_48,
+ kMenuItem_64,
+ kMenuItem_88,
+ kMenuItem_96,
+ };
+ *outStrings = CFArrayCreate (
+ NULL,
+ (const void **) strings,
+ (sizeof (strings) / sizeof (strings [0])),
+ NULL
+ );
+ return noErr;
+ }
+ return kAudioUnitErr_InvalidProperty;
+}
+
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// NonlinearSpace::GetParameterInfo
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult NonlinearSpace::GetParameterInfo(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ AudioUnitParameterInfo &outParameterInfo )
+{
+ ComponentResult result = noErr;
+
+ outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
+ | kAudioUnitParameterFlag_IsReadable;
+
+ if (inScope == kAudioUnitScope_Global) {
+ switch(inParameterID)
+ {
+ case kParam_One:
+ AUBase::FillInParameterName (outParameterInfo, kParameterOneName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Indexed;
+ outParameterInfo.minValue = k16;
+ outParameterInfo.maxValue = k96;
+ outParameterInfo.defaultValue = kDefaultValue_ParamOne;
+ break;
+
+ case kParam_Two:
+ AUBase::FillInParameterName (outParameterInfo, kParameterTwoName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamTwo;
+ break;
+ case kParam_Three:
+ AUBase::FillInParameterName (outParameterInfo, kParameterThreeName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamThree;
+ break;
+ case kParam_Four:
+ AUBase::FillInParameterName (outParameterInfo, kParameterFourName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamFour;
+ break;
+ case kParam_Five:
+ AUBase::FillInParameterName (outParameterInfo, kParameterFiveName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = -1.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamFive;
+ break;
+ case kParam_Six:
+ AUBase::FillInParameterName (outParameterInfo, kParameterSixName, false);
+ outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
+ outParameterInfo.minValue = 0.0;
+ outParameterInfo.maxValue = 1.0;
+ outParameterInfo.defaultValue = kDefaultValue_ParamSix;
+ break;
+ default:
+ result = kAudioUnitErr_InvalidParameter;
+ break;
+ }
+ } else {
+ result = kAudioUnitErr_InvalidParameter;
+ }
+
+
+
+ return result;
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// NonlinearSpace::GetPropertyInfo
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult NonlinearSpace::GetPropertyInfo (AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ UInt32 & outDataSize,
+ Boolean & outWritable)
+{
+ return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
+}
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// state that plugin supports only stereo-in/stereo-out processing
+UInt32 NonlinearSpace::SupportedNumChannels(const AUChannelInfo ** outInfo)
+{
+ if (outInfo != NULL)
+ {
+ static AUChannelInfo info;
+ info.inChannels = 2;
+ info.outChannels = 2;
+ *outInfo = &info;
+ }
+
+ return 1;
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// NonlinearSpace::GetProperty
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult NonlinearSpace::GetProperty( AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ void * outData )
+{
+ return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
+}
+
+// NonlinearSpace::Initialize
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ComponentResult NonlinearSpace::Initialize()
+{
+ ComponentResult result = AUEffectBase::Initialize();
+ if (result == noErr)
+ Reset(kAudioUnitScope_Global, 0);
+ return result;
+}
+
+#pragma mark ____NonlinearSpaceEffectKernel
+
+//-----------------------------------------------------------------------------------------
+// this is called the reset the DSP state (clear buffers, reset counters, etc.)
+ComponentResult NonlinearSpace::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
+{
+ int count;
+ for(count = 0; count < 2347; count++) {dMid[count] = 0.0;}
+ for(count = 0; count < 1333; count++) {dSide[count] = 0.0;}
+ for(count = 0; count < 5923; count++) {dLeft[count] = 0.0;}
+ for(count = 0; count < 5925; count++) {dRight[count] = 0.0;}
+
+ for(count = 0; count < 7574; count++) {dpreR[count] = 0.0;}
+ for(count = 0; count < 7574; count++) {dpreL[count] = 0.0;}
+
+ for(count = 0; count < 7574; count++) {dA[count] = 0.0;}
+ for(count = 0; count < 7308; count++) {dB[count] = 0.0;}
+ for(count = 0; count < 7178; count++) {dC[count] = 0.0;}
+ for(count = 0; count < 6908; count++) {dD[count] = 0.0;}
+ for(count = 0; count < 6780; count++) {dE[count] = 0.0;}
+ for(count = 0; count < 6522; count++) {dF[count] = 0.0;}
+ for(count = 0; count < 5982; count++) {dG[count] = 0.0;}
+ for(count = 0; count < 5564; count++) {dH[count] = 0.0;}
+ for(count = 0; count < 5298; count++) {dI[count] = 0.0;}
+ for(count = 0; count < 4904; count++) {dJ[count] = 0.0;}
+ for(count = 0; count < 4760; count++) {dK[count] = 0.0;}
+ for(count = 0; count < 4490; count++) {dL[count] = 0.0;}
+ for(count = 0; count < 4392; count++) {dM[count] = 0.0;}
+ for(count = 0; count < 4230; count++) {dN[count] = 0.0;}
+ for(count = 0; count < 4154; count++) {dO[count] = 0.0;}
+ for(count = 0; count < 3990; count++) {dP[count] = 0.0;}
+ for(count = 0; count < 3660; count++) {dQ[count] = 0.0;}
+ for(count = 0; count < 3408; count++) {dR[count] = 0.0;}
+ for(count = 0; count < 3252; count++) {dS[count] = 0.0;}
+ for(count = 0; count < 3000; count++) {dT[count] = 0.0;}
+ for(count = 0; count < 2918; count++) {dU[count] = 0.0;}
+ for(count = 0; count < 2750; count++) {dV[count] = 0.0;}
+ for(count = 0; count < 2504; count++) {dW[count] = 0.0;}
+ for(count = 0; count < 2424; count++) {dX[count] = 0.0;}
+ for(count = 0; count < 2147; count++) {dY[count] = 0.0;}
+ for(count = 0; count < 2089; count++) {dZ[count] = 0.0;}
+
+ oneMid = 1; delayMid = 2346; maxdelayMid = 2346;
+ oneSide = 1; delaySide = 1332; maxdelaySide = 1332;
+ oneLeft = 1; delayLeft = 5922; maxdelayLeft = 5922;
+ oneRight = 1; delayRight = 5924; maxdelayRight = 5924;
+ onepre = 1; delaypre = 7573; maxdelaypre = 7573;
+
+ oneA = 1; twoA = 2; treA = 3; delayA = 7573; maxdelayA = 7573;
+ oneB = 1; twoB = 2; treB = 3; delayB = 7307; maxdelayB = 7307;
+ oneC = 1; twoC = 2; treC = 3; delayC = 7177; maxdelayC = 7177;
+ oneD = 1; twoD = 2; treD = 3; delayD = 6907; maxdelayD = 6907;
+ oneE = 1; twoE = 2; treE = 3; delayE = 6779; maxdelayE = 6779;
+ oneF = 1; twoF = 2; treF = 3; delayF = 6521; maxdelayF = 6521;
+ oneG = 1; twoG = 2; treG = 3; delayG = 5981; maxdelayG = 5981;
+ oneH = 1; twoH = 2; treH = 3; delayH = 5563; maxdelayH = 5563;
+ oneI = 1; twoI = 2; treI = 3; delayI = 5297; maxdelayI = 5297;
+ oneJ = 1; twoJ = 2; treJ = 3; delayJ = 4903; maxdelayJ = 4903;
+ oneK = 1; twoK = 2; treK = 3; delayK = 4759; maxdelayK = 4759;
+ oneL = 1; twoL = 2; treL = 3; delayL = 4489; maxdelayL = 4489;
+ oneM = 1; twoM = 2; treM = 3; delayM = 4391; maxdelayM = 4391;
+ oneN = 1; twoN = 2; treN = 3; delayN = 4229; maxdelayN = 4229;
+ oneO = 1; twoO = 2; treO = 3; delayO = 4153; maxdelayO = 4153;
+ oneP = 1; twoP = 2; treP = 3; delayP = 3989; maxdelayP = 3989;
+ oneQ = 1; twoQ = 2; treQ = 3; delayQ = 3659; maxdelayQ = 3659;
+ oneR = 1; twoR = 2; treR = 3; delayR = 3407; maxdelayR = 3407;
+ oneS = 1; twoS = 2; treS = 3; delayS = 3251; maxdelayS = 3251;
+ oneT = 1; twoT = 2; treT = 3; delayT = 2999; maxdelayT = 2999;
+ oneU = 1; twoU = 2; treU = 3; delayU = 2917; maxdelayU = 2917;
+ oneV = 1; twoV = 2; treV = 3; delayV = 2749; maxdelayV = 2749;
+ oneW = 1; twoW = 2; treW = 3; delayW = 2503; maxdelayW = 2503;
+ oneX = 1; twoX = 2; treX = 3; delayX = 2423; maxdelayX = 2423;
+ oneY = 1; twoY = 2; treY = 3; delayY = 2146; maxdelayY = 2146;
+ oneZ = 1; twoZ = 2; treZ = 3; delayZ = 2088; maxdelayZ = 2088;
+
+ avgInputL = 0.0;
+ avgInputR = 0.0;
+ avgOutputL = 0.0;
+ avgOutputR = 0.0;
+ avg2InputL = 0.0;
+ avg2InputR = 0.0;
+ avg2OutputL = 0.0;
+ avg2OutputR = 0.0;
+ a2vgInputL = 0.0;
+ a2vgInputR = 0.0;
+ a2vgOutputL = 0.0;
+ a2vgOutputR = 0.0;
+ a2vg2InputL = 0.0;
+ a2vg2InputR = 0.0;
+ a2vg2OutputL = 0.0;
+ a2vg2OutputR = 0.0;
+
+ lowpassSampleAA = 0.0;
+ lowpassSampleAB = 0.0;
+ lowpassSampleBA = 0.0;
+ lowpassSampleBB = 0.0;
+ lowpassSampleCA = 0.0;
+ lowpassSampleCB = 0.0;
+ lowpassSampleDA = 0.0;
+ lowpassSampleDB = 0.0;
+ lowpassSampleE = 0.0;
+ lowpassSampleF = 0.0;
+ lowpassSampleG = 0.0;
+
+ rowpassSampleAA = 0.0;
+ rowpassSampleAB = 0.0;
+ rowpassSampleBA = 0.0;
+ rowpassSampleBB = 0.0;
+ rowpassSampleCA = 0.0;
+ rowpassSampleCB = 0.0;
+ rowpassSampleDA = 0.0;
+ rowpassSampleDB = 0.0;
+ rowpassSampleE = 0.0;
+ rowpassSampleF = 0.0;
+ rowpassSampleG = 0.0;
+
+ interpolA = 0.0;
+ interpolB = 0.0;
+ interpolC = 0.0;
+ interpolD = 0.0;
+ interpolE = 0.0;
+ interpolF = 0.0;
+ interpolG = 0.0;
+ interpolH = 0.0;
+ interpolI = 0.0;
+ interpolJ = 0.0;
+ interpolK = 0.0;
+ interpolL = 0.0;
+ interpolM = 0.0;
+ interpolN = 0.0;
+ interpolO = 0.0;
+ interpolP = 0.0;
+ interpolQ = 0.0;
+ interpolR = 0.0;
+ interpolS = 0.0;
+ interpolT = 0.0;
+ interpolU = 0.0;
+ interpolV = 0.0;
+ interpolW = 0.0;
+ interpolX = 0.0;
+ interpolY = 0.0;
+ interpolZ = 0.0;
+
+ pitchshiftA = 1.0 / maxdelayA;
+ pitchshiftB = 1.0 / maxdelayB;
+ pitchshiftC = 1.0 / maxdelayC;
+ pitchshiftD = 1.0 / maxdelayD;
+ pitchshiftE = 1.0 / maxdelayE;
+ pitchshiftF = 1.0 / maxdelayF;
+ pitchshiftG = 1.0 / maxdelayG;
+ pitchshiftH = 1.0 / maxdelayH;
+ pitchshiftI = 1.0 / maxdelayI;
+ pitchshiftJ = 1.0 / maxdelayJ;
+ pitchshiftK = 1.0 / maxdelayK;
+ pitchshiftL = 1.0 / maxdelayL;
+ pitchshiftM = 1.0 / maxdelayM;
+ pitchshiftN = 1.0 / maxdelayN;
+ pitchshiftO = 1.0 / maxdelayO;
+ pitchshiftP = 1.0 / maxdelayP;
+ pitchshiftQ = 1.0 / maxdelayQ;
+ pitchshiftR = 1.0 / maxdelayR;
+ pitchshiftS = 1.0 / maxdelayS;
+ pitchshiftT = 1.0 / maxdelayT;
+ pitchshiftU = 1.0 / maxdelayU;
+ pitchshiftV = 1.0 / maxdelayV;
+ pitchshiftW = 1.0 / maxdelayW;
+ pitchshiftX = 1.0 / maxdelayX;
+ pitchshiftY = 1.0 / maxdelayY;
+ pitchshiftZ = 1.0 / maxdelayZ;
+
+ nonlin = 0.0;
+
+ verboutL = 0.0;
+ verboutR = 0.0;
+ iirCCSampleL = 0.0;
+ iirCCSampleR = 0.0;
+ iirSampleL = 0.0;
+ iirSampleR = 0.0;
+ savedRoomsize = -1.0; //force update to begin
+ countdown = -1;
+ flip = true;
+
+ fpNShapeAL = 0.0;
+ fpNShapeBL = 0.0;
+ fpNShapeAR = 0.0;
+ fpNShapeBR = 0.0;
+ fpFlip = true;
+ return noErr;
+}
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// FarNonlinearSpace3::ProcessBufferLists
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+OSStatus NonlinearSpace::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
+ const AudioBufferList & inBuffer,
+ AudioBufferList & outBuffer,
+ UInt32 inFramesToProcess)
+{
+
+ Float32 * inputL = (Float32*)(inBuffer.mBuffers[0].mData);
+ Float32 * inputR = (Float32*)(inBuffer.mBuffers[1].mData);
+ Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
+ Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
+ Float32 fpTemp;
+ Float64 fpOld = 0.618033988749894848204586; //golden ratio!
+ Float64 fpNew = 1.0 - fpOld;
+ UInt32 nSampleFrames = inFramesToProcess;
+ long double drySampleL;
+ long double drySampleR;
+ long double inputSampleL;
+ long double inputSampleR;
+ long double mid;
+ long double side;
+ Float64 overallscale = 1.0;
+ int samplerate = (int) GetParameter( kParam_One );
+ switch (samplerate)
+ {
+ case 1: overallscale *= (16/44.1); break; //16
+ case 2: overallscale *= (32/44.1); break; //32
+ case 3: overallscale *= 1.0; break; //44.1
+ case 4: overallscale *= (48/44.1); break; //48
+ case 5: overallscale *= (64/44.1); break; //64
+ case 6: overallscale *= 2.0; break; //88.2
+ case 7: overallscale *= (96/44.1); break; //96
+ }
+ nonlin *= 0.001; //scale suitably to apply to our liveness value
+ Float64 basefeedback = 0.45 + (nonlin * pow(GetParameter( kParam_Five ),3)); //nonlin from previous sample, positive adds liveness when loud
+ nonlin = 0.0; //reset it here for setting up again next time
+ Float64 tankfeedback = basefeedback + (pow(GetParameter( kParam_Two ),2) * 0.05);
+ //liveness
+ if (tankfeedback > 0.5) tankfeedback = 0.5;
+ if (tankfeedback < 0.4) tankfeedback = 0.4;
+ Float64 iirAmountC = 1.0-pow(1.0-GetParameter( kParam_Three ),2);
+ //most of the range is up at the top end
+ iirAmountC += (iirAmountC/overallscale);
+ iirAmountC /= 2.0;
+ if (iirAmountC > 1.1) iirAmountC = 1.1;
+ //lowpass, check to see if it's working reasonably at 96K
+ Float64 iirAmount = (((1.0-pow(GetParameter( kParam_Four ),2)) * 0.09)/overallscale)+0.001;
+ if (iirAmount > 1.0) iirAmount = 1.0;
+ if (iirAmount < 0.001) iirAmount = 0.001;
+ Float64 wetness = GetParameter( kParam_Six );
+ Float64 dryness = 1.0 - wetness;
+ Float64 roomsize = overallscale*0.203;
+ Float64 lean = 0.125;
+ Float64 invlean = 1.0 - lean;
+ Float64 pspeed = 0.145;
+ Float64 outcouple = 0.5 - tankfeedback;
+ Float64 constallpass = 0.618033988749894848204586; //golden ratio!
+ Float64 temp;
+ int allpasstemp;
+ Float64 predelay = 0.222 * overallscale;
+
+ //reverb setup
+
+ delayA = (int(maxdelayA * roomsize));
+ delayB = (int(maxdelayB * roomsize));
+ delayC = (int(maxdelayC * roomsize));
+ delayD = (int(maxdelayD * roomsize));
+ delayE = (int(maxdelayE * roomsize));
+ delayF = (int(maxdelayF * roomsize));
+ delayG = (int(maxdelayG * roomsize));
+ delayH = (int(maxdelayH * roomsize));
+ delayI = (int(maxdelayI * roomsize));
+ delayJ = (int(maxdelayJ * roomsize));
+ delayK = (int(maxdelayK * roomsize));
+ delayL = (int(maxdelayL * roomsize));
+ delayM = (int(maxdelayM * roomsize));
+ delayN = (int(maxdelayN * roomsize));
+ delayO = (int(maxdelayO * roomsize));
+ delayP = (int(maxdelayP * roomsize));
+ delayQ = (int(maxdelayQ * roomsize));
+ delayR = (int(maxdelayR * roomsize));
+ delayS = (int(maxdelayS * roomsize));
+ delayT = (int(maxdelayT * roomsize));
+ delayU = (int(maxdelayU * roomsize));
+ delayV = (int(maxdelayV * roomsize));
+ delayW = (int(maxdelayW * roomsize));
+ delayX = (int(maxdelayX * roomsize));
+ delayY = (int(maxdelayY * roomsize));
+ delayZ = (int(maxdelayZ * roomsize));
+ delayMid = (int(maxdelayMid * roomsize));
+ delaySide = (int(maxdelaySide * roomsize));
+ delayLeft = (int(maxdelayLeft * roomsize));
+ delayRight = (int(maxdelayRight * roomsize));
+ delaypre = (int(maxdelaypre * predelay));
+
+ while (nSampleFrames-- > 0) {
+ inputSampleL = *inputL;
+ inputSampleR = *inputR;
+ if (inputSampleL<1.2e-38 && -inputSampleL<1.2e-38) {
+ static int noisesource = 0;
+ //this declares a variable before anything else is compiled. It won't keep assigning
+ //it to 0 for every sample, it's as if the declaration doesn't exist in this context,
+ //but it lets me add this denormalization fix in a single place rather than updating
+ //it in three different locations. The variable isn't thread-safe but this is only
+ //a random seed and we can share it with whatever.
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleL = applyresidue;
+ }
+ if (inputSampleR<1.2e-38 && -inputSampleR<1.2e-38) {
+ static int noisesource = 0;
+ noisesource = noisesource % 1700021; noisesource++;
+ int residue = noisesource * noisesource;
+ residue = residue % 170003; residue *= residue;
+ residue = residue % 17011; residue *= residue;
+ residue = residue % 1709; residue *= residue;
+ residue = residue % 173; residue *= residue;
+ residue = residue % 17;
+ double applyresidue = residue;
+ applyresidue *= 0.00000001;
+ applyresidue *= 0.00000001;
+ inputSampleR = applyresidue;
+ //this denormalization routine produces a white noise at -300 dB which the noise
+ //shaping will interact with to produce a bipolar output, but the noise is actually
+ //all positive. That should stop any variables from going denormal, and the routine
+ //only kicks in if digital black is input. As a final touch, if you save to 24-bit
+ //the silence will return to being digital black again.
+ }
+ drySampleL = inputSampleL;
+ drySampleR = inputSampleR;
+
+
+ dpreL[onepre] = inputSampleL;
+ dpreR[onepre] = inputSampleR;
+ onepre--; if (onepre < 0 || onepre > delaypre) {onepre = delaypre;}
+ inputSampleL = (dpreL[onepre]);
+ inputSampleR = (dpreR[onepre]);
+ //predelay
+
+ interpolA += pitchshiftA*pspeed;
+ interpolB += pitchshiftB*pspeed;
+ interpolC += pitchshiftC*pspeed;
+ interpolD += pitchshiftD*pspeed;
+ interpolE += pitchshiftE*pspeed;
+ interpolF += pitchshiftF*pspeed;
+ interpolG += pitchshiftG*pspeed;
+ interpolH += pitchshiftH*pspeed;
+ interpolI += pitchshiftI*pspeed;
+ interpolJ += pitchshiftJ*pspeed;
+ interpolK += pitchshiftK*pspeed;
+ interpolL += pitchshiftL*pspeed;
+ interpolM += pitchshiftM*pspeed;
+ interpolN += pitchshiftN*pspeed;
+ interpolO += pitchshiftO*pspeed;
+ interpolP += pitchshiftP*pspeed;
+ interpolQ += pitchshiftQ*pspeed;
+ interpolR += pitchshiftR*pspeed;
+ interpolS += pitchshiftS*pspeed;
+ interpolT += pitchshiftT*pspeed;
+ interpolU += pitchshiftU*pspeed;
+ interpolV += pitchshiftV*pspeed;
+ interpolW += pitchshiftW*pspeed;
+ interpolX += pitchshiftX*pspeed;
+ interpolY += pitchshiftY*pspeed;
+ interpolZ += pitchshiftZ*pspeed;
+ //increment all the sub-sample offsets for the pitch shifting of combs
+
+ if (interpolA > 1.0) {pitchshiftA = -fabs(pitchshiftA); interpolA += pitchshiftA*pspeed;}
+ if (interpolB > 1.0) {pitchshiftB = -fabs(pitchshiftB); interpolB += pitchshiftB*pspeed;}
+ if (interpolC > 1.0) {pitchshiftC = -fabs(pitchshiftC); interpolC += pitchshiftC*pspeed;}
+ if (interpolD > 1.0) {pitchshiftD = -fabs(pitchshiftD); interpolD += pitchshiftD*pspeed;}
+ if (interpolE > 1.0) {pitchshiftE = -fabs(pitchshiftE); interpolE += pitchshiftE*pspeed;}
+ if (interpolF > 1.0) {pitchshiftF = -fabs(pitchshiftF); interpolF += pitchshiftF*pspeed;}
+ if (interpolG > 1.0) {pitchshiftG = -fabs(pitchshiftG); interpolG += pitchshiftG*pspeed;}
+ if (interpolH > 1.0) {pitchshiftH = -fabs(pitchshiftH); interpolH += pitchshiftH*pspeed;}
+ if (interpolI > 1.0) {pitchshiftI = -fabs(pitchshiftI); interpolI += pitchshiftI*pspeed;}
+ if (interpolJ > 1.0) {pitchshiftJ = -fabs(pitchshiftJ); interpolJ += pitchshiftJ*pspeed;}
+ if (interpolK > 1.0) {pitchshiftK = -fabs(pitchshiftK); interpolK += pitchshiftK*pspeed;}
+ if (interpolL > 1.0) {pitchshiftL = -fabs(pitchshiftL); interpolL += pitchshiftL*pspeed;}
+ if (interpolM > 1.0) {pitchshiftM = -fabs(pitchshiftM); interpolM += pitchshiftM*pspeed;}
+ if (interpolN > 1.0) {pitchshiftN = -fabs(pitchshiftN); interpolN += pitchshiftN*pspeed;}
+ if (interpolO > 1.0) {pitchshiftO = -fabs(pitchshiftO); interpolO += pitchshiftO*pspeed;}
+ if (interpolP > 1.0) {pitchshiftP = -fabs(pitchshiftP); interpolP += pitchshiftP*pspeed;}
+ if (interpolQ > 1.0) {pitchshiftQ = -fabs(pitchshiftQ); interpolQ += pitchshiftQ*pspeed;}
+ if (interpolR > 1.0) {pitchshiftR = -fabs(pitchshiftR); interpolR += pitchshiftR*pspeed;}
+ if (interpolS > 1.0) {pitchshiftS = -fabs(pitchshiftS); interpolS += pitchshiftS*pspeed;}
+ if (interpolT > 1.0) {pitchshiftT = -fabs(pitchshiftT); interpolT += pitchshiftT*pspeed;}
+ if (interpolU > 1.0) {pitchshiftU = -fabs(pitchshiftU); interpolU += pitchshiftU*pspeed;}
+ if (interpolV > 1.0) {pitchshiftV = -fabs(pitchshiftV); interpolV += pitchshiftV*pspeed;}
+ if (interpolW > 1.0) {pitchshiftW = -fabs(pitchshiftW); interpolW += pitchshiftW*pspeed;}
+ if (interpolX > 1.0) {pitchshiftX = -fabs(pitchshiftX); interpolX += pitchshiftX*pspeed;}
+ if (interpolY > 1.0) {pitchshiftY = -fabs(pitchshiftY); interpolY += pitchshiftY*pspeed;}
+ if (interpolZ > 1.0) {pitchshiftZ = -fabs(pitchshiftZ); interpolZ += pitchshiftZ*pspeed;}
+
+ if (interpolA < 0.0) {pitchshiftA = fabs(pitchshiftA); interpolA += pitchshiftA*pspeed;}
+ if (interpolB < 0.0) {pitchshiftB = fabs(pitchshiftB); interpolB += pitchshiftB*pspeed;}
+ if (interpolC < 0.0) {pitchshiftC = fabs(pitchshiftC); interpolC += pitchshiftC*pspeed;}
+ if (interpolD < 0.0) {pitchshiftD = fabs(pitchshiftD); interpolD += pitchshiftD*pspeed;}
+ if (interpolE < 0.0) {pitchshiftE = fabs(pitchshiftE); interpolE += pitchshiftE*pspeed;}
+ if (interpolF < 0.0) {pitchshiftF = fabs(pitchshiftF); interpolF += pitchshiftF*pspeed;}
+ if (interpolG < 0.0) {pitchshiftG = fabs(pitchshiftG); interpolG += pitchshiftG*pspeed;}
+ if (interpolH < 0.0) {pitchshiftH = fabs(pitchshiftH); interpolH += pitchshiftH*pspeed;}
+ if (interpolI < 0.0) {pitchshiftI = fabs(pitchshiftI); interpolI += pitchshiftI*pspeed;}
+ if (interpolJ < 0.0) {pitchshiftJ = fabs(pitchshiftJ); interpolJ += pitchshiftJ*pspeed;}
+ if (interpolK < 0.0) {pitchshiftK = fabs(pitchshiftK); interpolK += pitchshiftK*pspeed;}
+ if (interpolL < 0.0) {pitchshiftL = fabs(pitchshiftL); interpolL += pitchshiftL*pspeed;}
+ if (interpolM < 0.0) {pitchshiftM = fabs(pitchshiftM); interpolM += pitchshiftM*pspeed;}
+ if (interpolN < 0.0) {pitchshiftN = fabs(pitchshiftN); interpolN += pitchshiftN*pspeed;}
+ if (interpolO < 0.0) {pitchshiftO = fabs(pitchshiftO); interpolO += pitchshiftO*pspeed;}
+ if (interpolP < 0.0) {pitchshiftP = fabs(pitchshiftP); interpolP += pitchshiftP*pspeed;}
+ if (interpolQ < 0.0) {pitchshiftQ = fabs(pitchshiftQ); interpolQ += pitchshiftQ*pspeed;}
+ if (interpolR < 0.0) {pitchshiftR = fabs(pitchshiftR); interpolR += pitchshiftR*pspeed;}
+ if (interpolS < 0.0) {pitchshiftS = fabs(pitchshiftS); interpolS += pitchshiftS*pspeed;}
+ if (interpolT < 0.0) {pitchshiftT = fabs(pitchshiftT); interpolT += pitchshiftT*pspeed;}
+ if (interpolU < 0.0) {pitchshiftU = fabs(pitchshiftU); interpolU += pitchshiftU*pspeed;}
+ if (interpolV < 0.0) {pitchshiftV = fabs(pitchshiftV); interpolV += pitchshiftV*pspeed;}
+ if (interpolW < 0.0) {pitchshiftW = fabs(pitchshiftW); interpolW += pitchshiftW*pspeed;}
+ if (interpolX < 0.0) {pitchshiftX = fabs(pitchshiftX); interpolX += pitchshiftX*pspeed;}
+ if (interpolY < 0.0) {pitchshiftY = fabs(pitchshiftY); interpolY += pitchshiftY*pspeed;}
+ if (interpolZ < 0.0) {pitchshiftZ = fabs(pitchshiftZ); interpolZ += pitchshiftZ*pspeed;}
+ //all of the sanity checks for interpol for all combs
+
+ if (verboutR > 1.0) verboutR = 1.0;
+ if (verboutR < -1.0) verboutR = -1.0;
+ if (verboutL > 1.0) verboutL = 1.0;
+ if (verboutL < -1.0) verboutL = -1.0;
+
+ inputSampleL += verboutR;
+ inputSampleR += verboutL;
+ verboutL = 0.0;
+ verboutR = 0.0;
+ //here we add in the cross-coupling- output of L tank to R, output of R tank to L
+
+
+ mid = inputSampleL + inputSampleR;
+ side = inputSampleL - inputSampleR;
+ //assign mid and side.
+
+ allpasstemp = oneMid - 1;
+ if (allpasstemp < 0 || allpasstemp > delayMid) {allpasstemp = delayMid;}
+ mid -= dMid[allpasstemp]*constallpass;
+ dMid[oneMid] = mid;
+ mid *= constallpass;
+ oneMid--; if (oneMid < 0 || oneMid > delayMid) {oneMid = delayMid;}
+ mid += (dMid[oneMid]);
+ nonlin += fabs(dMid[oneMid]);
+ //allpass filter mid
+
+ allpasstemp = oneSide - 1;
+ if (allpasstemp < 0 || allpasstemp > delaySide) {allpasstemp = delaySide;}
+ side -= dSide[allpasstemp]*constallpass;
+ dSide[oneSide] = side;
+ side *= constallpass;
+ oneSide--; if (oneSide < 0 || oneSide > delaySide) {oneSide = delaySide;}
+ side += (dSide[oneSide]);
+ nonlin += fabs(dSide[oneSide]);
+ //allpass filter side
+
+ //here we do allpasses on the mid and side
+
+ allpasstemp = oneLeft - 1;
+ if (allpasstemp < 0 || allpasstemp > delayLeft) {allpasstemp = delayLeft;}
+ inputSampleL -= dLeft[allpasstemp]*constallpass;
+ dLeft[oneLeft] = verboutL;
+ inputSampleL *= constallpass;
+ oneLeft--; if (oneLeft < 0 || oneLeft > delayLeft) {oneLeft = delayLeft;}
+ inputSampleL += (dLeft[oneLeft]);
+ nonlin += fabs(dLeft[oneLeft]);
+ //allpass filter left
+
+
+ allpasstemp = oneRight - 1;
+ if (allpasstemp < 0 || allpasstemp > delayRight) {allpasstemp = delayRight;}
+ inputSampleR -= dRight[allpasstemp]*constallpass;
+ dRight[oneRight] = verboutR;
+ inputSampleR *= constallpass;
+ oneRight--; if (oneRight < 0 || oneRight > delayRight) {oneRight = delayRight;}
+ inputSampleR += (dRight[oneRight]);
+ nonlin += fabs(dRight[oneRight]);
+ //allpass filter right
+
+
+ inputSampleL += (mid+side)/2.0;
+ inputSampleR += (mid-side)/2.0;
+ //here we get back to a L/R topology by adding the mid/side in parallel with L/R
+
+
+
+ temp = (dA[oneA]*interpolA );
+ temp += (dA[treA]*( 1.0 - interpolA ));
+ temp += ((dA[twoA]));
+ dA[treA] = (temp*tankfeedback);
+ dA[treA] += inputSampleL;
+ oneA--; if (oneA < 0 || oneA > delayA) {oneA = delayA;}
+ twoA--; if (twoA < 0 || twoA > delayA) {twoA = delayA;}
+ treA--; if (treA < 0 || treA > delayA) {treA = delayA;}
+ temp = (dA[oneA]*interpolA );
+ temp += (dA[treA]*( 1.0 - interpolA ));
+ temp *= (invlean + (lean*fabs(dA[twoA])));
+ verboutL += temp;
+ //comb filter A
+ temp = (dC[oneC]*interpolC );
+ temp += (dC[treC]*( 1.0 - interpolC ));
+ temp += ((dC[twoC]));
+ dC[treC] = (temp*tankfeedback);
+ dC[treC] += inputSampleL;
+ oneC--; if (oneC < 0 || oneC > delayC) {oneC = delayC;}
+ twoC--; if (twoC < 0 || twoC > delayC) {twoC = delayC;}
+ treC--; if (treC < 0 || treC > delayC) {treC = delayC;}
+ temp = (dC[oneC]*interpolC );
+ temp += (dC[treC]*( 1.0 - interpolC ));
+ temp *= (invlean + (lean*fabs(dC[twoC])));
+ verboutL += temp;
+ //comb filter C
+ temp = (dE[oneE]*interpolE );
+ temp += (dE[treE]*( 1.0 - interpolE ));
+ temp += ((dE[twoE]));
+ dE[treE] = (temp*tankfeedback);
+ dE[treE] += inputSampleL;
+ oneE--; if (oneE < 0 || oneE > delayE) {oneE = delayE;}
+ twoE--; if (twoE < 0 || twoE > delayE) {twoE = delayE;}
+ treE--; if (treE < 0 || treE > delayE) {treE = delayE;}
+ temp = (dE[oneE]*interpolE );
+ temp += (dE[treE]*( 1.0 - interpolE ));
+ temp *= (invlean + (lean*fabs(dE[twoE])));
+ verboutL += temp;
+ //comb filter E
+ temp = (dG[oneG]*interpolG );
+ temp += (dG[treG]*( 1.0 - interpolG ));
+ temp += ((dG[twoG]));
+ dG[treG] = (temp*tankfeedback);
+ dG[treG] += inputSampleL;
+ oneG--; if (oneG < 0 || oneG > delayG) {oneG = delayG;}
+ twoG--; if (twoG < 0 || twoG > delayG) {twoG = delayG;}
+ treG--; if (treG < 0 || treG > delayG) {treG = delayG;}
+ temp = (dG[oneG]*interpolG );
+ temp += (dG[treG]*( 1.0 - interpolG ));
+ temp *= (invlean + (lean*fabs(dG[twoG])));
+ verboutL += temp;
+ //comb filter G
+ temp = (dI[oneI]*interpolI );
+ temp += (dI[treI]*( 1.0 - interpolI ));
+ temp += ((dI[twoI]));
+ dI[treI] = (temp*tankfeedback);
+ dI[treI] += inputSampleL;
+ oneI--; if (oneI < 0 || oneI > delayI) {oneI = delayI;}
+ twoI--; if (twoI < 0 || twoI > delayI) {twoI = delayI;}
+ treI--; if (treI < 0 || treI > delayI) {treI = delayI;}
+ temp = (dI[oneI]*interpolI );
+ temp += (dI[treI]*( 1.0 - interpolI ));
+ temp *= (invlean + (lean*fabs(dI[twoI])));
+ verboutL += temp;
+ //comb filter I
+ temp = (dK[oneK]*interpolK );
+ temp += (dK[treK]*( 1.0 - interpolK ));
+ temp += ((dK[twoK]));
+ dK[treK] = (temp*tankfeedback);
+ dK[treK] += inputSampleL;
+ oneK--; if (oneK < 0 || oneK > delayK) {oneK = delayK;}
+ twoK--; if (twoK < 0 || twoK > delayK) {twoK = delayK;}
+ treK--; if (treK < 0 || treK > delayK) {treK = delayK;}
+ temp = (dK[oneK]*interpolK );
+ temp += (dK[treK]*( 1.0 - interpolK ));
+ temp *= (invlean + (lean*fabs(dK[twoK])));
+ verboutL += temp;
+ //comb filter K
+ temp = (dM[oneM]*interpolM );
+ temp += (dM[treM]*( 1.0 - interpolM ));
+ temp += ((dM[twoM]));
+ dM[treM] = (temp*tankfeedback);
+ dM[treM] += inputSampleL;
+ oneM--; if (oneM < 0 || oneM > delayM) {oneM = delayM;}
+ twoM--; if (twoM < 0 || twoM > delayM) {twoM = delayM;}
+ treM--; if (treM < 0 || treM > delayM) {treM = delayM;}
+ temp = (dM[oneM]*interpolM );
+ temp += (dM[treM]*( 1.0 - interpolM ));
+ temp *= (invlean + (lean*fabs(dM[twoM])));
+ verboutL += temp;
+ //comb filter M
+ temp = (dO[oneO]*interpolO );
+ temp += (dO[treO]*( 1.0 - interpolO ));
+ temp += ((dO[twoO]));
+ dO[treO] = (temp*tankfeedback);
+ dO[treO] += inputSampleL;
+ oneO--; if (oneO < 0 || oneO > delayO) {oneO = delayO;}
+ twoO--; if (twoO < 0 || twoO > delayO) {twoO = delayO;}
+ treO--; if (treO < 0 || treO > delayO) {treO = delayO;}
+ temp = (dO[oneO]*interpolO );
+ temp += (dO[treO]*( 1.0 - interpolO ));
+ temp *= (invlean + (lean*fabs(dO[twoO])));
+ verboutL += temp;
+ //comb filter O
+ temp = (dQ[oneQ]*interpolQ );
+ temp += (dQ[treQ]*( 1.0 - interpolQ ));
+ temp += ((dQ[twoQ]));
+ dQ[treQ] = (temp*tankfeedback);
+ dQ[treQ] += inputSampleL;
+ oneQ--; if (oneQ < 0 || oneQ > delayQ) {oneQ = delayQ;}
+ twoQ--; if (twoQ < 0 || twoQ > delayQ) {twoQ = delayQ;}
+ treQ--; if (treQ < 0 || treQ > delayQ) {treQ = delayQ;}
+ temp = (dQ[oneQ]*interpolQ );
+ temp += (dQ[treQ]*( 1.0 - interpolQ ));
+ temp *= (invlean + (lean*fabs(dQ[twoQ])));
+ verboutL += temp;
+ //comb filter Q
+ temp = (dS[oneS]*interpolS );
+ temp += (dS[treS]*( 1.0 - interpolS ));
+ temp += ((dS[twoS]));
+ dS[treS] = (temp*tankfeedback);
+ dS[treS] += inputSampleL;
+ oneS--; if (oneS < 0 || oneS > delayS) {oneS = delayS;}
+ twoS--; if (twoS < 0 || twoS > delayS) {twoS = delayS;}
+ treS--; if (treS < 0 || treS > delayS) {treS = delayS;}
+ temp = (dS[oneS]*interpolS );
+ temp += (dS[treS]*( 1.0 - interpolS ));
+ temp *= (invlean + (lean*fabs(dS[twoS])));
+ verboutL += temp;
+ //comb filter S
+ temp = (dU[oneU]*interpolU );
+ temp += (dU[treU]*( 1.0 - interpolU ));
+ temp += ((dU[twoU]));
+ dU[treU] = (temp*tankfeedback);
+ dU[treU] += inputSampleL;
+ oneU--; if (oneU < 0 || oneU > delayU) {oneU = delayU;}
+ twoU--; if (twoU < 0 || twoU > delayU) {twoU = delayU;}
+ treU--; if (treU < 0 || treU > delayU) {treU = delayU;}
+ temp = (dU[oneU]*interpolU );
+ temp += (dU[treU]*( 1.0 - interpolU ));
+ temp *= (invlean + (lean*fabs(dU[twoU])));
+ verboutL += temp;
+ //comb filter U
+ temp = (dW[oneW]*interpolW );
+ temp += (dW[treW]*( 1.0 - interpolW ));
+ temp += ((dW[twoW]));
+ dW[treW] = (temp*tankfeedback);
+ dW[treW] += inputSampleL;
+ oneW--; if (oneW < 0 || oneW > delayW) {oneW = delayW;}
+ twoW--; if (twoW < 0 || twoW > delayW) {twoW = delayW;}
+ treW--; if (treW < 0 || treW > delayW) {treW = delayW;}
+ temp = (dW[oneW]*interpolW );
+ temp += (dW[treW]*( 1.0 - interpolW ));
+ temp *= (invlean + (lean*fabs(dW[twoW])));
+ verboutL += temp;
+ //comb filter W
+ temp = (dY[oneY]*interpolY );
+ temp += (dY[treY]*( 1.0 - interpolY ));
+ temp += ((dY[twoY]));
+ dY[treY] = (temp*tankfeedback);
+ dY[treY] += inputSampleL;
+ oneY--; if (oneY < 0 || oneY > delayY) {oneY = delayY;}
+ twoY--; if (twoY < 0 || twoY > delayY) {twoY = delayY;}
+ treY--; if (treY < 0 || treY > delayY) {treY = delayY;}
+ temp = (dY[oneY]*interpolY );
+ temp += (dY[treY]*( 1.0 - interpolY ));
+ temp *= (invlean + (lean*fabs(dY[twoY])));
+ verboutL += temp;
+ //comb filter Y
+ //here we do the L delay tank, every other letter A C E G I
+
+ temp = (dB[oneB]*interpolB );
+ temp += (dB[treB]*( 1.0 - interpolB ));
+ temp += ((dB[twoB]));
+ dB[treB] = (temp*tankfeedback);
+ dB[treB] += inputSampleR;
+ oneB--; if (oneB < 0 || oneB > delayB) {oneB = delayB;}
+ twoB--; if (twoB < 0 || twoB > delayB) {twoB = delayB;}
+ treB--; if (treB < 0 || treB > delayB) {treB = delayB;}
+ temp = (dB[oneB]*interpolB );
+ temp += (dB[treB]*( 1.0 - interpolB ));
+ temp *= (invlean + (lean*fabs(dB[twoB])));
+ verboutR += temp;
+ //comb filter B
+ temp = (dD[oneD]*interpolD );
+ temp += (dD[treD]*( 1.0 - interpolD ));
+ temp += ((dD[twoD]));
+ dD[treD] = (temp*tankfeedback);
+ dD[treD] += inputSampleR;
+ oneD--; if (oneD < 0 || oneD > delayD) {oneD = delayD;}
+ twoD--; if (twoD < 0 || twoD > delayD) {twoD = delayD;}
+ treD--; if (treD < 0 || treD > delayD) {treD = delayD;}
+ temp = (dD[oneD]*interpolD );
+ temp += (dD[treD]*( 1.0 - interpolD ));
+ temp *= (invlean + (lean*fabs(dD[twoD])));
+ verboutR += temp;
+ //comb filter D
+ temp = (dF[oneF]*interpolF );
+ temp += (dF[treF]*( 1.0 - interpolF ));
+ temp += ((dF[twoF]));
+ dF[treF] = (temp*tankfeedback);
+ dF[treF] += inputSampleR;
+ oneF--; if (oneF < 0 || oneF > delayF) {oneF = delayF;}
+ twoF--; if (twoF < 0 || twoF > delayF) {twoF = delayF;}
+ treF--; if (treF < 0 || treF > delayF) {treF = delayF;}
+ temp = (dF[oneF]*interpolF );
+ temp += (dF[treF]*( 1.0 - interpolF ));
+ temp *= (invlean + (lean*fabs(dF[twoF])));
+ verboutR += temp;
+ //comb filter F
+ temp = (dH[oneH]*interpolH );
+ temp += (dH[treH]*( 1.0 - interpolH ));
+ temp += ((dH[twoH]));
+ dH[treH] = (temp*tankfeedback);
+ dH[treH] += inputSampleR;
+ oneH--; if (oneH < 0 || oneH > delayH) {oneH = delayH;}
+ twoH--; if (twoH < 0 || twoH > delayH) {twoH = delayH;}
+ treH--; if (treH < 0 || treH > delayH) {treH = delayH;}
+ temp = (dH[oneH]*interpolH );
+ temp += (dH[treH]*( 1.0 - interpolH ));
+ temp *= (invlean + (lean*fabs(dH[twoH])));
+ verboutR += temp;
+ //comb filter H
+ temp = (dJ[oneJ]*interpolJ );
+ temp += (dJ[treJ]*( 1.0 - interpolJ ));
+ temp += ((dJ[twoJ]));
+ dJ[treJ] = (temp*tankfeedback);
+ dJ[treJ] += inputSampleR;
+ oneJ--; if (oneJ < 0 || oneJ > delayJ) {oneJ = delayJ;}
+ twoJ--; if (twoJ < 0 || twoJ > delayJ) {twoJ = delayJ;}
+ treJ--; if (treJ < 0 || treJ > delayJ) {treJ = delayJ;}
+ temp = (dJ[oneJ]*interpolJ );
+ temp += (dJ[treJ]*( 1.0 - interpolJ ));
+ temp *= (invlean + (lean*fabs(dJ[twoJ])));
+ verboutR += temp;
+ //comb filter J
+ temp = (dL[oneL]*interpolL );
+ temp += (dL[treL]*( 1.0 - interpolL ));
+ temp += ((dL[twoL]));
+ dL[treL] = (temp*tankfeedback);
+ dL[treL] += inputSampleR;
+ oneL--; if (oneL < 0 || oneL > delayL) {oneL = delayL;}
+ twoL--; if (twoL < 0 || twoL > delayL) {twoL = delayL;}
+ treL--; if (treL < 0 || treL > delayL) {treL = delayL;}
+ temp = (dL[oneL]*interpolL );
+ temp += (dL[treL]*( 1.0 - interpolL ));
+ temp *= (invlean + (lean*fabs(dL[twoL])));
+ verboutR += temp;
+ //comb filter L
+ temp = (dN[oneN]*interpolN );
+ temp += (dN[treN]*( 1.0 - interpolN ));
+ temp += ((dN[twoN]));
+ dN[treN] = (temp*tankfeedback);
+ dN[treN] += inputSampleR;
+ oneN--; if (oneN < 0 || oneN > delayN) {oneN = delayN;}
+ twoN--; if (twoN < 0 || twoN > delayN) {twoN = delayN;}
+ treN--; if (treN < 0 || treN > delayN) {treN = delayN;}
+ temp = (dN[oneN]*interpolN );
+ temp += (dN[treN]*( 1.0 - interpolN ));
+ temp *= (invlean + (lean*fabs(dN[twoN])));
+ verboutR += temp;
+ //comb filter N
+ temp = (dP[oneP]*interpolP );
+ temp += (dP[treP]*( 1.0 - interpolP ));
+ temp += ((dP[twoP]));
+ dP[treP] = (temp*tankfeedback);
+ dP[treP] += inputSampleR;
+ oneP--; if (oneP < 0 || oneP > delayP) {oneP = delayP;}
+ twoP--; if (twoP < 0 || twoP > delayP) {twoP = delayP;}
+ treP--; if (treP < 0 || treP > delayP) {treP = delayP;}
+ temp = (dP[oneP]*interpolP );
+ temp += (dP[treP]*( 1.0 - interpolP ));
+ temp *= (invlean + (lean*fabs(dP[twoP])));
+ verboutR += temp;
+ //comb filter P
+ temp = (dR[oneR]*interpolR );
+ temp += (dR[treR]*( 1.0 - interpolR ));
+ temp += ((dR[twoR]));
+ dR[treR] = (temp*tankfeedback);
+ dR[treR] += inputSampleR;
+ oneR--; if (oneR < 0 || oneR > delayR) {oneR = delayR;}
+ twoR--; if (twoR < 0 || twoR > delayR) {twoR = delayR;}
+ treR--; if (treR < 0 || treR > delayR) {treR = delayR;}
+ temp = (dR[oneR]*interpolR );
+ temp += (dR[treR]*( 1.0 - interpolR ));
+ temp *= (invlean + (lean*fabs(dR[twoR])));
+ verboutR += temp;
+ //comb filter R
+ temp = (dT[oneT]*interpolT );
+ temp += (dT[treT]*( 1.0 - interpolT ));
+ temp += ((dT[twoT]));
+ dT[treT] = (temp*tankfeedback);
+ dT[treT] += inputSampleR;
+ oneT--; if (oneT < 0 || oneT > delayT) {oneT = delayT;}
+ twoT--; if (twoT < 0 || twoT > delayT) {twoT = delayT;}
+ treT--; if (treT < 0 || treT > delayT) {treT = delayT;}
+ temp = (dT[oneT]*interpolT );
+ temp += (dT[treT]*( 1.0 - interpolT ));
+ temp *= (invlean + (lean*fabs(dT[twoT])));
+ verboutR += temp;
+ //comb filter T
+ temp = (dV[oneV]*interpolV );
+ temp += (dV[treV]*( 1.0 - interpolV ));
+ temp += ((dV[twoV]));
+ dV[treV] = (temp*tankfeedback);
+ dV[treV] += inputSampleR;
+ oneV--; if (oneV < 0 || oneV > delayV) {oneV = delayV;}
+ twoV--; if (twoV < 0 || twoV > delayV) {twoV = delayV;}
+ treV--; if (treV < 0 || treV > delayV) {treV = delayV;}
+ temp = (dV[oneV]*interpolV );
+ temp += (dV[treV]*( 1.0 - interpolV ));
+ temp *= (invlean + (lean*fabs(dV[twoV])));
+ verboutR += temp;
+ //comb filter V
+ temp = (dX[oneX]*interpolX );
+ temp += (dX[treX]*( 1.0 - interpolX ));
+ temp += ((dX[twoX]));
+ dX[treX] = (temp*tankfeedback);
+ dX[treX] += inputSampleR;
+ oneX--; if (oneX < 0 || oneX > delayX) {oneX = delayX;}
+ twoX--; if (twoX < 0 || twoX > delayX) {twoX = delayX;}
+ treX--; if (treX < 0 || treX > delayX) {treX = delayX;}
+ temp = (dX[oneX]*interpolX );
+ temp += (dX[treX]*( 1.0 - interpolX ));
+ temp *= (invlean + (lean*fabs(dX[twoX])));
+ verboutR += temp;
+ //comb filter X
+ temp = (dZ[oneZ]*interpolZ );
+ temp += (dZ[treZ]*( 1.0 - interpolZ ));
+ temp += ((dZ[twoZ]));
+ dZ[treZ] = (temp*tankfeedback);
+ dZ[treZ] += inputSampleR;
+ oneZ--; if (oneZ < 0 || oneZ > delayZ) {oneZ = delayZ;}
+ twoZ--; if (twoZ < 0 || twoZ > delayZ) {twoZ = delayZ;}
+ treZ--; if (treZ < 0 || treZ > delayZ) {treZ = delayZ;}
+ temp = (dZ[oneZ]*interpolZ );
+ temp += (dZ[treZ]*( 1.0 - interpolZ ));
+ temp *= (invlean + (lean*fabs(dZ[twoZ])));
+ verboutR += temp;
+ //comb filter Z
+ //here we do the R delay tank, every other letter B D F H J
+
+ verboutL /= 8;
+ verboutR /= 8;
+
+ iirSampleL = (iirSampleL * (1 - iirAmount)) + (verboutL * iirAmount);
+ verboutL = verboutL - iirSampleL;
+
+ iirSampleR = (iirSampleR * (1 - iirAmount)) + (verboutR * iirAmount);
+ verboutR = verboutR - iirSampleR;
+ //we need to highpass the crosscoupling, it's making DC runaway
+
+ verboutL *= (invlean + (lean*fabs(verboutL)));
+ verboutR *= (invlean + (lean*fabs(verboutR)));
+ //scale back the verb tank the same way we scaled the combs
+
+ inputSampleL = verboutL;
+ inputSampleR = verboutR;
+
+ //EQ lowpass is after all processing like the compressor that might produce hash
+ if (flip)
+ {
+ lowpassSampleAA = (lowpassSampleAA * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleAA;
+ lowpassSampleBA = (lowpassSampleBA * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleBA;
+ lowpassSampleCA = (lowpassSampleCA * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleCA;
+ lowpassSampleDA = (lowpassSampleDA * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleDA;
+ lowpassSampleE = (lowpassSampleE * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleE;
+ }
+ else
+ {
+ lowpassSampleAB = (lowpassSampleAB * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleAB;
+ lowpassSampleBB = (lowpassSampleBB * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleBB;
+ lowpassSampleCB = (lowpassSampleCB * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleCB;
+ lowpassSampleDB = (lowpassSampleDB * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleDB;
+ lowpassSampleF = (lowpassSampleF * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = lowpassSampleF;
+ }
+ lowpassSampleG = (lowpassSampleG * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+ inputSampleL = (lowpassSampleG * (1 - iirAmountC)) + (inputSampleL * iirAmountC);
+
+
+ if (flip)
+ {
+ rowpassSampleAA = (rowpassSampleAA * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleAA;
+ rowpassSampleBA = (rowpassSampleBA * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleBA;
+ rowpassSampleCA = (rowpassSampleCA * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleCA;
+ rowpassSampleDA = (rowpassSampleDA * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleDA;
+ rowpassSampleE = (rowpassSampleE * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleE;
+ }
+ else
+ {
+ rowpassSampleAB = (rowpassSampleAB * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleAB;
+ rowpassSampleBB = (rowpassSampleBB * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleBB;
+ rowpassSampleCB = (rowpassSampleCB * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleCB;
+ rowpassSampleDB = (rowpassSampleDB * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleDB;
+ rowpassSampleF = (rowpassSampleF * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = rowpassSampleF;
+ }
+ rowpassSampleG = (rowpassSampleG * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+ inputSampleR = (rowpassSampleG * (1 - iirAmountC)) + (inputSampleR * iirAmountC);
+
+ iirCCSampleL = (iirCCSampleL * (1 - iirAmount)) + (verboutL * iirAmount);
+ verboutL = verboutL - iirCCSampleL;
+
+ iirCCSampleR = (iirCCSampleR * (1 - iirAmount)) + (verboutR * iirAmount);
+ verboutR = verboutR - iirCCSampleR;
+ //we need to highpass the crosscoupling, it's making DC runaway
+
+ verboutL *= (invlean + (lean*fabs(verboutL)));
+ verboutR *= (invlean + (lean*fabs(verboutR)));
+ //scale back the crosscouple the same way we scaled the combs
+ verboutL = (inputSampleL) * outcouple;
+ verboutR = (inputSampleR) * outcouple;
+ //send it off to the input again
+
+ nonlin += fabs(verboutL);
+ nonlin += fabs(verboutR);//post highpassing and a lot of processing
+
+ drySampleL *= dryness;
+ drySampleR *= dryness;
+
+ inputSampleL *= wetness;
+ inputSampleR *= wetness;
+
+ drySampleL += inputSampleL;
+ drySampleR += inputSampleR;
+ //here we combine the tanks with the dry signal
+
+ //noise shaping to 32-bit floating point
+ if (fpFlip) {
+ fpTemp = drySampleL;
+ fpNShapeAL = (fpNShapeAL*fpOld)+((drySampleL-fpTemp)*fpNew);
+ drySampleL += fpNShapeAL;
+ fpTemp = drySampleR;
+ fpNShapeAR = (fpNShapeAR*fpOld)+((drySampleR-fpTemp)*fpNew);
+ drySampleR += fpNShapeAR;
+ }
+ else {
+ fpTemp = drySampleL;
+ fpNShapeBL = (fpNShapeBL*fpOld)+((drySampleL-fpTemp)*fpNew);
+ drySampleL += fpNShapeBL;
+ fpTemp = drySampleR;
+ fpNShapeBR = (fpNShapeBR*fpOld)+((drySampleR-fpTemp)*fpNew);
+ drySampleR += fpNShapeBR;
+ }
+ fpFlip = !fpFlip;
+ //end noise shaping on 32 bit output
+ flip = !flip;
+
+ *outputL = drySampleL;
+ *outputR = drySampleR;
+ //here we mix the reverb output with the dry input
+
+ inputL += 1;
+ inputR += 1;
+ outputL += 1;
+ outputR += 1;
+ }
+ return noErr;
+}
+
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.exp b/plugins/MacAU/NonlinearSpace/NonlinearSpace.exp
new file mode 100755
index 0000000..0667dec
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.exp
@@ -0,0 +1 @@
+_NonlinearSpaceEntry
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.h b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h
new file mode 100755
index 0000000..4e1fa8c
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.h
@@ -0,0 +1,308 @@
+/*
+* File: NonlinearSpace.h
+*
+* Version: 1.0
+*
+* Created: 12/21/14
+*
+* Copyright: Copyright © 2014 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#include "AUEffectBase.h"
+#include "NonlinearSpaceVersion.h"
+
+#if AU_DEBUG_DISPATCHER
+#include "AUDebugDispatcher.h"
+#endif
+
+
+#ifndef __NonlinearSpace_h__
+#define __NonlinearSpace_h__
+
+
+#pragma mark ____NonlinearSpace Parameters
+
+// parameters
+static const float kDefaultValue_ParamTwo = 0.5;
+static const float kDefaultValue_ParamThree = 0.5;
+static const float kDefaultValue_ParamFour = 0.5;
+static const float kDefaultValue_ParamFive = 0.0;
+static const float kDefaultValue_ParamSix = 1.0;
+
+static CFStringRef kParameterOneName = CFSTR("Sample Rate");
+static const int k16 = 1;
+static const int k32 = 2;
+static const int k44 = 3;
+static const int k48 = 4;
+static const int k64 = 5;
+static const int k88 = 6;
+static const int k96 = 7;
+static const int kDefaultValue_ParamOne = k44;
+
+static CFStringRef kParameterTwoName = CFSTR("Liveness");
+static CFStringRef kParameterThreeName = CFSTR("Treble");
+static CFStringRef kParameterFourName = CFSTR("Bass");
+static CFStringRef kParameterFiveName = CFSTR("Nonlin");
+static CFStringRef kParameterSixName = CFSTR("Dry/Wet");
+//Alter the name if desired, but using the plugin name is a start
+
+static CFStringRef kMenuItem_16 = CFSTR ("16K");
+static CFStringRef kMenuItem_32 = CFSTR ("32K");
+static CFStringRef kMenuItem_44 = CFSTR ("44.1K");
+static CFStringRef kMenuItem_48 = CFSTR ("48K");
+static CFStringRef kMenuItem_64 = CFSTR ("64K");
+static CFStringRef kMenuItem_88 = CFSTR ("88.2K");
+static CFStringRef kMenuItem_96 = CFSTR ("96K");
+
+
+enum {
+ kParam_One =0,
+ kParam_Two =1,
+ kParam_Three =2,
+ kParam_Four =3,
+ kParam_Five =4,
+ kParam_Six =5,
+ //Add your parameters here...
+ kNumberOfParameters=6
+};
+
+#pragma mark ____NonlinearSpace
+class NonlinearSpace : public AUEffectBase
+{
+public:
+ NonlinearSpace(AudioUnit component);
+#if AU_DEBUG_DISPATCHER
+ virtual ~NonlinearSpace () { delete mDebugDispatcher; }
+#endif
+
+ virtual ComponentResult Reset(AudioUnitScope inScope, AudioUnitElement inElement);
+
+ virtual OSStatus ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
+ const AudioBufferList & inBuffer, AudioBufferList & outBuffer,
+ UInt32 inFramesToProcess);
+
+ virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ CFArrayRef * outStrings);
+
+ virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
+ AudioUnitParameterID inParameterID,
+ AudioUnitParameterInfo &outParameterInfo);
+
+ virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ UInt32 & outDataSize,
+ Boolean & outWritable );
+
+ virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
+ AudioUnitScope inScope,
+ AudioUnitElement inElement,
+ void * outData);
+
+ virtual UInt32 SupportedNumChannels(const AUChannelInfo ** outInfo);
+
+ virtual ComponentResult Initialize();
+ virtual bool SupportsTail () { return true; }
+ virtual Float64 GetTailTime() {return 1.0/GetSampleRate()*220000;} //roughly five seconds tail
+ virtual Float64 GetLatency() {return 0.0;} // edit these because tail time isn't 1000 samples and latency isn't 1
+
+ /*! @method Version */
+ virtual ComponentResult Version() { return kNonlinearSpaceVersion; }
+
+private:
+ Float64 avgInputL;
+ Float64 avgOutputL;
+ Float64 avg2InputL;
+ Float64 avg2OutputL;
+ Float64 avgInputR;
+ Float64 avgOutputR;
+ Float64 avg2InputR;
+ Float64 avg2OutputR;
+ Float64 a2vgInputL;
+ Float64 a2vgOutputL;
+ Float64 a2vg2InputL;
+ Float64 a2vg2OutputL;
+ Float64 a2vgInputR;
+ Float64 a2vgOutputR;
+ Float64 a2vg2InputR;
+ Float64 a2vg2OutputR;
+
+ Float64 verboutL;
+ Float64 verboutR;
+ Float64 iirCCSampleL;
+ Float64 iirCCSampleR;
+ Float64 iirSampleL;
+ Float64 iirSampleR;
+
+ Float64 dMid[2348];
+ Float64 dSide[1334];
+ Float64 dLeft[5924];
+ Float64 dRight[5926];
+
+ Float64 dpreR[7575];
+ Float64 dpreL[7575];
+
+ Float64 dA[7575];
+ Float64 dB[7309];
+ Float64 dC[7179];
+ Float64 dD[6909];
+ Float64 dE[6781];
+ Float64 dF[6523];
+ Float64 dG[5983];
+ Float64 dH[5565];
+ Float64 dI[5299];
+ Float64 dJ[4905];
+ Float64 dK[4761];
+ Float64 dL[4491];
+ Float64 dM[4393];
+ Float64 dN[4231];
+ Float64 dO[4155];
+ Float64 dP[3991];
+ Float64 dQ[3661];
+ Float64 dR[3409];
+ Float64 dS[3253];
+ Float64 dT[3001];
+ Float64 dU[2919];
+ Float64 dV[2751];
+ Float64 dW[2505];
+ Float64 dX[2425];
+ Float64 dY[2148];
+ Float64 dZ[2090];
+
+ Float64 interpolA, pitchshiftA; //7575
+ Float64 interpolB, pitchshiftB; //7309
+ Float64 interpolC, pitchshiftC; //7179
+ Float64 interpolD, pitchshiftD; //6909
+ Float64 interpolE, pitchshiftE; //6781
+ Float64 interpolF, pitchshiftF; //6523
+ Float64 interpolG, pitchshiftG; //5983
+ Float64 interpolH, pitchshiftH; //5565
+ Float64 interpolI, pitchshiftI; //5299
+ Float64 interpolJ, pitchshiftJ; //4905
+ Float64 interpolK, pitchshiftK; //4761
+ Float64 interpolL, pitchshiftL; //4491
+ Float64 interpolM, pitchshiftM; //4393
+ Float64 interpolN, pitchshiftN; //4231
+ Float64 interpolO, pitchshiftO; //4155
+ Float64 interpolP, pitchshiftP; //3991
+ Float64 interpolQ, pitchshiftQ; //3661
+ Float64 interpolR, pitchshiftR; //3409
+ Float64 interpolS, pitchshiftS; //3253
+ Float64 interpolT, pitchshiftT; //3001
+ Float64 interpolU, pitchshiftU; //2919
+ Float64 interpolV, pitchshiftV; //2751
+ Float64 interpolW, pitchshiftW; //2505
+ Float64 interpolX, pitchshiftX; //2425
+ Float64 interpolY, pitchshiftY; //2148
+ Float64 interpolZ, pitchshiftZ; //2090
+
+ int oneMid, delayMid, maxdelayMid;
+ int oneSide, delaySide, maxdelaySide;
+ int oneLeft, delayLeft, maxdelayLeft;
+ int oneRight, delayRight, maxdelayRight;
+
+ int onepre, delaypre, maxdelaypre;
+
+ int oneA, twoA, treA, delayA, maxdelayA;
+ int oneB, twoB, treB, delayB, maxdelayB;
+ int oneC, twoC, treC, delayC, maxdelayC;
+ int oneD, twoD, treD, delayD, maxdelayD;
+ int oneE, twoE, treE, delayE, maxdelayE;
+ int oneF, twoF, treF, delayF, maxdelayF;
+ int oneG, twoG, treG, delayG, maxdelayG;
+ int oneH, twoH, treH, delayH, maxdelayH;
+ int oneI, twoI, treI, delayI, maxdelayI;
+ int oneJ, twoJ, treJ, delayJ, maxdelayJ;
+ int oneK, twoK, treK, delayK, maxdelayK;
+ int oneL, twoL, treL, delayL, maxdelayL;
+ int oneM, twoM, treM, delayM, maxdelayM;
+ int oneN, twoN, treN, delayN, maxdelayN;
+ int oneO, twoO, treO, delayO, maxdelayO;
+ int oneP, twoP, treP, delayP, maxdelayP;
+ int oneQ, twoQ, treQ, delayQ, maxdelayQ;
+ int oneR, twoR, treR, delayR, maxdelayR;
+ int oneS, twoS, treS, delayS, maxdelayS;
+ int oneT, twoT, treT, delayT, maxdelayT;
+ int oneU, twoU, treU, delayU, maxdelayU;
+ int oneV, twoV, treV, delayV, maxdelayV;
+ int oneW, twoW, treW, delayW, maxdelayW;
+ int oneX, twoX, treX, delayX, maxdelayX;
+ int oneY, twoY, treY, delayY, maxdelayY;
+ int oneZ, twoZ, treZ, delayZ, maxdelayZ;
+ Float64 savedPredelay;
+ Float64 savedRoomsize;
+ int countdown;
+
+ Float64 lowpassSampleAA;
+ Float64 lowpassSampleAB;
+ Float64 lowpassSampleBA;
+ Float64 lowpassSampleBB;
+ Float64 lowpassSampleCA;
+ Float64 lowpassSampleCB;
+ Float64 lowpassSampleDA;
+ Float64 lowpassSampleDB;
+ Float64 lowpassSampleE;
+ Float64 lowpassSampleF;
+ Float64 lowpassSampleG;
+
+ Float64 rowpassSampleAA;
+ Float64 rowpassSampleAB;
+ Float64 rowpassSampleBA;
+ Float64 rowpassSampleBB;
+ Float64 rowpassSampleCA;
+ Float64 rowpassSampleCB;
+ Float64 rowpassSampleDA;
+ Float64 rowpassSampleDB;
+ Float64 rowpassSampleE;
+ Float64 rowpassSampleF;
+ Float64 rowpassSampleG;
+
+ bool flip;
+
+ Float64 nonlin;
+
+
+ Float64 fpNShapeAL;
+ Float64 fpNShapeAR;
+ Float64 fpNShapeBL;
+ Float64 fpNShapeBR;
+ bool fpFlip;
+
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+#endif \ No newline at end of file
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.r b/plugins/MacAU/NonlinearSpace/NonlinearSpace.r
new file mode 100755
index 0000000..0423248
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.r
@@ -0,0 +1,61 @@
+/*
+* File: NonlinearSpace.r
+*
+* Version: 1.0
+*
+* Created: 12/21/14
+*
+* Copyright: Copyright © 2014 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#include <AudioUnit/AudioUnit.r>
+
+#include "NonlinearSpaceVersion.h"
+
+// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
+#define kAudioUnitResID_NonlinearSpace 1000
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NonlinearSpace~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#define RES_ID kAudioUnitResID_NonlinearSpace
+#define COMP_TYPE kAudioUnitType_Effect
+#define COMP_SUBTYPE NonlinearSpace_COMP_SUBTYPE
+#define COMP_MANUF NonlinearSpace_COMP_MANF
+
+#define VERSION kNonlinearSpaceVersion
+#define NAME "Airwindows: NonlinearSpace"
+#define DESCRIPTION "NonlinearSpace AU"
+#define ENTRY_POINT "NonlinearSpaceEntry"
+
+#include "AUResources.r" \ No newline at end of file
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.mode1v3 b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.mode1v3
new file mode 100755
index 0000000..d13758f
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.mode1v3
@@ -0,0 +1,1369 @@
+<?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>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1v3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BD3CCBC148831C90062E48C</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1v3</string>
+ <key>MajorVersion</key>
+ <integer>33</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>build</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>get-info</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>8BA05A56072072A900365D66</string>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>4</integer>
+ <integer>2</integer>
+ <integer>1</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 445}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 463}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>206 278 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>203pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>NonlinearSpace.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>NonlinearSpace.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8BF86ECF1AF410530092D2B8</string>
+ <key>history</key>
+ <array>
+ <string>8BF86ECD1AF410530092D2B8</string>
+ <string>8BF86ECE1AF410530092D2B8</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {580, 242}}</string>
+ <key>RubberWindowFrame</key>
+ <string>206 278 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>242pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 247}, {580, 216}}</string>
+ <key>RubberWindowFrame</key>
+ <string>206 278 788 504 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>216pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>580pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BF86ED01AF410530092D2B8</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>8BF86ED11AF410530092D2B8</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.shortV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>2</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <string>/Users/christopherjohnson/Desktop/Dropbox/AU/NonlinearSpace/NonlinearSpace.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>206 278 788 504 0 0 1440 878 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 218}}</string>
+ <key>RubberWindowFrame</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 223}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>459pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <string>8BF86ED21AF410530092D2B8</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowContentMinSize</key>
+ <string>486 300</string>
+ <key>WindowString</key>
+ <string>668 222 500 500 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>8BD3CCBD148831C90062E48C</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {650, 250}}</string>
+ <key>RubberWindowFrame</key>
+ <string>516 632 650 250 0 0 1680 1027 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>1C78EAAE065D492600B07095</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>650 41 650 250 0 0 1280 1002 </string>
+ <key>WindowToolGUID</key>
+ <string>1C78EAAD065D492600B07095</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.0950012207031</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {374, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {630, 331}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {374, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>97</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <string>1C0AD2B0069F1E9B00FABCE6</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
new file mode 100755
index 0000000..3db0ed1
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.pbxuser
@@ -0,0 +1,131 @@
+// !$*UTF8*$!
+{
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ activeBuildConfigurationName = Release;
+ activeTarget = 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */;
+ codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 364,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 301,
+ 60,
+ 20,
+ 48,
+ 43,
+ 43,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXTargetDataSource_PrimaryAttribute,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 541885687;
+ PBXWorkspaceStateSaveDate = 541885687;
+ };
+ perUserProjectItems = {
+ 8B18199D204B916F00516BEE /* PBXTextBookmark */ = 8B18199D204B916F00516BEE /* PBXTextBookmark */;
+ 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = 8B181A99204C8C0B00516BEE /* PBXTextBookmark */;
+ };
+ sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 8B18199D204B916F00516BEE /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */;
+ name = "NonlinearSpaceVersion.h: 54";
+ rLen = 0;
+ rLoc = 2930;
+ rType = 0;
+ vrLen = 291;
+ vrLoc = 2693;
+ };
+ 8B181A99204C8C0B00516BEE /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */;
+ name = "NonlinearSpaceVersion.h: 54";
+ rLen = 0;
+ rLoc = 2930;
+ rType = 0;
+ vrLen = 242;
+ vrLoc = 2742;
+ };
+ 8BA05A660720730100365D66 /* NonlinearSpace.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {950, 15535}}";
+ sepNavSelRange = "{48346, 16}";
+ sepNavVisRange = "{47066, 1488}";
+ sepNavWindowFrame = "{{443, 40}, {997, 838}}";
+ };
+ };
+ 8BA05A670720730100365D66 /* NonlinearSpace.exp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {519, 210}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRange = "{0, 21}";
+ };
+ };
+ 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {803, 897}}";
+ sepNavSelRange = "{2930, 0}";
+ sepNavVisRange = "{2742, 242}";
+ sepNavWindowFrame = "{{15, 40}, {997, 838}}";
+ };
+ };
+ 8BC6025B073B072D006C4272 /* NonlinearSpace.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {950, 4004}}";
+ sepNavSelRange = "{3309, 0}";
+ sepNavVisRange = "{9015, 1297}";
+ sepNavWindowFrame = "{{443, 40}, {997, 838}}";
+ };
+ };
+ 8BD3CCB8148830B20062E48C /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ repositoryNamesForRoots = {
+ "" = "";
+ };
+ };
+ };
+ 8BD3CCB9148830B20062E48C /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+ 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = {
+ activeExec = 0;
+ };
+}
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3 b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
new file mode 100755
index 0000000..71cc409
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/christopherjohnson.perspectivev3
@@ -0,0 +1,1483 @@
+<?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>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Name</key>
+ <string>Project Format Conflicts List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>BundlePath</key>
+ <string>/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources</string>
+ <key>Description</key>
+ <string>AIODescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>perspectivev3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BCA700D2027EAB800D92BAD</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.defaultV3</string>
+ <key>MajorVersion</key>
+ <integer>34</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>All-In-One</string>
+ <key>Notifications</key>
+ <array>
+ <dict>
+ <key>XCObserverAutoDisconnectKey</key>
+ <true/>
+ <key>XCObserverDefintionKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>0</integer>
+ </dict>
+ <key>XCObserverFactoryKey</key>
+ <string>XCPerspectivesSpecificationIdentifier</string>
+ <key>XCObserverGUIDKey</key>
+ <string>XCObserverProjectIdentifier</string>
+ <key>XCObserverNotificationKey</key>
+ <string>PBXStatusBuildStateMessageNotification</string>
+ <key>XCObserverTargetKey</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>XCObserverTriggerKey</key>
+ <string>awakenModuleWithObserver:</string>
+ <key>XCObserverValidationKey</key>
+ <dict>
+ <key>PBXStatusErrorsKey</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23ED40692098700951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>185</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>089C166AFE841209C02AAC07</string>
+ <string>08FB77ADFE841716C02AAC07</string>
+ <string>8BA05A56072072A900365D66</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>4</integer>
+ <integer>2</integer>
+ <integer>1</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {185, 428}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <false/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {202, 446}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>185</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>605 353 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>202pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BCA70082027EAB800D92BAD</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>NonlinearSpaceVersion.h</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8BCA70092027EAB800D92BAD</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>NonlinearSpaceVersion.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>8B181A99204C8C0B00516BEE</string>
+ <key>history</key>
+ <array>
+ <string>8B18199D204B916F00516BEE</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {603, 117}}</string>
+ <key>RubberWindowFrame</key>
+ <string>605 353 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>117pt</string>
+ </dict>
+ <dict>
+ <key>Proportion</key>
+ <string>324pt</string>
+ <key>Tabs</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 27}, {603, 297}}</string>
+ <key>RubberWindowFrame</key>
+ <string>605 353 810 487 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE00692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXCVSModuleFilterTypeKey</key>
+ <integer>1032</integer>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA23EE10692099D00951B8B</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1023</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1012</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{10, 31}, {603, 297}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>603pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDockableTabModule</string>
+ <string>XCDetailModule</string>
+ <string>PBXProjectFindModule</string>
+ <string>PBXCVSModule</string>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8B181A9A204C8C0B00516BEE</string>
+ <string>1CA23ED40692098700951B8B</string>
+ <string>8B181A9B204C8C0B00516BEE</string>
+ <string>8BCA70082027EAB800D92BAD</string>
+ <string>8B181A9C204C8C0B00516BEE</string>
+ <string>1CA23EDF0692099D00951B8B</string>
+ <string>1CA23EE00692099D00951B8B</string>
+ <string>1CA23EE10692099D00951B8B</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>XCToolbarPerspectiveControl</string>
+ <string>NSToolbarSeparatorItem</string>
+ <string>active-combo-popup</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>debugger-enable-breakpoints</string>
+ <string>build-and-go</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>debugger-restart-executable</string>
+ <string>debugger-pause</string>
+ <string>debugger-step-over</string>
+ <string>debugger-step-into</string>
+ <string>debugger-step-out</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>servicesModulebreakpoints</string>
+ <string>debugger-show-console-window</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string>PBXDebugSessionModule</string>
+ <key>IconName</key>
+ <string>DebugTabIcon</string>
+ <key>Identifier</key>
+ <string>perspective.debug</string>
+ <key>IsVertical</key>
+ <integer>1</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7628064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {810, 0}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>0%</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {395, 213}}</string>
+ <string>{{395, 0}, {415, 213}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {810, 213}}</string>
+ <string>{{0, 213}, {810, 225}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CCC7629064C1048000F2A68</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {810, 438}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>443pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>XCModuleDock</string>
+ <string>PBXDebugCLIModule</string>
+ <string>PBXDebugSessionModule</string>
+ <string>XCConsole</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CC8E6A5069209BD00BB180A</string>
+ <string>1CC8E6A6069209BD00BB180A</string>
+ <string>1CCC7628064C1048000F2A68</string>
+ <string>1CCC7629064C1048000F2A68</string>
+ <string>1CC8E6A7069209BD00BB180A</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <true/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>541887499.900267</real>
+ <key>ToolbarConfigUserDefaultsMinorVersion</key>
+ <string>2</string>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>2</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string></string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>/Users/christopherjohnson/Desktop/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>605 353 810 487 0 0 1440 878 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {317, 164}}</string>
+ <string>{{317, 0}, {377, 164}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {694, 164}}</string>
+ <string>{{0, 164}, {694, 216}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {694, 380}}</string>
+ <key>RubberWindowFrame</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2AB069F1E9B00FABCE6</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>1C0AD2AC069F1E9B00FABCE6</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>321 238 694 422 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052900623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {500, 215}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>218pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build Results</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 222}, {500, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>458pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAA5065D492600B07095</string>
+ <string>1C78EAA6065D492600B07095</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowString</key>
+ <string>192 257 500 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {700, 358}}</string>
+ <key>RubberWindowFrame</key>
+ <string>149 87 700 400 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <string>1C530D5C069F1CE1000CFCEE</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>149 87 440 400 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D5B069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.09500122070312</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scmV3</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>166pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.projectFormatConflicts</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCProjectFormatConflictsModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Format Conflicts</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCProjectFormatConflictsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowContentMinSize</key>
+ <string>450 300</string>
+ <key>WindowString</key>
+ <string>50 850 472 307 0 0 1440 877</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {369, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {616, 353}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {369, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>94</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>354pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EABA065D492600B07095</string>
+ <string>1C78EABB065D492600B07095</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>597 125 616 374 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj
new file mode 100755
index 0000000..7e35f50
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpace.xcodeproj/project.pbxproj
@@ -0,0 +1,490 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 45;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */; };
+ 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */; };
+ 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */; };
+ 8B4119B70749654200361ABE /* NonlinearSpace.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* NonlinearSpace.r */; };
+ 8BA05A6B0720730100365D66 /* NonlinearSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* NonlinearSpace.cpp */; };
+ 8BA05A6E0720730100365D66 /* NonlinearSpaceVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */; };
+ 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A7F072073D200365D66 /* AUBase.cpp */; };
+ 8BA05AAF072073D300365D66 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A80072073D200365D66 /* AUBase.h */; };
+ 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A81072073D200365D66 /* AUDispatch.cpp */; };
+ 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A82072073D200365D66 /* AUDispatch.h */; };
+ 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A83072073D200365D66 /* AUInputElement.cpp */; };
+ 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A84072073D200365D66 /* AUInputElement.h */; };
+ 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A85072073D200365D66 /* AUOutputElement.cpp */; };
+ 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A86072073D200365D66 /* AUOutputElement.h */; };
+ 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A88072073D200365D66 /* AUScopeElement.cpp */; };
+ 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A89072073D200365D66 /* AUScopeElement.h */; };
+ 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8A072073D200365D66 /* ComponentBase.cpp */; };
+ 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8B072073D200365D66 /* ComponentBase.h */; };
+ 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */; };
+ 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A9B072073D200365D66 /* AUEffectBase.h */; };
+ 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA7072073D200365D66 /* AUBuffer.cpp */; };
+ 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AA8072073D200365D66 /* AUBuffer.h */; };
+ 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */; };
+ 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */; };
+ 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */; };
+ 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */; };
+ 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */; };
+ 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */; };
+ 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */; };
+ 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE10720742100365D66 /* CAMutex.cpp */; };
+ 8BA05AE80720742100365D66 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE20720742100365D66 /* CAMutex.h */; };
+ 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */; };
+ 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */; };
+ 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AF9072074E100365D66 /* AudioToolbox.framework */; };
+ 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AFA072074E100365D66 /* AudioUnit.framework */; };
+ 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05B01072074F900365D66 /* CoreServices.framework */; };
+ 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05B050720754400365D66 /* CAAUParameter.cpp */; };
+ 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05B060720754400365D66 /* CAAUParameter.h */; };
+ 8BC6025C073B072D006C4272 /* NonlinearSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* NonlinearSpace.h */; };
+ 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
+ F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */; };
+ F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
+ 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
+ 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
+ 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
+ 8BA05A660720730100365D66 /* NonlinearSpace.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NonlinearSpace.cpp; sourceTree = "<group>"; };
+ 8BA05A670720730100365D66 /* NonlinearSpace.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = NonlinearSpace.exp; sourceTree = "<group>"; };
+ 8BA05A680720730100365D66 /* NonlinearSpace.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = NonlinearSpace.r; sourceTree = "<group>"; };
+ 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NonlinearSpaceVersion.h; sourceTree = "<group>"; };
+ 8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
+ 8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
+ 8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
+ 8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
+ 8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
+ 8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
+ 8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
+ 8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
+ 8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
+ 8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
+ 8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
+ 8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
+ 8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
+ 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
+ 8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
+ 8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
+ 8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
+ 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = "<group>"; };
+ 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = "<group>"; };
+ 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
+ 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
+ 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
+ 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
+ 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
+ 8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
+ 8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
+ 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
+ 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
+ 8BA05AF9072074E100365D66 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
+ 8BA05AFA072074E100365D66 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
+ 8BA05B01072074F900365D66 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+ 8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
+ 8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
+ 8BC6025B073B072D006C4272 /* NonlinearSpace.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NonlinearSpace.h; sourceTree = "<group>"; };
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+ 8D01CCD20486CAD60068D4B7 /* NonlinearSpace.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NonlinearSpace.component; sourceTree = BUILT_PRODUCTS_DIR; };
+ F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AUBaseHelper.cpp; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.cpp; sourceTree = SYSTEM_DEVELOPER_DIR; };
+ F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AUBaseHelper.h; path = Extras/CoreAudio/AudioUnits/AUPublic/Utility/AUBaseHelper.h; sourceTree = SYSTEM_DEVELOPER_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */,
+ 8BA05AFD072074E100365D66 /* AudioUnit.framework in Frameworks */,
+ 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 089C166AFE841209C02AAC07 /* NonlinearSpace */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB77ADFE841716C02AAC07 /* Source */,
+ 089C167CFE841241C02AAC07 /* Resources */,
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
+ 19C28FB4FE9D528D11CA2CBB /* Products */,
+ );
+ name = NonlinearSpace;
+ sourceTree = "<group>";
+ };
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */,
+ 8BA05B01072074F900365D66 /* CoreServices.framework */,
+ 8BA05AF9072074E100365D66 /* AudioToolbox.framework */,
+ 8BA05AFA072074E100365D66 /* AudioUnit.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 089C167CFE841241C02AAC07 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 8D01CCD10486CAD60068D4B7 /* Info.plist */,
+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 08FB77ADFE841716C02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A56072072A900365D66 /* AU Source */,
+ 8BA05AEB0720742700365D66 /* PublicUtility */,
+ 8BA05A7D072073D200365D66 /* AUPublic */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 19C28FB4FE9D528D11CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D01CCD20486CAD60068D4B7 /* NonlinearSpace.component */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 8BA05A56072072A900365D66 /* AU Source */ = {
+ isa = PBXGroup;
+ children = (
+ 8BC6025B073B072D006C4272 /* NonlinearSpace.h */,
+ 8BA05A660720730100365D66 /* NonlinearSpace.cpp */,
+ 8BA05A670720730100365D66 /* NonlinearSpace.exp */,
+ 8BA05A680720730100365D66 /* NonlinearSpace.r */,
+ 8BA05A690720730100365D66 /* NonlinearSpaceVersion.h */,
+ );
+ name = "AU Source";
+ sourceTree = "<group>";
+ };
+ 8BA05A7D072073D200365D66 /* AUPublic */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A7E072073D200365D66 /* AUBase */,
+ 8BA05A99072073D200365D66 /* OtherBases */,
+ 8BA05AA6072073D200365D66 /* Utility */,
+ );
+ name = AUPublic;
+ path = Extras/CoreAudio/AudioUnits/AUPublic;
+ sourceTree = SYSTEM_DEVELOPER_DIR;
+ };
+ 8BA05A7E072073D200365D66 /* AUBase */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A7F072073D200365D66 /* AUBase.cpp */,
+ 8BA05A80072073D200365D66 /* AUBase.h */,
+ 8BA05A81072073D200365D66 /* AUDispatch.cpp */,
+ 8BA05A82072073D200365D66 /* AUDispatch.h */,
+ 8BA05A83072073D200365D66 /* AUInputElement.cpp */,
+ 8BA05A84072073D200365D66 /* AUInputElement.h */,
+ 8BA05A85072073D200365D66 /* AUOutputElement.cpp */,
+ 8BA05A86072073D200365D66 /* AUOutputElement.h */,
+ 8BA05A87072073D200365D66 /* AUResources.r */,
+ 8BA05A88072073D200365D66 /* AUScopeElement.cpp */,
+ 8BA05A89072073D200365D66 /* AUScopeElement.h */,
+ 8BA05A8A072073D200365D66 /* ComponentBase.cpp */,
+ 8BA05A8B072073D200365D66 /* ComponentBase.h */,
+ );
+ path = AUBase;
+ sourceTree = "<group>";
+ };
+ 8BA05A99072073D200365D66 /* OtherBases */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */,
+ 8BA05A9B072073D200365D66 /* AUEffectBase.h */,
+ );
+ path = OtherBases;
+ sourceTree = "<group>";
+ };
+ 8BA05AA6072073D200365D66 /* Utility */ = {
+ isa = PBXGroup;
+ children = (
+ F7C347EE0ECE5AF8008ADFB6 /* AUBaseHelper.cpp */,
+ F7C347EF0ECE5AF8008ADFB6 /* AUBaseHelper.h */,
+ 8BA05AA7072073D200365D66 /* AUBuffer.cpp */,
+ 8BA05AA8072073D200365D66 /* AUBuffer.h */,
+ 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */,
+ 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */,
+ 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */,
+ 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */,
+ 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */,
+ );
+ path = Utility;
+ sourceTree = "<group>";
+ };
+ 8BA05AEB0720742700365D66 /* PublicUtility */ = {
+ isa = PBXGroup;
+ children = (
+ 8BA05B050720754400365D66 /* CAAUParameter.cpp */,
+ 8BA05B060720754400365D66 /* CAAUParameter.h */,
+ 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */,
+ 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */,
+ 8BA05AE10720742100365D66 /* CAMutex.cpp */,
+ 8BA05AE20720742100365D66 /* CAMutex.h */,
+ 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */,
+ 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */,
+ 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */,
+ 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */,
+ 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */,
+ );
+ name = PublicUtility;
+ path = Extras/CoreAudio/PublicUtility;
+ sourceTree = SYSTEM_DEVELOPER_DIR;
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ 8D01CCC70486CAD60068D4B7 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05A6E0720730100365D66 /* NonlinearSpaceVersion.h in Headers */,
+ 8BA05AAF072073D300365D66 /* AUBase.h in Headers */,
+ 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */,
+ 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */,
+ 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */,
+ 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */,
+ 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */,
+ 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */,
+ 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */,
+ 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */,
+ 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */,
+ 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */,
+ 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */,
+ 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */,
+ 8BA05AE80720742100365D66 /* CAMutex.h in Headers */,
+ 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */,
+ 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */,
+ 8BC6025C073B072D006C4272 /* NonlinearSpace.h in Headers */,
+ 3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */,
+ 3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */,
+ F7C347F10ECE5AF8008ADFB6 /* AUBaseHelper.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "NonlinearSpace" */;
+ buildPhases = (
+ 8D01CCC70486CAD60068D4B7 /* Headers */,
+ 8D01CCC90486CAD60068D4B7 /* Resources */,
+ 8D01CCCB0486CAD60068D4B7 /* Sources */,
+ 8D01CCCD0486CAD60068D4B7 /* Frameworks */,
+ 8D01CCCF0486CAD60068D4B7 /* Rez */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = NonlinearSpace;
+ productInstallPath = "$(HOME)/Library/Bundles";
+ productName = NonlinearSpace;
+ productReference = 8D01CCD20486CAD60068D4B7 /* NonlinearSpace.component */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "NonlinearSpace" */;
+ compatibilityVersion = "Xcode 3.1";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 089C166AFE841209C02AAC07 /* NonlinearSpace */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D01CCC60486CAD60068D4B7 /* NonlinearSpace */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D01CCC90486CAD60068D4B7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+ 8D01CCCF0486CAD60068D4B7 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8B4119B70749654200361ABE /* NonlinearSpace.r in Rez */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D01CCCB0486CAD60068D4B7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8BA05A6B0720730100365D66 /* NonlinearSpace.cpp in Sources */,
+ 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */,
+ 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */,
+ 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */,
+ 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */,
+ 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */,
+ 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */,
+ 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */,
+ 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */,
+ 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */,
+ 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */,
+ 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */,
+ 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */,
+ 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */,
+ 3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */,
+ F7C347F00ECE5AF8008ADFB6 /* AUBaseHelper.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 089C167EFE841241C02AAC07 /* English */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 3E4BA244089833B7007656EC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EXPORTED_SYMBOLS_FILE = NonlinearSpace.exp;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GENERATE_PKGINFO_FILE = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
+ LIBRARY_STYLE = Bundle;
+ OTHER_LDFLAGS = "-bundle";
+ OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d ppc64_$ppc64 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
+ PRODUCT_NAME = NonlinearSpace;
+ WRAPPER_EXTENSION = component;
+ };
+ name = Debug;
+ };
+ 3E4BA245089833B7007656EC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ x86_64,
+ );
+ EXPORTED_SYMBOLS_FILE = NonlinearSpace.exp;
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GENERATE_PKGINFO_FILE = YES;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
+ LIBRARY_STYLE = Bundle;
+ MACOSX_DEPLOYMENT_TARGET = 10.4;
+ OTHER_LDFLAGS = "-bundle";
+ OTHER_REZFLAGS = "-d ppc_$ppc -d i386_$i386 -d x86_64_$x86_64 -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I \"$(DEVELOPER_DIR)/Examples/CoreAudio/AudioUnits/AUPublic/AUBase\"";
+ PRODUCT_NAME = NonlinearSpace;
+ SDKROOT = macosx10.5;
+ STRIP_INSTALLED_PRODUCT = YES;
+ STRIP_STYLE = all;
+ WRAPPER_EXTENSION = component;
+ };
+ name = Release;
+ };
+ 3E4BA248089833B7007656EC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ SDKROOT = macosx10.6;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Debug;
+ };
+ 3E4BA249089833B7007656EC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ SDKROOT = macosx10.6;
+ WARNING_CFLAGS = (
+ "-Wmost",
+ "-Wno-four-char-constants",
+ "-Wno-unknown-pragmas",
+ );
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "NonlinearSpace" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3E4BA244089833B7007656EC /* Debug */,
+ 3E4BA245089833B7007656EC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+ 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "NonlinearSpace" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 3E4BA248089833B7007656EC /* Debug */,
+ 3E4BA249089833B7007656EC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Debug;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}
diff --git a/plugins/MacAU/NonlinearSpace/NonlinearSpaceVersion.h b/plugins/MacAU/NonlinearSpace/NonlinearSpaceVersion.h
new file mode 100755
index 0000000..06a7617
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/NonlinearSpaceVersion.h
@@ -0,0 +1,58 @@
+/*
+* File: NonlinearSpaceVersion.h
+*
+* Version: 1.0
+*
+* Created: 12/21/14
+*
+* Copyright: Copyright © 2014 Airwindows, All Rights Reserved
+*
+* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+* consideration of your agreement to the following terms, and your use, installation, modification
+* or redistribution of this Apple software constitutes acceptance of these terms. If you do
+* not agree with these terms, please do not use, install, modify or redistribute this Apple
+* software.
+*
+* In consideration of your agreement to abide by the following terms, and subject to these terms,
+* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
+* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
+* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
+* redistribute the Apple Software in its entirety and without modifications, you must retain this
+* notice and the following text and disclaimers in all such redistributions of the Apple Software.
+* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
+* endorse or promote products derived from the Apple Software without specific prior written
+* permission from Apple. Except as expressly stated in this notice, no other rights or
+* licenses, express or implied, are granted by Apple herein, including but not limited to any
+* patent rights that may be infringed by your derivative works or by other works in which the
+* Apple Software may be incorporated.
+*
+* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
+* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
+* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
+* OR IN COMBINATION WITH YOUR PRODUCTS.
+*
+* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
+* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
+* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*/
+#ifndef __NonlinearSpaceVersion_h__
+#define __NonlinearSpaceVersion_h__
+
+
+#ifdef DEBUG
+ #define kNonlinearSpaceVersion 0xFFFFFFFF
+#else
+ #define kNonlinearSpaceVersion 0x00010000
+#endif
+
+//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
+#define NonlinearSpace_COMP_MANF 'Dthr'
+#define NonlinearSpace_COMP_SUBTYPE 'nspc'
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
+
+#endif
+
diff --git a/plugins/MacAU/NonlinearSpace/version.plist b/plugins/MacAU/NonlinearSpace/version.plist
new file mode 100755
index 0000000..11edf8a
--- /dev/null
+++ b/plugins/MacAU/NonlinearSpace/version.plist
@@ -0,0 +1,16 @@
+<?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>BuildVersion</key>
+ <string>3</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>ProjectName</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>SourceVersion</key>
+ <string>590000</string>
+</dict>
+</plist>