This commit is contained in:
Christopher Johnson 2025-08-03 17:41:33 -04:00
parent 52565448b1
commit f4ae8163f2
82 changed files with 20271 additions and 1 deletions

View file

@ -365,6 +365,7 @@ add_airwindows_plugin(ShortBuss)
add_airwindows_plugin(SideDull)
add_airwindows_plugin(Sidepass)
add_airwindows_plugin(Silhouette)
add_airwindows_plugin(Silken)
add_airwindows_plugin(Sinew)
add_airwindows_plugin(SingleEndedTriode)
add_airwindows_plugin(Slew)

View file

@ -0,0 +1,143 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Silken(audioMaster);}
Silken::Silken(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
B = 0.5;
C = 0.5;
for(int count = 0; count < 32767; count++) {firBufferL[count] = 0.0; firBufferR[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSampleL = 0.0;
firlastSampleR = 0.0;
for (int x = 0; x < 16; x++) {infirmediateL[x] = 0.0; infirmediateR[x] = 0.0;}
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
_canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
_canDo.insert("x2in2out");
setNumInputs(kNumInputs);
setNumOutputs(kNumOutputs);
setUniqueID(kUniqueId);
canProcessReplacing(); // supports output replacing
canDoubleReplacing(); // supports double precision processing
programsAreChunks(true);
vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
}
Silken::~Silken() {}
VstInt32 Silken::getVendorVersion () {return 1000;}
void Silken::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Silken::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
static float pinParameter(float data)
{
if (data < 0.0f) return 0.0f;
if (data > 1.0f) return 1.0f;
return data;
}
VstInt32 Silken::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
started with. */
*data = chunkData;
return kNumParameters * sizeof(float);
}
VstInt32 Silken::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
code from setParameter() here. */
return 0;
}
void Silken::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Silken::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
default: break; // unknown parameter, shouldn't happen!
} return 0.0; //we only need to update the relevant name, this is simple to manage
}
void Silken::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Silken", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Window", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Silken::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
case kParamC: float2string (C, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Silken::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Silken::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Silken::getEffectName(char* name) {
vst_strncpy(name, "Silken", kVstMaxProductStrLen); return true;
}
VstPlugCategory Silken::getPlugCategory() {return kPlugCategEffect;}
bool Silken::getProductString(char* text) {
vst_strncpy (text, "airwindows Silken", kVstMaxProductStrLen); return true;
}
bool Silken::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,220 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
void Silken::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}
void Silken::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}

Binary file not shown.

28
plugins/MacAU/Silken/Info.plist Executable file
View file

@ -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>DthX</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

268
plugins/MacAU/Silken/Silken.cpp Executable file
View file

@ -0,0 +1,268 @@
/*
* File: Silken.cpp
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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.
*
*/
/*=============================================================================
Silken.cpp
=============================================================================*/
#include "Silken.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(Silken)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::Silken
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Silken::Silken(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_A:
AUBase::FillInParameterName (outParameterInfo, kParameterAName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamA;
break;
case kParam_B:
AUBase::FillInParameterName (outParameterInfo, kParameterBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamB;
break;
case kParam_C:
AUBase::FillInParameterName (outParameterInfo, kParameterCName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamC;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Silken::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____SilkenEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::SilkenKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Silken::SilkenKernel::Reset()
{
for(int count = 0; count < 32767; count++) {firBuffer[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSample = 0.0;
for (int x = 0; x < 16; x++) infirmediate[x] = 0.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::SilkenKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Silken::SilkenKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = GetParameter( kParam_A );
double freq = pow(GetParameter( kParam_B ),2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((GetParameter( kParam_C )*GetParameter( kParam_C )*256.0*overallscale)+2,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBuffer[firp] = inputSample; inputSample = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSample += firBuffer[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSample += firBuffer[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSample *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSample);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSample = sin(inputSample)*0.9549925859; //scale to what cliponly uses
inputSample = (inputSample*softSpeed)+(firlastSample*(1.0-softSpeed));
infirmediate[spacing] = inputSample;
inputSample = firlastSample; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediate[x-1] = infirmediate[x];
firlastSample = infirmediate[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSample = (firBuffer[firp+unprime[middle]]*(wet+1.0))-(inputSample*wet);
} else {
inputSample = (firBuffer[firp+unprime[middle]-32768]*(wet+1.0))-(inputSample*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit floating point dither
int expon; frexpf((float)inputSample, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_SilkenEntry

147
plugins/MacAU/Silken/Silken.h Executable file

File diff suppressed because one or more lines are too long

61
plugins/MacAU/Silken/Silken.r Executable file
View file

@ -0,0 +1,61 @@
/*
* File: Silken.r
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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 "SilkenVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Silken 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Silken~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Silken
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Silken_COMP_SUBTYPE
#define COMP_MANUF Silken_COMP_MANF
#define VERSION kSilkenVersion
#define NAME "Airwindows: Silken"
#define DESCRIPTION "Silken AU"
#define ENTRY_POINT "SilkenEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,145 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Silken */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
36,
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,
252,
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 = 775573798;
PBXWorkspaceStateSaveDate = 775573798;
};
perUserProjectItems = {
8B2A75CF2E3944E000B2CCFF /* PlistBookmark */ = 8B2A75CF2E3944E000B2CCFF /* PlistBookmark */;
8B8036942E3A5312007BDCDE /* PBXTextBookmark */ = 8B8036942E3A5312007BDCDE /* PBXTextBookmark */;
8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */ = 8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B2A75CF2E3944E000B2CCFF /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/Silken/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
8B8036942E3A5312007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Silken.cpp */;
name = "Silken.cpp: 240";
rLen = 0;
rLoc = 10831;
rType = 0;
vrLen = 68;
vrLoc = 9428;
};
8BA05A660720730100365D66 /* Silken.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1236, 4806}}";
sepNavSelRange = "{10831, 0}";
sepNavVisRange = "{9428, 68}";
sepNavWindowFrame = "{{614, 102}, {864, 776}}";
};
};
8BA05A670720730100365D66 /* Silken.exp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1151, 648}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 13}";
sepNavWindowFrame = "{{15, 97}, {1198, 776}}";
};
};
8BA05A690720730100365D66 /* SilkenVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1188}}";
sepNavSelRange = "{2880, 0}";
sepNavVisRange = "{2679, 269}";
sepNavWindowFrame = "{{38, 518}, {809, 334}}";
};
};
8BC6025B073B072D006C4272 /* Silken.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {46011, 2556}}";
sepNavSelRange = "{10374, 20}";
sepNavVisRange = "{9707, 876}";
sepNavWindowFrame = "{{534, 38}, {839, 784}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Silken.cpp */;
name = "Silken.cpp: 240";
rLen = 0;
rLoc = 10831;
rType = 0;
vrLen = 177;
vrLoc = 9366;
};
8D01CCC60486CAD60068D4B7 /* Silken */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

View file

@ -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 /* Silken.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Silken.r */; };
8BA05A6B0720730100365D66 /* Silken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Silken.cpp */; };
8BA05A6E0720730100365D66 /* SilkenVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* SilkenVersion.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 /* Silken.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Silken.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 /* Silken.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Silken.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Silken.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Silken.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Silken.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Silken.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* SilkenVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SilkenVersion.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 /* Silken.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Silken.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Silken.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Silken.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 /* Silken */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Silken;
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 /* Silken.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Silken.h */,
8BA05A660720730100365D66 /* Silken.cpp */,
8BA05A670720730100365D66 /* Silken.exp */,
8BA05A680720730100365D66 /* Silken.r */,
8BA05A690720730100365D66 /* SilkenVersion.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 /* SilkenVersion.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 /* Silken.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 /* Silken */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Silken" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = Silken;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Silken;
productReference = 8D01CCD20486CAD60068D4B7 /* Silken.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 "Silken" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* Silken */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Silken */,
);
};
/* 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 /* Silken.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* Silken.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 = Silken.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 = Silken;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = Silken.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 = Silken;
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 "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA248089833B7007656EC /* Debug */,
3E4BA249089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

View file

@ -0,0 +1,58 @@
/*
* File: SilkenVersion.h
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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 __SilkenVersion_h__
#define __SilkenVersion_h__
#ifdef DEBUG
#define kSilkenVersion 0xFFFFFFFF
#else
#define kSilkenVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Silken_COMP_MANF 'Dthr'
#define Silken_COMP_SUBTYPE 'slkn'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

View file

@ -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>

View file

@ -0,0 +1,47 @@
<?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>AudioComponents</key>
<array>
<dict>
<key>description</key>
<string>${PRODUCT_NAME:identifier} AU</string>
<key>factoryFunction</key>
<string>${PRODUCT_NAME:identifier}Factory</string>
<key>manufacturer</key>
<string>Dthr</string>
<key>name</key>
<string>Airwindows: ${PRODUCT_NAME:identifier}</string>
<key>subtype</key>
<string>slkn</string>
<key>type</key>
<string>aufx</string>
<key>version</key>
<integer>65536</integer>
</dict>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>DthX</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,268 @@
/*
* File: Silken.cpp
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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.
*
*/
/*=============================================================================
Silken.cpp
=============================================================================*/
#include "Silken.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, Silken)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::Silken
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Silken::Silken(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_A:
AUBase::FillInParameterName (outParameterInfo, kParameterAName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamA;
break;
case kParam_B:
AUBase::FillInParameterName (outParameterInfo, kParameterBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamB;
break;
case kParam_C:
AUBase::FillInParameterName (outParameterInfo, kParameterCName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamC;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Silken::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Silken::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____SilkenEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::SilkenKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Silken::SilkenKernel::Reset()
{
for(int count = 0; count < 32767; count++) {firBuffer[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSample = 0.0;
for (int x = 0; x < 16; x++) infirmediate[x] = 0.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Silken::SilkenKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Silken::SilkenKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = GetParameter( kParam_A );
double freq = pow(GetParameter( kParam_B ),2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((GetParameter( kParam_C )*GetParameter( kParam_C )*256.0*overallscale)+2,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBuffer[firp] = inputSample; inputSample = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSample += firBuffer[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSample += firBuffer[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSample *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSample);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSample = sin(inputSample)*0.9549925859; //scale to what cliponly uses
inputSample = (inputSample*softSpeed)+(firlastSample*(1.0-softSpeed));
infirmediate[spacing] = inputSample;
inputSample = firlastSample; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediate[x-1] = infirmediate[x];
firlastSample = infirmediate[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSample = (firBuffer[firp+unprime[middle]]*(wet+1.0))-(inputSample*wet);
} else {
inputSample = (firBuffer[firp+unprime[middle]-32768]*(wet+1.0))-(inputSample*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit floating point dither
int expon; frexpf((float)inputSample, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1,2 @@
_SilkenEntry
_SilkenFactory

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,61 @@
/*
* File: Silken.r
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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 "SilkenVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Silken 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Silken~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Silken
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Silken_COMP_SUBTYPE
#define COMP_MANUF Silken_COMP_MANF
#define VERSION kSilkenVersion
#define NAME "Airwindows: Silken"
#define DESCRIPTION "Silken AU"
#define ENTRY_POINT "SilkenEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,145 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Silken */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
36,
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,
252,
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 = 775573798;
PBXWorkspaceStateSaveDate = 775573798;
};
perUserProjectItems = {
8B2A75CF2E3944E000B2CCFF /* PlistBookmark */ = 8B2A75CF2E3944E000B2CCFF /* PlistBookmark */;
8B8036942E3A5312007BDCDE /* PBXTextBookmark */ = 8B8036942E3A5312007BDCDE /* PBXTextBookmark */;
8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */ = 8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B2A75CF2E3944E000B2CCFF /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/Silken/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
8B8036942E3A5312007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Silken.cpp */;
name = "Silken.cpp: 240";
rLen = 0;
rLoc = 10831;
rType = 0;
vrLen = 68;
vrLoc = 9428;
};
8BA05A660720730100365D66 /* Silken.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1236, 4806}}";
sepNavSelRange = "{10831, 0}";
sepNavVisRange = "{9428, 68}";
sepNavWindowFrame = "{{614, 102}, {864, 776}}";
};
};
8BA05A670720730100365D66 /* Silken.exp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1151, 648}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 13}";
sepNavWindowFrame = "{{15, 97}, {1198, 776}}";
};
};
8BA05A690720730100365D66 /* SilkenVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1188}}";
sepNavSelRange = "{2880, 0}";
sepNavVisRange = "{2679, 269}";
sepNavWindowFrame = "{{38, 518}, {809, 334}}";
};
};
8BC6025B073B072D006C4272 /* Silken.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {46011, 2556}}";
sepNavSelRange = "{10374, 20}";
sepNavVisRange = "{9707, 876}";
sepNavWindowFrame = "{{534, 38}, {839, 784}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8BF07C352E3A4C9C00D98B03 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Silken.cpp */;
name = "Silken.cpp: 240";
rLen = 0;
rLoc = 10831;
rType = 0;
vrLen = 177;
vrLoc = 9366;
};
8D01CCC60486CAD60068D4B7 /* Silken */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,965 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
8BA05A6B0720730100365D66 /* Silken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Silken.cpp */; };
8BA05A6E0720730100365D66 /* SilkenVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* SilkenVersion.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 */; };
8BACAA482E3ADF1800EF8D7D /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C02E3ADF1800EF8D7D /* CAExtAudioFile.h */; };
8BACAA492E3ADF1800EF8D7D /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C12E3ADF1800EF8D7D /* CACFMachPort.h */; };
8BACAA4A2E3ADF1800EF8D7D /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C22E3ADF1800EF8D7D /* CABool.h */; };
8BACAA4B2E3ADF1800EF8D7D /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9C32E3ADF1800EF8D7D /* CAComponent.cpp */; };
8BACAA4C2E3ADF1800EF8D7D /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C42E3ADF1800EF8D7D /* CADebugger.h */; };
8BACAA4D2E3ADF1800EF8D7D /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9C52E3ADF1800EF8D7D /* CACFNumber.cpp */; };
8BACAA4E2E3ADF1800EF8D7D /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C62E3ADF1800EF8D7D /* CAGuard.h */; };
8BACAA4F2E3ADF1800EF8D7D /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C72E3ADF1800EF8D7D /* CAAtomic.h */; };
8BACAA502E3ADF1800EF8D7D /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C82E3ADF1800EF8D7D /* CAStreamBasicDescription.h */; };
8BACAA512E3ADF1800EF8D7D /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9C92E3ADF1800EF8D7D /* CACFObject.h */; };
8BACAA522E3ADF1800EF8D7D /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CA2E3ADF1800EF8D7D /* CAStreamRangedDescription.h */; };
8BACAA532E3ADF1800EF8D7D /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CB2E3ADF1800EF8D7D /* CATokenMap.h */; };
8BACAA542E3ADF1800EF8D7D /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CC2E3ADF1800EF8D7D /* CAComponent.h */; };
8BACAA552E3ADF1800EF8D7D /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CD2E3ADF1800EF8D7D /* CAAudioBufferList.h */; };
8BACAA562E3ADF1800EF8D7D /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CE2E3ADF1800EF8D7D /* CAAudioUnit.h */; };
8BACAA572E3ADF1800EF8D7D /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9CF2E3ADF1800EF8D7D /* CAAUParameter.h */; };
8BACAA582E3ADF1800EF8D7D /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D02E3ADF1800EF8D7D /* CAException.h */; };
8BACAA592E3ADF1800EF8D7D /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9D12E3ADF1800EF8D7D /* CAAUProcessor.cpp */; };
8BACAA5A2E3ADF1800EF8D7D /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D22E3ADF1800EF8D7D /* CAAUProcessor.h */; };
8BACAA5B2E3ADF1800EF8D7D /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D32E3ADF1800EF8D7D /* CAProcess.h */; };
8BACAA5C2E3ADF1800EF8D7D /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D42E3ADF1800EF8D7D /* CACFDictionary.h */; };
8BACAA5D2E3ADF1800EF8D7D /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D52E3ADF1800EF8D7D /* CAPThread.h */; };
8BACAA5E2E3ADF1800EF8D7D /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9D62E3ADF1800EF8D7D /* CAAUParameter.cpp */; };
8BACAA5F2E3ADF1800EF8D7D /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D72E3ADF1800EF8D7D /* CAAudioTimeStamp.h */; };
8BACAA602E3ADF1800EF8D7D /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9D82E3ADF1800EF8D7D /* CAFilePathUtils.cpp */; };
8BACAA612E3ADF1800EF8D7D /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9D92E3ADF1800EF8D7D /* CAAudioValueRange.h */; };
8BACAA622E3ADF1800EF8D7D /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9DA2E3ADF1800EF8D7D /* CAVectorUnitTypes.h */; };
8BACAA632E3ADF1800EF8D7D /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9DB2E3ADF1800EF8D7D /* CAAudioChannelLayoutObject.cpp */; };
8BACAA642E3ADF1800EF8D7D /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9DC2E3ADF1800EF8D7D /* CAGuard.cpp */; };
8BACAA652E3ADF1800EF8D7D /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9DD2E3ADF1800EF8D7D /* CACFNumber.h */; };
8BACAA662E3ADF1800EF8D7D /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9DE2E3ADF1800EF8D7D /* CACFDistributedNotification.cpp */; };
8BACAA672E3ADF1800EF8D7D /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9DF2E3ADF1800EF8D7D /* CACFString.h */; };
8BACAA682E3ADF1800EF8D7D /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9E02E3ADF1800EF8D7D /* CAAUMIDIMapManager.cpp */; };
8BACAA692E3ADF1800EF8D7D /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9E12E3ADF1800EF8D7D /* CAComponentDescription.cpp */; };
8BACAA6A2E3ADF1800EF8D7D /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9E22E3ADF1800EF8D7D /* CAHostTimeBase.h */; };
8BACAA6B2E3ADF1800EF8D7D /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9E32E3ADF1800EF8D7D /* CADebugMacros.cpp */; };
8BACAA6C2E3ADF1800EF8D7D /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9E42E3ADF1800EF8D7D /* CAAudioFileFormats.h */; };
8BACAA6D2E3ADF1800EF8D7D /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9E52E3ADF1800EF8D7D /* CAAUMIDIMapManager.h */; };
8BACAA6E2E3ADF1800EF8D7D /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9E62E3ADF1800EF8D7D /* CACFDictionary.cpp */; };
8BACAA6F2E3ADF1800EF8D7D /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9E72E3ADF1800EF8D7D /* CAMutex.h */; };
8BACAA702E3ADF1800EF8D7D /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9E82E3ADF1800EF8D7D /* CACFString.cpp */; };
8BACAA712E3ADF1800EF8D7D /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9E92E3ADF1800EF8D7D /* CASettingsStorage.h */; };
8BACAA722E3ADF1800EF8D7D /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9EA2E3ADF1800EF8D7D /* CADebugPrintf.h */; };
8BACAA732E3ADF1800EF8D7D /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9EB2E3ADF1800EF8D7D /* CAXException.cpp */; };
8BACAA742E3ADF1800EF8D7D /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9EC2E3ADF1800EF8D7D /* CAAUMIDIMap.h */; };
8BACAA752E3ADF1800EF8D7D /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9ED2E3ADF1800EF8D7D /* AUParamInfo.h */; };
8BACAA762E3ADF1800EF8D7D /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9EE2E3ADF1800EF8D7D /* CABitOperations.h */; };
8BACAA772E3ADF1800EF8D7D /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9EF2E3ADF1800EF8D7D /* CACFPreferences.cpp */; };
8BACAA782E3ADF1800EF8D7D /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F02E3ADF1800EF8D7D /* CABundleLocker.h */; };
8BACAA792E3ADF1800EF8D7D /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F12E3ADF1800EF8D7D /* CAPropertyAddress.h */; };
8BACAA7A2E3ADF1800EF8D7D /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F22E3ADF1800EF8D7D /* CAXException.h */; };
8BACAA7B2E3ADF1800EF8D7D /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9F32E3ADF1800EF8D7D /* CAAudioChannelLayout.cpp */; };
8BACAA7C2E3ADF1800EF8D7D /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F42E3ADF1800EF8D7D /* CAThreadSafeList.h */; };
8BACAA7D2E3ADF1800EF8D7D /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F52E3ADF1800EF8D7D /* CAAudioUnitOutputCapturer.h */; };
8BACAA7E2E3ADF1800EF8D7D /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9F62E3ADF1800EF8D7D /* AUParamInfo.cpp */; };
8BACAA7F2E3ADF1800EF8D7D /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9F72E3ADF1800EF8D7D /* CASharedLibrary.cpp */; };
8BACAA802E3ADF1800EF8D7D /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9F82E3ADF1800EF8D7D /* CAAUMIDIMap.cpp */; };
8BACAA812E3ADF1800EF8D7D /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9F92E3ADF1800EF8D7D /* CALogMacros.h */; };
8BACAA822E3ADF1800EF8D7D /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9FA2E3ADF1800EF8D7D /* CACFMessagePort.cpp */; };
8BACAA832E3ADF1800EF8D7D /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9FB2E3ADF1800EF8D7D /* CARingBuffer.h */; };
8BACAA842E3ADF1800EF8D7D /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACA9FC2E3ADF1800EF8D7D /* AUOutputBL.cpp */; };
8BACAA852E3ADF1800EF8D7D /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9FD2E3ADF1800EF8D7D /* CABufferList.h */; };
8BACAA862E3ADF1800EF8D7D /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9FE2E3ADF1800EF8D7D /* CASharedLibrary.h */; };
8BACAA872E3ADF1800EF8D7D /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACA9FF2E3ADF1800EF8D7D /* CACFData.h */; };
8BACAA882E3ADF1800EF8D7D /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA002E3ADF1800EF8D7D /* CAStreamRangedDescription.cpp */; };
8BACAA892E3ADF1800EF8D7D /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA012E3ADF1800EF8D7D /* CAPThread.cpp */; };
8BACAA8A2E3ADF1800EF8D7D /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA022E3ADF1800EF8D7D /* CAAutoDisposer.h */; };
8BACAA8B2E3ADF1800EF8D7D /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA032E3ADF1800EF8D7D /* CACFPreferences.h */; };
8BACAA8C2E3ADF1800EF8D7D /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA042E3ADF1800EF8D7D /* CAVectorUnit.cpp */; };
8BACAA8D2E3ADF1800EF8D7D /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA052E3ADF1800EF8D7D /* CAComponentDescription.h */; };
8BACAA8E2E3ADF1800EF8D7D /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA062E3ADF1800EF8D7D /* CADebugMacros.h */; };
8BACAA8F2E3ADF1800EF8D7D /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA072E3ADF1800EF8D7D /* AUOutputBL.h */; };
8BACAA902E3ADF1800EF8D7D /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA082E3ADF1800EF8D7D /* CADebugPrintf.cpp */; };
8BACAA912E3ADF1800EF8D7D /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA092E3ADF1800EF8D7D /* CARingBuffer.cpp */; };
8BACAA922E3ADF1800EF8D7D /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA0A2E3ADF1800EF8D7D /* CACFPlugIn.h */; };
8BACAA932E3ADF1800EF8D7D /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA0B2E3ADF1800EF8D7D /* CASettingsStorage.cpp */; };
8BACAA942E3ADF1800EF8D7D /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA0C2E3ADF1800EF8D7D /* CAMixMap.h */; };
8BACAA952E3ADF1800EF8D7D /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA0D2E3ADF1800EF8D7D /* CACFDistributedNotification.h */; };
8BACAA962E3ADF1800EF8D7D /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA0E2E3ADF1800EF8D7D /* CAFilePathUtils.h */; };
8BACAA972E3ADF1800EF8D7D /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA0F2E3ADF1800EF8D7D /* CATink.h */; };
8BACAA982E3ADF1800EF8D7D /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA102E3ADF1800EF8D7D /* CAStreamBasicDescription.cpp */; };
8BACAA992E3ADF1800EF8D7D /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA112E3ADF1800EF8D7D /* CAAudioChannelLayout.h */; };
8BACAA9A2E3ADF1800EF8D7D /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA122E3ADF1800EF8D7D /* CAProcess.cpp */; };
8BACAA9B2E3ADF1800EF8D7D /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA132E3ADF1800EF8D7D /* CAHostTimeBase.cpp */; };
8BACAA9C2E3ADF1800EF8D7D /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA142E3ADF1800EF8D7D /* CAPersistence.cpp */; };
8BACAA9D2E3ADF1800EF8D7D /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA152E3ADF1800EF8D7D /* CAAudioBufferList.cpp */; };
8BACAA9E2E3ADF1800EF8D7D /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA162E3ADF1800EF8D7D /* CAAudioTimeStamp.cpp */; };
8BACAA9F2E3ADF1800EF8D7D /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA172E3ADF1800EF8D7D /* CAVectorUnit.h */; };
8BACAAA02E3ADF1800EF8D7D /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA182E3ADF1800EF8D7D /* CAByteOrder.h */; };
8BACAAA12E3ADF1800EF8D7D /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA192E3ADF1800EF8D7D /* CACFArray.h */; };
8BACAAA22E3ADF1800EF8D7D /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA1A2E3ADF1800EF8D7D /* CAAtomicStack.h */; };
8BACAAA32E3ADF1800EF8D7D /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA1B2E3ADF1800EF8D7D /* CAReferenceCounted.h */; };
8BACAAA42E3ADF1800EF8D7D /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA1C2E3ADF1800EF8D7D /* CACFMachPort.cpp */; };
8BACAAA52E3ADF1800EF8D7D /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA1D2E3ADF1800EF8D7D /* CABufferList.cpp */; };
8BACAAA62E3ADF1800EF8D7D /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA1E2E3ADF1800EF8D7D /* CAMutex.cpp */; };
8BACAAA72E3ADF1800EF8D7D /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA1F2E3ADF1800EF8D7D /* CADebugger.cpp */; };
8BACAAA82E3ADF1800EF8D7D /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA202E3ADF1800EF8D7D /* CABundleLocker.cpp */; };
8BACAAA92E3ADF1800EF8D7D /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA212E3ADF1800EF8D7D /* CAAudioFileFormats.cpp */; };
8BACAAAA2E3ADF1800EF8D7D /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA222E3ADF1800EF8D7D /* CAMath.h */; };
8BACAAAB2E3ADF1800EF8D7D /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA232E3ADF1800EF8D7D /* CACFArray.cpp */; };
8BACAAAC2E3ADF1800EF8D7D /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA242E3ADF1800EF8D7D /* CACFMessagePort.h */; };
8BACAAAD2E3ADF1800EF8D7D /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA252E3ADF1800EF8D7D /* CAAudioValueRange.cpp */; };
8BACAAAE2E3ADF1800EF8D7D /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA262E3ADF1800EF8D7D /* CAAudioUnit.cpp */; };
8BACAAAF2E3ADF1800EF8D7D /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA2A2E3ADF1800EF8D7D /* AUViewLocalizedStringKeys.h */; };
8BACAAB02E3ADF1800EF8D7D /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA2C2E3ADF1800EF8D7D /* ComponentBase.cpp */; };
8BACAAB12E3ADF1800EF8D7D /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA2D2E3ADF1800EF8D7D /* AUScopeElement.cpp */; };
8BACAAB22E3ADF1800EF8D7D /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA2E2E3ADF1800EF8D7D /* ComponentBase.h */; };
8BACAAB32E3ADF1800EF8D7D /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA2F2E3ADF1800EF8D7D /* AUBase.cpp */; };
8BACAAB42E3ADF1800EF8D7D /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA302E3ADF1800EF8D7D /* AUInputElement.h */; };
8BACAAB52E3ADF1800EF8D7D /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA312E3ADF1800EF8D7D /* AUBase.h */; };
8BACAAB62E3ADF1800EF8D7D /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA322E3ADF1800EF8D7D /* AUPlugInDispatch.h */; };
8BACAAB72E3ADF1800EF8D7D /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA332E3ADF1800EF8D7D /* AUDispatch.h */; };
8BACAAB82E3ADF1800EF8D7D /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA342E3ADF1800EF8D7D /* AUOutputElement.cpp */; };
8BACAAB92E3ADF1800EF8D7D /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA362E3ADF1800EF8D7D /* AUPlugInDispatch.cpp */; };
8BACAABA2E3ADF1800EF8D7D /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA372E3ADF1800EF8D7D /* AUOutputElement.h */; };
8BACAABB2E3ADF1800EF8D7D /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA382E3ADF1800EF8D7D /* AUDispatch.cpp */; };
8BACAABC2E3ADF1800EF8D7D /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA392E3ADF1800EF8D7D /* AUScopeElement.h */; };
8BACAABD2E3ADF1800EF8D7D /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA3A2E3ADF1800EF8D7D /* AUInputElement.cpp */; };
8BACAABE2E3ADF1800EF8D7D /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA3C2E3ADF1800EF8D7D /* AUEffectBase.cpp */; };
8BACAABF2E3ADF1800EF8D7D /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA3D2E3ADF1800EF8D7D /* AUEffectBase.h */; };
8BACAAC02E3ADF1800EF8D7D /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA3F2E3ADF1800EF8D7D /* AUTimestampGenerator.h */; };
8BACAAC12E3ADF1800EF8D7D /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA402E3ADF1800EF8D7D /* AUBaseHelper.cpp */; };
8BACAAC22E3ADF1800EF8D7D /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA412E3ADF1800EF8D7D /* AUSilentTimeout.h */; };
8BACAAC32E3ADF1800EF8D7D /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA422E3ADF1800EF8D7D /* AUInputFormatConverter.h */; };
8BACAAC42E3ADF1800EF8D7D /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA432E3ADF1800EF8D7D /* AUTimestampGenerator.cpp */; };
8BACAAC52E3ADF1800EF8D7D /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAA442E3ADF1800EF8D7D /* AUBuffer.cpp */; };
8BACAAC62E3ADF1800EF8D7D /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA452E3ADF1800EF8D7D /* AUMIDIDefs.h */; };
8BACAAC72E3ADF1800EF8D7D /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA462E3ADF1800EF8D7D /* AUBuffer.h */; };
8BACAAC82E3ADF1800EF8D7D /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAA472E3ADF1800EF8D7D /* AUBaseHelper.h */; };
8BC6025C073B072D006C4272 /* Silken.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Silken.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
8BA05A660720730100365D66 /* Silken.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Silken.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Silken.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Silken.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Silken.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Silken.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* SilkenVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SilkenVersion.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>"; };
8BACA9C02E3ADF1800EF8D7D /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
8BACA9C12E3ADF1800EF8D7D /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
8BACA9C22E3ADF1800EF8D7D /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
8BACA9C32E3ADF1800EF8D7D /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
8BACA9C42E3ADF1800EF8D7D /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
8BACA9C52E3ADF1800EF8D7D /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
8BACA9C62E3ADF1800EF8D7D /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
8BACA9C72E3ADF1800EF8D7D /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
8BACA9C82E3ADF1800EF8D7D /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8BACA9C92E3ADF1800EF8D7D /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
8BACA9CA2E3ADF1800EF8D7D /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
8BACA9CB2E3ADF1800EF8D7D /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
8BACA9CC2E3ADF1800EF8D7D /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
8BACA9CD2E3ADF1800EF8D7D /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
8BACA9CE2E3ADF1800EF8D7D /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
8BACA9CF2E3ADF1800EF8D7D /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8BACA9D02E3ADF1800EF8D7D /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
8BACA9D12E3ADF1800EF8D7D /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
8BACA9D22E3ADF1800EF8D7D /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
8BACA9D32E3ADF1800EF8D7D /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
8BACA9D42E3ADF1800EF8D7D /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
8BACA9D52E3ADF1800EF8D7D /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
8BACA9D62E3ADF1800EF8D7D /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8BACA9D72E3ADF1800EF8D7D /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
8BACA9D82E3ADF1800EF8D7D /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
8BACA9D92E3ADF1800EF8D7D /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
8BACA9DA2E3ADF1800EF8D7D /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
8BACA9DB2E3ADF1800EF8D7D /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
8BACA9DC2E3ADF1800EF8D7D /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
8BACA9DD2E3ADF1800EF8D7D /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
8BACA9DE2E3ADF1800EF8D7D /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
8BACA9DF2E3ADF1800EF8D7D /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
8BACA9E02E3ADF1800EF8D7D /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
8BACA9E12E3ADF1800EF8D7D /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
8BACA9E22E3ADF1800EF8D7D /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
8BACA9E32E3ADF1800EF8D7D /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
8BACA9E42E3ADF1800EF8D7D /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
8BACA9E52E3ADF1800EF8D7D /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
8BACA9E62E3ADF1800EF8D7D /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
8BACA9E72E3ADF1800EF8D7D /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8BACA9E82E3ADF1800EF8D7D /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
8BACA9E92E3ADF1800EF8D7D /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
8BACA9EA2E3ADF1800EF8D7D /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
8BACA9EB2E3ADF1800EF8D7D /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
8BACA9EC2E3ADF1800EF8D7D /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
8BACA9ED2E3ADF1800EF8D7D /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
8BACA9EE2E3ADF1800EF8D7D /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
8BACA9EF2E3ADF1800EF8D7D /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
8BACA9F02E3ADF1800EF8D7D /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
8BACA9F12E3ADF1800EF8D7D /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
8BACA9F22E3ADF1800EF8D7D /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
8BACA9F32E3ADF1800EF8D7D /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8BACA9F42E3ADF1800EF8D7D /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
8BACA9F52E3ADF1800EF8D7D /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
8BACA9F62E3ADF1800EF8D7D /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
8BACA9F72E3ADF1800EF8D7D /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
8BACA9F82E3ADF1800EF8D7D /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
8BACA9F92E3ADF1800EF8D7D /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
8BACA9FA2E3ADF1800EF8D7D /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
8BACA9FB2E3ADF1800EF8D7D /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
8BACA9FC2E3ADF1800EF8D7D /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
8BACA9FD2E3ADF1800EF8D7D /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
8BACA9FE2E3ADF1800EF8D7D /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
8BACA9FF2E3ADF1800EF8D7D /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
8BACAA002E3ADF1800EF8D7D /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
8BACAA012E3ADF1800EF8D7D /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
8BACAA022E3ADF1800EF8D7D /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
8BACAA032E3ADF1800EF8D7D /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
8BACAA042E3ADF1800EF8D7D /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
8BACAA052E3ADF1800EF8D7D /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
8BACAA062E3ADF1800EF8D7D /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
8BACAA072E3ADF1800EF8D7D /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
8BACAA082E3ADF1800EF8D7D /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
8BACAA092E3ADF1800EF8D7D /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
8BACAA0A2E3ADF1800EF8D7D /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
8BACAA0B2E3ADF1800EF8D7D /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
8BACAA0C2E3ADF1800EF8D7D /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
8BACAA0D2E3ADF1800EF8D7D /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
8BACAA0E2E3ADF1800EF8D7D /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
8BACAA0F2E3ADF1800EF8D7D /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
8BACAA102E3ADF1800EF8D7D /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8BACAA112E3ADF1800EF8D7D /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8BACAA122E3ADF1800EF8D7D /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
8BACAA132E3ADF1800EF8D7D /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
8BACAA142E3ADF1800EF8D7D /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
8BACAA152E3ADF1800EF8D7D /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
8BACAA162E3ADF1800EF8D7D /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
8BACAA172E3ADF1800EF8D7D /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
8BACAA182E3ADF1800EF8D7D /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
8BACAA192E3ADF1800EF8D7D /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
8BACAA1A2E3ADF1800EF8D7D /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
8BACAA1B2E3ADF1800EF8D7D /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
8BACAA1C2E3ADF1800EF8D7D /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
8BACAA1D2E3ADF1800EF8D7D /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
8BACAA1E2E3ADF1800EF8D7D /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8BACAA1F2E3ADF1800EF8D7D /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
8BACAA202E3ADF1800EF8D7D /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
8BACAA212E3ADF1800EF8D7D /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
8BACAA222E3ADF1800EF8D7D /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
8BACAA232E3ADF1800EF8D7D /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
8BACAA242E3ADF1800EF8D7D /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
8BACAA252E3ADF1800EF8D7D /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
8BACAA262E3ADF1800EF8D7D /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
8BACAA2A2E3ADF1800EF8D7D /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
8BACAA2C2E3ADF1800EF8D7D /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8BACAA2D2E3ADF1800EF8D7D /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8BACAA2E2E3ADF1800EF8D7D /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8BACAA2F2E3ADF1800EF8D7D /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8BACAA302E3ADF1800EF8D7D /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8BACAA312E3ADF1800EF8D7D /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8BACAA322E3ADF1800EF8D7D /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
8BACAA332E3ADF1800EF8D7D /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8BACAA342E3ADF1800EF8D7D /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8BACAA352E3ADF1800EF8D7D /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8BACAA362E3ADF1800EF8D7D /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
8BACAA372E3ADF1800EF8D7D /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8BACAA382E3ADF1800EF8D7D /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8BACAA392E3ADF1800EF8D7D /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8BACAA3A2E3ADF1800EF8D7D /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8BACAA3C2E3ADF1800EF8D7D /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8BACAA3D2E3ADF1800EF8D7D /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8BACAA3F2E3ADF1800EF8D7D /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8BACAA402E3ADF1800EF8D7D /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
8BACAA412E3ADF1800EF8D7D /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8BACAA422E3ADF1800EF8D7D /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8BACAA432E3ADF1800EF8D7D /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
8BACAA442E3ADF1800EF8D7D /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8BACAA452E3ADF1800EF8D7D /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
8BACAA462E3ADF1800EF8D7D /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8BACAA472E3ADF1800EF8D7D /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
8BACAAC92E3ADF2E00EF8D7D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
8BC6025B073B072D006C4272 /* Silken.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Silken.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Silken.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Silken.component; sourceTree = BUILT_PRODUCTS_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 /* Silken */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Silken;
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 = (
8BACA9BE2E3ADF1800EF8D7D /* CA_SDK */,
8BA05A56072072A900365D66 /* AU Source */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* Silken.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Silken.h */,
8BA05A660720730100365D66 /* Silken.cpp */,
8BA05A670720730100365D66 /* Silken.exp */,
8BA05A680720730100365D66 /* Silken.r */,
8BA05A690720730100365D66 /* SilkenVersion.h */,
);
name = "AU Source";
sourceTree = "<group>";
};
8BACA9BE2E3ADF1800EF8D7D /* CA_SDK */ = {
isa = PBXGroup;
children = (
8BACA9BF2E3ADF1800EF8D7D /* PublicUtility */,
8BACAA272E3ADF1800EF8D7D /* AudioUnits */,
);
name = CA_SDK;
path = ../../../../CA_SDK;
sourceTree = "<group>";
};
8BACA9BF2E3ADF1800EF8D7D /* PublicUtility */ = {
isa = PBXGroup;
children = (
8BACA9C02E3ADF1800EF8D7D /* CAExtAudioFile.h */,
8BACA9C12E3ADF1800EF8D7D /* CACFMachPort.h */,
8BACA9C22E3ADF1800EF8D7D /* CABool.h */,
8BACA9C32E3ADF1800EF8D7D /* CAComponent.cpp */,
8BACA9C42E3ADF1800EF8D7D /* CADebugger.h */,
8BACA9C52E3ADF1800EF8D7D /* CACFNumber.cpp */,
8BACA9C62E3ADF1800EF8D7D /* CAGuard.h */,
8BACA9C72E3ADF1800EF8D7D /* CAAtomic.h */,
8BACA9C82E3ADF1800EF8D7D /* CAStreamBasicDescription.h */,
8BACA9C92E3ADF1800EF8D7D /* CACFObject.h */,
8BACA9CA2E3ADF1800EF8D7D /* CAStreamRangedDescription.h */,
8BACA9CB2E3ADF1800EF8D7D /* CATokenMap.h */,
8BACA9CC2E3ADF1800EF8D7D /* CAComponent.h */,
8BACA9CD2E3ADF1800EF8D7D /* CAAudioBufferList.h */,
8BACA9CE2E3ADF1800EF8D7D /* CAAudioUnit.h */,
8BACA9CF2E3ADF1800EF8D7D /* CAAUParameter.h */,
8BACA9D02E3ADF1800EF8D7D /* CAException.h */,
8BACA9D12E3ADF1800EF8D7D /* CAAUProcessor.cpp */,
8BACA9D22E3ADF1800EF8D7D /* CAAUProcessor.h */,
8BACA9D32E3ADF1800EF8D7D /* CAProcess.h */,
8BACA9D42E3ADF1800EF8D7D /* CACFDictionary.h */,
8BACA9D52E3ADF1800EF8D7D /* CAPThread.h */,
8BACA9D62E3ADF1800EF8D7D /* CAAUParameter.cpp */,
8BACA9D72E3ADF1800EF8D7D /* CAAudioTimeStamp.h */,
8BACA9D82E3ADF1800EF8D7D /* CAFilePathUtils.cpp */,
8BACA9D92E3ADF1800EF8D7D /* CAAudioValueRange.h */,
8BACA9DA2E3ADF1800EF8D7D /* CAVectorUnitTypes.h */,
8BACA9DB2E3ADF1800EF8D7D /* CAAudioChannelLayoutObject.cpp */,
8BACA9DC2E3ADF1800EF8D7D /* CAGuard.cpp */,
8BACA9DD2E3ADF1800EF8D7D /* CACFNumber.h */,
8BACA9DE2E3ADF1800EF8D7D /* CACFDistributedNotification.cpp */,
8BACA9DF2E3ADF1800EF8D7D /* CACFString.h */,
8BACA9E02E3ADF1800EF8D7D /* CAAUMIDIMapManager.cpp */,
8BACA9E12E3ADF1800EF8D7D /* CAComponentDescription.cpp */,
8BACA9E22E3ADF1800EF8D7D /* CAHostTimeBase.h */,
8BACA9E32E3ADF1800EF8D7D /* CADebugMacros.cpp */,
8BACA9E42E3ADF1800EF8D7D /* CAAudioFileFormats.h */,
8BACA9E52E3ADF1800EF8D7D /* CAAUMIDIMapManager.h */,
8BACA9E62E3ADF1800EF8D7D /* CACFDictionary.cpp */,
8BACA9E72E3ADF1800EF8D7D /* CAMutex.h */,
8BACA9E82E3ADF1800EF8D7D /* CACFString.cpp */,
8BACA9E92E3ADF1800EF8D7D /* CASettingsStorage.h */,
8BACA9EA2E3ADF1800EF8D7D /* CADebugPrintf.h */,
8BACA9EB2E3ADF1800EF8D7D /* CAXException.cpp */,
8BACA9EC2E3ADF1800EF8D7D /* CAAUMIDIMap.h */,
8BACA9ED2E3ADF1800EF8D7D /* AUParamInfo.h */,
8BACA9EE2E3ADF1800EF8D7D /* CABitOperations.h */,
8BACA9EF2E3ADF1800EF8D7D /* CACFPreferences.cpp */,
8BACA9F02E3ADF1800EF8D7D /* CABundleLocker.h */,
8BACA9F12E3ADF1800EF8D7D /* CAPropertyAddress.h */,
8BACA9F22E3ADF1800EF8D7D /* CAXException.h */,
8BACA9F32E3ADF1800EF8D7D /* CAAudioChannelLayout.cpp */,
8BACA9F42E3ADF1800EF8D7D /* CAThreadSafeList.h */,
8BACA9F52E3ADF1800EF8D7D /* CAAudioUnitOutputCapturer.h */,
8BACA9F62E3ADF1800EF8D7D /* AUParamInfo.cpp */,
8BACA9F72E3ADF1800EF8D7D /* CASharedLibrary.cpp */,
8BACA9F82E3ADF1800EF8D7D /* CAAUMIDIMap.cpp */,
8BACA9F92E3ADF1800EF8D7D /* CALogMacros.h */,
8BACA9FA2E3ADF1800EF8D7D /* CACFMessagePort.cpp */,
8BACA9FB2E3ADF1800EF8D7D /* CARingBuffer.h */,
8BACA9FC2E3ADF1800EF8D7D /* AUOutputBL.cpp */,
8BACA9FD2E3ADF1800EF8D7D /* CABufferList.h */,
8BACA9FE2E3ADF1800EF8D7D /* CASharedLibrary.h */,
8BACA9FF2E3ADF1800EF8D7D /* CACFData.h */,
8BACAA002E3ADF1800EF8D7D /* CAStreamRangedDescription.cpp */,
8BACAA012E3ADF1800EF8D7D /* CAPThread.cpp */,
8BACAA022E3ADF1800EF8D7D /* CAAutoDisposer.h */,
8BACAA032E3ADF1800EF8D7D /* CACFPreferences.h */,
8BACAA042E3ADF1800EF8D7D /* CAVectorUnit.cpp */,
8BACAA052E3ADF1800EF8D7D /* CAComponentDescription.h */,
8BACAA062E3ADF1800EF8D7D /* CADebugMacros.h */,
8BACAA072E3ADF1800EF8D7D /* AUOutputBL.h */,
8BACAA082E3ADF1800EF8D7D /* CADebugPrintf.cpp */,
8BACAA092E3ADF1800EF8D7D /* CARingBuffer.cpp */,
8BACAA0A2E3ADF1800EF8D7D /* CACFPlugIn.h */,
8BACAA0B2E3ADF1800EF8D7D /* CASettingsStorage.cpp */,
8BACAA0C2E3ADF1800EF8D7D /* CAMixMap.h */,
8BACAA0D2E3ADF1800EF8D7D /* CACFDistributedNotification.h */,
8BACAA0E2E3ADF1800EF8D7D /* CAFilePathUtils.h */,
8BACAA0F2E3ADF1800EF8D7D /* CATink.h */,
8BACAA102E3ADF1800EF8D7D /* CAStreamBasicDescription.cpp */,
8BACAA112E3ADF1800EF8D7D /* CAAudioChannelLayout.h */,
8BACAA122E3ADF1800EF8D7D /* CAProcess.cpp */,
8BACAA132E3ADF1800EF8D7D /* CAHostTimeBase.cpp */,
8BACAA142E3ADF1800EF8D7D /* CAPersistence.cpp */,
8BACAA152E3ADF1800EF8D7D /* CAAudioBufferList.cpp */,
8BACAA162E3ADF1800EF8D7D /* CAAudioTimeStamp.cpp */,
8BACAA172E3ADF1800EF8D7D /* CAVectorUnit.h */,
8BACAA182E3ADF1800EF8D7D /* CAByteOrder.h */,
8BACAA192E3ADF1800EF8D7D /* CACFArray.h */,
8BACAA1A2E3ADF1800EF8D7D /* CAAtomicStack.h */,
8BACAA1B2E3ADF1800EF8D7D /* CAReferenceCounted.h */,
8BACAA1C2E3ADF1800EF8D7D /* CACFMachPort.cpp */,
8BACAA1D2E3ADF1800EF8D7D /* CABufferList.cpp */,
8BACAA1E2E3ADF1800EF8D7D /* CAMutex.cpp */,
8BACAA1F2E3ADF1800EF8D7D /* CADebugger.cpp */,
8BACAA202E3ADF1800EF8D7D /* CABundleLocker.cpp */,
8BACAA212E3ADF1800EF8D7D /* CAAudioFileFormats.cpp */,
8BACAA222E3ADF1800EF8D7D /* CAMath.h */,
8BACAA232E3ADF1800EF8D7D /* CACFArray.cpp */,
8BACAA242E3ADF1800EF8D7D /* CACFMessagePort.h */,
8BACAA252E3ADF1800EF8D7D /* CAAudioValueRange.cpp */,
8BACAA262E3ADF1800EF8D7D /* CAAudioUnit.cpp */,
);
path = PublicUtility;
sourceTree = "<group>";
};
8BACAA272E3ADF1800EF8D7D /* AudioUnits */ = {
isa = PBXGroup;
children = (
8BACAA282E3ADF1800EF8D7D /* AUPublic */,
);
path = AudioUnits;
sourceTree = "<group>";
};
8BACAA282E3ADF1800EF8D7D /* AUPublic */ = {
isa = PBXGroup;
children = (
8BACAA292E3ADF1800EF8D7D /* AUViewBase */,
8BACAA2B2E3ADF1800EF8D7D /* AUBase */,
8BACAA3B2E3ADF1800EF8D7D /* OtherBases */,
8BACAA3E2E3ADF1800EF8D7D /* Utility */,
);
path = AUPublic;
sourceTree = "<group>";
};
8BACAA292E3ADF1800EF8D7D /* AUViewBase */ = {
isa = PBXGroup;
children = (
8BACAA2A2E3ADF1800EF8D7D /* AUViewLocalizedStringKeys.h */,
);
path = AUViewBase;
sourceTree = "<group>";
};
8BACAA2B2E3ADF1800EF8D7D /* AUBase */ = {
isa = PBXGroup;
children = (
8BACAA2C2E3ADF1800EF8D7D /* ComponentBase.cpp */,
8BACAA2D2E3ADF1800EF8D7D /* AUScopeElement.cpp */,
8BACAA2E2E3ADF1800EF8D7D /* ComponentBase.h */,
8BACAA2F2E3ADF1800EF8D7D /* AUBase.cpp */,
8BACAA302E3ADF1800EF8D7D /* AUInputElement.h */,
8BACAA312E3ADF1800EF8D7D /* AUBase.h */,
8BACAA322E3ADF1800EF8D7D /* AUPlugInDispatch.h */,
8BACAA332E3ADF1800EF8D7D /* AUDispatch.h */,
8BACAA342E3ADF1800EF8D7D /* AUOutputElement.cpp */,
8BACAA352E3ADF1800EF8D7D /* AUResources.r */,
8BACAA362E3ADF1800EF8D7D /* AUPlugInDispatch.cpp */,
8BACAA372E3ADF1800EF8D7D /* AUOutputElement.h */,
8BACAA382E3ADF1800EF8D7D /* AUDispatch.cpp */,
8BACAA392E3ADF1800EF8D7D /* AUScopeElement.h */,
8BACAA3A2E3ADF1800EF8D7D /* AUInputElement.cpp */,
);
path = AUBase;
sourceTree = "<group>";
};
8BACAA3B2E3ADF1800EF8D7D /* OtherBases */ = {
isa = PBXGroup;
children = (
8BACAA3C2E3ADF1800EF8D7D /* AUEffectBase.cpp */,
8BACAA3D2E3ADF1800EF8D7D /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8BACAA3E2E3ADF1800EF8D7D /* Utility */ = {
isa = PBXGroup;
children = (
8BACAA3F2E3ADF1800EF8D7D /* AUTimestampGenerator.h */,
8BACAA402E3ADF1800EF8D7D /* AUBaseHelper.cpp */,
8BACAA412E3ADF1800EF8D7D /* AUSilentTimeout.h */,
8BACAA422E3ADF1800EF8D7D /* AUInputFormatConverter.h */,
8BACAA432E3ADF1800EF8D7D /* AUTimestampGenerator.cpp */,
8BACAA442E3ADF1800EF8D7D /* AUBuffer.cpp */,
8BACAA452E3ADF1800EF8D7D /* AUMIDIDefs.h */,
8BACAA462E3ADF1800EF8D7D /* AUBuffer.h */,
8BACAA472E3ADF1800EF8D7D /* AUBaseHelper.h */,
);
path = Utility;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8BACAA782E3ADF1800EF8D7D /* CABundleLocker.h in Headers */,
8BACAA992E3ADF1800EF8D7D /* CAAudioChannelLayout.h in Headers */,
8BACAA8F2E3ADF1800EF8D7D /* AUOutputBL.h in Headers */,
8BACAA6A2E3ADF1800EF8D7D /* CAHostTimeBase.h in Headers */,
8BACAAB22E3ADF1800EF8D7D /* ComponentBase.h in Headers */,
8BACAAA22E3ADF1800EF8D7D /* CAAtomicStack.h in Headers */,
8BACAA5F2E3ADF1800EF8D7D /* CAAudioTimeStamp.h in Headers */,
8BACAA7C2E3ADF1800EF8D7D /* CAThreadSafeList.h in Headers */,
8BACAA572E3ADF1800EF8D7D /* CAAUParameter.h in Headers */,
8BACAAC82E3ADF1800EF8D7D /* AUBaseHelper.h in Headers */,
8BACAAC02E3ADF1800EF8D7D /* AUTimestampGenerator.h in Headers */,
8BACAA722E3ADF1800EF8D7D /* CADebugPrintf.h in Headers */,
8BACAAAC2E3ADF1800EF8D7D /* CACFMessagePort.h in Headers */,
8BACAA5A2E3ADF1800EF8D7D /* CAAUProcessor.h in Headers */,
8BACAA562E3ADF1800EF8D7D /* CAAudioUnit.h in Headers */,
8BACAAAF2E3ADF1800EF8D7D /* AUViewLocalizedStringKeys.h in Headers */,
8BACAA952E3ADF1800EF8D7D /* CACFDistributedNotification.h in Headers */,
8BACAA542E3ADF1800EF8D7D /* CAComponent.h in Headers */,
8BACAA622E3ADF1800EF8D7D /* CAVectorUnitTypes.h in Headers */,
8BA05A6E0720730100365D66 /* SilkenVersion.h in Headers */,
8BACAA962E3ADF1800EF8D7D /* CAFilePathUtils.h in Headers */,
8BACAA582E3ADF1800EF8D7D /* CAException.h in Headers */,
8BACAA4F2E3ADF1800EF8D7D /* CAAtomic.h in Headers */,
8BACAA4E2E3ADF1800EF8D7D /* CAGuard.h in Headers */,
8BACAAB42E3ADF1800EF8D7D /* AUInputElement.h in Headers */,
8BACAA8B2E3ADF1800EF8D7D /* CACFPreferences.h in Headers */,
8BACAAA02E3ADF1800EF8D7D /* CAByteOrder.h in Headers */,
8BACAA832E3ADF1800EF8D7D /* CARingBuffer.h in Headers */,
8BACAA4A2E3ADF1800EF8D7D /* CABool.h in Headers */,
8BACAA6F2E3ADF1800EF8D7D /* CAMutex.h in Headers */,
8BACAAB52E3ADF1800EF8D7D /* AUBase.h in Headers */,
8BC6025C073B072D006C4272 /* Silken.h in Headers */,
8BACAA672E3ADF1800EF8D7D /* CACFString.h in Headers */,
8BACAA862E3ADF1800EF8D7D /* CASharedLibrary.h in Headers */,
8BACAA532E3ADF1800EF8D7D /* CATokenMap.h in Headers */,
8BACAA482E3ADF1800EF8D7D /* CAExtAudioFile.h in Headers */,
8BACAA5D2E3ADF1800EF8D7D /* CAPThread.h in Headers */,
8BACAA792E3ADF1800EF8D7D /* CAPropertyAddress.h in Headers */,
8BACAAA32E3ADF1800EF8D7D /* CAReferenceCounted.h in Headers */,
8BACAAC72E3ADF1800EF8D7D /* AUBuffer.h in Headers */,
8BACAAAA2E3ADF1800EF8D7D /* CAMath.h in Headers */,
8BACAA8A2E3ADF1800EF8D7D /* CAAutoDisposer.h in Headers */,
8BACAA512E3ADF1800EF8D7D /* CACFObject.h in Headers */,
8BACAA712E3ADF1800EF8D7D /* CASettingsStorage.h in Headers */,
8BACAA7A2E3ADF1800EF8D7D /* CAXException.h in Headers */,
8BACAA972E3ADF1800EF8D7D /* CATink.h in Headers */,
8BACAAC32E3ADF1800EF8D7D /* AUInputFormatConverter.h in Headers */,
8BACAA9F2E3ADF1800EF8D7D /* CAVectorUnit.h in Headers */,
8BACAA5B2E3ADF1800EF8D7D /* CAProcess.h in Headers */,
8BACAA612E3ADF1800EF8D7D /* CAAudioValueRange.h in Headers */,
8BACAA762E3ADF1800EF8D7D /* CABitOperations.h in Headers */,
8BACAA6C2E3ADF1800EF8D7D /* CAAudioFileFormats.h in Headers */,
8BACAA652E3ADF1800EF8D7D /* CACFNumber.h in Headers */,
8BACAA7D2E3ADF1800EF8D7D /* CAAudioUnitOutputCapturer.h in Headers */,
8BACAA8E2E3ADF1800EF8D7D /* CADebugMacros.h in Headers */,
8BACAAC62E3ADF1800EF8D7D /* AUMIDIDefs.h in Headers */,
8BACAA872E3ADF1800EF8D7D /* CACFData.h in Headers */,
8BACAA502E3ADF1800EF8D7D /* CAStreamBasicDescription.h in Headers */,
8BACAAB62E3ADF1800EF8D7D /* AUPlugInDispatch.h in Headers */,
8BACAA522E3ADF1800EF8D7D /* CAStreamRangedDescription.h in Headers */,
8BACAA922E3ADF1800EF8D7D /* CACFPlugIn.h in Headers */,
8BACAA552E3ADF1800EF8D7D /* CAAudioBufferList.h in Headers */,
8BACAA6D2E3ADF1800EF8D7D /* CAAUMIDIMapManager.h in Headers */,
8BACAABF2E3ADF1800EF8D7D /* AUEffectBase.h in Headers */,
8BACAA5C2E3ADF1800EF8D7D /* CACFDictionary.h in Headers */,
8BACAABC2E3ADF1800EF8D7D /* AUScopeElement.h in Headers */,
8BACAA8D2E3ADF1800EF8D7D /* CAComponentDescription.h in Headers */,
8BACAAC22E3ADF1800EF8D7D /* AUSilentTimeout.h in Headers */,
8BACAA852E3ADF1800EF8D7D /* CABufferList.h in Headers */,
8BACAAB72E3ADF1800EF8D7D /* AUDispatch.h in Headers */,
8BACAABA2E3ADF1800EF8D7D /* AUOutputElement.h in Headers */,
8BACAA812E3ADF1800EF8D7D /* CALogMacros.h in Headers */,
8BACAA752E3ADF1800EF8D7D /* AUParamInfo.h in Headers */,
8BACAA942E3ADF1800EF8D7D /* CAMixMap.h in Headers */,
8BACAAA12E3ADF1800EF8D7D /* CACFArray.h in Headers */,
8BACAA492E3ADF1800EF8D7D /* CACFMachPort.h in Headers */,
8BACAA742E3ADF1800EF8D7D /* CAAUMIDIMap.h in Headers */,
8BACAA4C2E3ADF1800EF8D7D /* CADebugger.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* Silken */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Silken" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Silken;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Silken;
productReference = 8D01CCD20486CAD60068D4B7 /* Silken.component */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1420;
};
buildConfigurationList = 3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Silken" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
de,
ja,
Base,
en,
fr,
);
mainGroup = 089C166AFE841209C02AAC07 /* Silken */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Silken */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8D01CCC90486CAD60068D4B7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BACAA842E3ADF1800EF8D7D /* AUOutputBL.cpp in Sources */,
8BACAAA92E3ADF1800EF8D7D /* CAAudioFileFormats.cpp in Sources */,
8BACAA9B2E3ADF1800EF8D7D /* CAHostTimeBase.cpp in Sources */,
8BACAA732E3ADF1800EF8D7D /* CAXException.cpp in Sources */,
8BACAA9D2E3ADF1800EF8D7D /* CAAudioBufferList.cpp in Sources */,
8BACAA602E3ADF1800EF8D7D /* CAFilePathUtils.cpp in Sources */,
8BACAA5E2E3ADF1800EF8D7D /* CAAUParameter.cpp in Sources */,
8BACAA802E3ADF1800EF8D7D /* CAAUMIDIMap.cpp in Sources */,
8BACAAAD2E3ADF1800EF8D7D /* CAAudioValueRange.cpp in Sources */,
8BACAABB2E3ADF1800EF8D7D /* AUDispatch.cpp in Sources */,
8BACAA772E3ADF1800EF8D7D /* CACFPreferences.cpp in Sources */,
8BACAAB92E3ADF1800EF8D7D /* AUPlugInDispatch.cpp in Sources */,
8BACAA592E3ADF1800EF8D7D /* CAAUProcessor.cpp in Sources */,
8BACAA6E2E3ADF1800EF8D7D /* CACFDictionary.cpp in Sources */,
8BACAAC12E3ADF1800EF8D7D /* AUBaseHelper.cpp in Sources */,
8BACAAA72E3ADF1800EF8D7D /* CADebugger.cpp in Sources */,
8BACAA7B2E3ADF1800EF8D7D /* CAAudioChannelLayout.cpp in Sources */,
8BACAA7E2E3ADF1800EF8D7D /* AUParamInfo.cpp in Sources */,
8BACAA9C2E3ADF1800EF8D7D /* CAPersistence.cpp in Sources */,
8BACAA902E3ADF1800EF8D7D /* CADebugPrintf.cpp in Sources */,
8BACAAC42E3ADF1800EF8D7D /* AUTimestampGenerator.cpp in Sources */,
8BACAA982E3ADF1800EF8D7D /* CAStreamBasicDescription.cpp in Sources */,
8BACAA682E3ADF1800EF8D7D /* CAAUMIDIMapManager.cpp in Sources */,
8BACAA932E3ADF1800EF8D7D /* CASettingsStorage.cpp in Sources */,
8BACAAB82E3ADF1800EF8D7D /* AUOutputElement.cpp in Sources */,
8BACAA642E3ADF1800EF8D7D /* CAGuard.cpp in Sources */,
8BA05A6B0720730100365D66 /* Silken.cpp in Sources */,
8BACAAA62E3ADF1800EF8D7D /* CAMutex.cpp in Sources */,
8BACAABE2E3ADF1800EF8D7D /* AUEffectBase.cpp in Sources */,
8BACAAA42E3ADF1800EF8D7D /* CACFMachPort.cpp in Sources */,
8BACAAB32E3ADF1800EF8D7D /* AUBase.cpp in Sources */,
8BACAA7F2E3ADF1800EF8D7D /* CASharedLibrary.cpp in Sources */,
8BACAA662E3ADF1800EF8D7D /* CACFDistributedNotification.cpp in Sources */,
8BACAA692E3ADF1800EF8D7D /* CAComponentDescription.cpp in Sources */,
8BACAA702E3ADF1800EF8D7D /* CACFString.cpp in Sources */,
8BACAAB02E3ADF1800EF8D7D /* ComponentBase.cpp in Sources */,
8BACAA912E3ADF1800EF8D7D /* CARingBuffer.cpp in Sources */,
8BACAAB12E3ADF1800EF8D7D /* AUScopeElement.cpp in Sources */,
8BACAAAE2E3ADF1800EF8D7D /* CAAudioUnit.cpp in Sources */,
8BACAAAB2E3ADF1800EF8D7D /* CACFArray.cpp in Sources */,
8BACAAA82E3ADF1800EF8D7D /* CABundleLocker.cpp in Sources */,
8BACAA9A2E3ADF1800EF8D7D /* CAProcess.cpp in Sources */,
8BACAA882E3ADF1800EF8D7D /* CAStreamRangedDescription.cpp in Sources */,
8BACAA892E3ADF1800EF8D7D /* CAPThread.cpp in Sources */,
8BACAA4B2E3ADF1800EF8D7D /* CAComponent.cpp in Sources */,
8BACAA632E3ADF1800EF8D7D /* CAAudioChannelLayoutObject.cpp in Sources */,
8BACAA9E2E3ADF1800EF8D7D /* CAAudioTimeStamp.cpp in Sources */,
8BACAAA52E3ADF1800EF8D7D /* CABufferList.cpp in Sources */,
8BACAA822E3ADF1800EF8D7D /* CACFMessagePort.cpp in Sources */,
8BACAA8C2E3ADF1800EF8D7D /* CAVectorUnit.cpp in Sources */,
8BACAABD2E3ADF1800EF8D7D /* AUInputElement.cpp in Sources */,
8BACAAC52E3ADF1800EF8D7D /* AUBuffer.cpp in Sources */,
8BACAA6B2E3ADF1800EF8D7D /* CADebugMacros.cpp in Sources */,
8BACAA4D2E3ADF1800EF8D7D /* CACFNumber.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8BACAAC92E3ADF2E00EF8D7D /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
3E4BA244089833B7007656EC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9BMAKYA76W;
EXPORTED_SYMBOLS_FILE = Silken.exp;
GCC_OPTIMIZATION_LEVEL = 0;
GENERATE_PKGINFO_FILE = YES;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/";
LIBRARY_STYLE = Bundle;
MACOSX_DEPLOYMENT_TARGET = 11.1;
OTHER_LDFLAGS = "-bundle";
OTHER_REZFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.airwindows.audiounit.${PRODUCT_NAME:identifier}";
PRODUCT_NAME = Silken;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
STRIP_STYLE = debugging;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9BMAKYA76W;
EXPORTED_SYMBOLS_FILE = Silken.exp;
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 = 11.1;
OTHER_LDFLAGS = "-bundle";
OTHER_REZFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = "com.airwindows.audiounit.${PRODUCT_NAME:identifier}";
PRODUCT_NAME = Silken;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
STRIP_INSTALLED_PRODUCT = YES;
STRIP_STYLE = debugging;
WRAPPER_EXTENSION = component;
};
name = Release;
};
3E4BA248089833B7007656EC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "/Users/christopherjohnson/Desktop/CA_SDK/**";
MACOSX_DEPLOYMENT_TARGET = 11.1;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
};
name = Debug;
};
3E4BA249089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "/Users/christopherjohnson/Desktop/CA_SDK/**";
MACOSX_DEPLOYMENT_TARGET = 11.1;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA248089833B7007656EC /* Debug */,
3E4BA249089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View file

@ -0,0 +1,8 @@
<?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>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Silken.component"
BlueprintName = "Silken"
ReferencedContainer = "container:Silken.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Silken.component"
BlueprintName = "Silken"
ReferencedContainer = "container:Silken.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,22 @@
<?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>SchemeUserState</key>
<dict>
<key>Silken.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,58 @@
/*
* File: SilkenVersion.h
*
* Version: 1.0
*
* Created: 7/7/25
*
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
*
* 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 __SilkenVersion_h__
#define __SilkenVersion_h__
#ifdef DEBUG
#define kSilkenVersion 0xFFFFFFFF
#else
#define kSilkenVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Silken_COMP_MANF 'Dthr'
#define Silken_COMP_SUBTYPE 'slkn'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

Binary file not shown.

View file

@ -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>

View file

@ -0,0 +1,142 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Silken */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* 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,
324,
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 = 775573984;
PBXWorkspaceStateSaveDate = 775573984;
};
perUserProjectItems = {
8B80369D2E3A5342007BDCDE /* PBXTextBookmark */ = 8B80369D2E3A5342007BDCDE /* PBXTextBookmark */;
8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */ = 8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */;
8B80369F2E3A5342007BDCDE /* PBXTextBookmark */ = 8B80369F2E3A5342007BDCDE /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
};
};
2407DEB6089929BA00EB68BF /* Silken.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {660, 2610}}";
sepNavSelRange = "{4741, 0}";
sepNavVisRange = "{4522, 219}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Silken.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {46011, 1314}}";
sepNavSelRange = "{432, 0}";
sepNavVisRange = "{431, 5152}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {859, 20267}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{9653, 2414}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* SilkenProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1138, 3960}}";
sepNavSelRange = "{584, 0}";
sepNavVisRange = "{4962, 1624}";
sepNavWindowFrame = "{{31, 50}, {1185, 824}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8B02375F1D42B1C400E1E8C8 /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8B80369D2E3A5342007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Silken.cpp */;
name = "Silken.cpp: 124";
rLen = 0;
rLoc = 4741;
rType = 0;
vrLen = 219;
vrLoc = 4522;
};
8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
comments = "'unprime' defined but not used";
fRef = 245463B80991757100464AD3 /* Silken.h */;
fallbackIsa = XCBuildMessageTextBookmark;
rLen = 1;
rLoc = 24;
rType = 1;
};
8B80369F2E3A5342007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Silken.h */;
name = "Silken.h: 25";
rLen = 0;
rLoc = 432;
rType = 0;
vrLen = 5152;
vrLoc = 431;
};
8D01CCC60486CAD60068D4B7 /* Silken */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,462 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
2407DEB9089929BA00EB68BF /* Silken.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2407DEB6089929BA00EB68BF /* Silken.cpp */; };
245463B90991757100464AD3 /* Silken.h in Headers */ = {isa = PBXBuildFile; fileRef = 245463B80991757100464AD3 /* Silken.h */; };
24CFB70407E7A0220081BD57 /* PkgInfo in Resources */ = {isa = PBXBuildFile; fileRef = 24CFB70307E7A0220081BD57 /* PkgInfo */; };
24D8287009A914000093AEF8 /* SilkenProc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 24D8286F09A914000093AEF8 /* SilkenProc.cpp */; };
24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */; };
8BACAADC2E3ADF9800EF8D7D /* vstfxstore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAAD02E3ADF9800EF8D7D /* vstfxstore.h */; };
8BACAADD2E3ADF9800EF8D7D /* aeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAAD12E3ADF9800EF8D7D /* aeffect.h */; };
8BACAADE2E3ADF9800EF8D7D /* aeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAAD22E3ADF9800EF8D7D /* aeffectx.h */; };
8BACAADF2E3ADF9800EF8D7D /* audioeffectx.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAAD62E3ADF9800EF8D7D /* audioeffectx.h */; };
8BACAAE02E3ADF9800EF8D7D /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAAD72E3ADF9800EF8D7D /* audioeffect.cpp */; };
8BACAAE12E3ADF9800EF8D7D /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAAD82E3ADF9800EF8D7D /* audioeffectx.cpp */; };
8BACAAE22E3ADF9800EF8D7D /* aeffeditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAAD92E3ADF9800EF8D7D /* aeffeditor.h */; };
8BACAAE32E3ADF9800EF8D7D /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BACAADA2E3ADF9800EF8D7D /* vstplugmain.cpp */; };
8BACAAE42E3ADF9800EF8D7D /* audioeffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BACAADB2E3ADF9800EF8D7D /* audioeffect.h */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
2407DE920899296600EB68BF /* Silken.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Silken.vst; sourceTree = BUILT_PRODUCTS_DIR; };
2407DEB6089929BA00EB68BF /* Silken.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Silken.cpp; path = source/Silken.cpp; sourceTree = "<group>"; };
245463B80991757100464AD3 /* Silken.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Silken.h; path = source/Silken.h; sourceTree = "<group>"; };
24CFB70307E7A0220081BD57 /* PkgInfo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PkgInfo; path = mac/PkgInfo; sourceTree = "<group>"; };
24D8286F09A914000093AEF8 /* SilkenProc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SilkenProc.cpp; path = source/SilkenProc.cpp; sourceTree = "<group>"; };
24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = xcode_vst_prefix.h; path = mac/xcode_vst_prefix.h; sourceTree = SOURCE_ROOT; };
8BACAAD02E3ADF9800EF8D7D /* vstfxstore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vstfxstore.h; sourceTree = "<group>"; };
8BACAAD12E3ADF9800EF8D7D /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffect.h; sourceTree = "<group>"; };
8BACAAD22E3ADF9800EF8D7D /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffectx.h; sourceTree = "<group>"; };
8BACAAD62E3ADF9800EF8D7D /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffectx.h; sourceTree = "<group>"; };
8BACAAD72E3ADF9800EF8D7D /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffect.cpp; sourceTree = "<group>"; };
8BACAAD82E3ADF9800EF8D7D /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioeffectx.cpp; sourceTree = "<group>"; };
8BACAAD92E3ADF9800EF8D7D /* aeffeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aeffeditor.h; sourceTree = "<group>"; };
8BACAADA2E3ADF9800EF8D7D /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vstplugmain.cpp; sourceTree = "<group>"; };
8BACAADB2E3ADF9800EF8D7D /* audioeffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioeffect.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXGroup section */
089C166AFE841209C02AAC07 /* FM-Chopper */ = {
isa = PBXGroup;
children = (
19C28FB4FE9D528D11CA2CBB /* Products */,
089C167CFE841241C02AAC07 /* Resources */,
08FB77ADFE841716C02AAC07 /* Source */,
);
name = "FM-Chopper";
sourceTree = "<group>";
};
089C167CFE841241C02AAC07 /* Resources */ = {
isa = PBXGroup;
children = (
24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */,
24CFB70307E7A0220081BD57 /* PkgInfo */,
8D01CCD10486CAD60068D4B7 /* Info.plist */,
);
name = Resources;
sourceTree = "<group>";
};
08FB77ADFE841716C02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
8BACAACD2E3ADF9800EF8D7D /* vstsdk2.4 */,
2407DEB6089929BA00EB68BF /* Silken.cpp */,
24D8286F09A914000093AEF8 /* SilkenProc.cpp */,
245463B80991757100464AD3 /* Silken.h */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
2407DE920899296600EB68BF /* Silken.vst */,
);
name = Products;
sourceTree = "<group>";
};
8BACAACD2E3ADF9800EF8D7D /* vstsdk2.4 */ = {
isa = PBXGroup;
children = (
8BACAACE2E3ADF9800EF8D7D /* pluginterfaces */,
8BACAAD32E3ADF9800EF8D7D /* public.sdk */,
);
name = vstsdk2.4;
path = ../../../../vstsdk2.4;
sourceTree = "<group>";
};
8BACAACE2E3ADF9800EF8D7D /* pluginterfaces */ = {
isa = PBXGroup;
children = (
8BACAACF2E3ADF9800EF8D7D /* vst2.x */,
);
path = pluginterfaces;
sourceTree = "<group>";
};
8BACAACF2E3ADF9800EF8D7D /* vst2.x */ = {
isa = PBXGroup;
children = (
8BACAAD02E3ADF9800EF8D7D /* vstfxstore.h */,
8BACAAD12E3ADF9800EF8D7D /* aeffect.h */,
8BACAAD22E3ADF9800EF8D7D /* aeffectx.h */,
);
path = vst2.x;
sourceTree = "<group>";
};
8BACAAD32E3ADF9800EF8D7D /* public.sdk */ = {
isa = PBXGroup;
children = (
8BACAAD42E3ADF9800EF8D7D /* source */,
);
path = public.sdk;
sourceTree = "<group>";
};
8BACAAD42E3ADF9800EF8D7D /* source */ = {
isa = PBXGroup;
children = (
8BACAAD52E3ADF9800EF8D7D /* vst2.x */,
);
path = source;
sourceTree = "<group>";
};
8BACAAD52E3ADF9800EF8D7D /* vst2.x */ = {
isa = PBXGroup;
children = (
8BACAAD62E3ADF9800EF8D7D /* audioeffectx.h */,
8BACAAD72E3ADF9800EF8D7D /* audioeffect.cpp */,
8BACAAD82E3ADF9800EF8D7D /* audioeffectx.cpp */,
8BACAAD92E3ADF9800EF8D7D /* aeffeditor.h */,
8BACAADA2E3ADF9800EF8D7D /* vstplugmain.cpp */,
8BACAADB2E3ADF9800EF8D7D /* audioeffect.h */,
);
path = vst2.x;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8BACAAE22E3ADF9800EF8D7D /* aeffeditor.h in Headers */,
245463B90991757100464AD3 /* Silken.h in Headers */,
8BACAAE42E3ADF9800EF8D7D /* audioeffect.h in Headers */,
8BACAADD2E3ADF9800EF8D7D /* aeffect.h in Headers */,
24D8287F09A9164A0093AEF8 /* xcode_vst_prefix.h in Headers */,
8BACAADF2E3ADF9800EF8D7D /* audioeffectx.h in Headers */,
8BACAADC2E3ADF9800EF8D7D /* vstfxstore.h in Headers */,
8BACAADE2E3ADF9800EF8D7D /* aeffectx.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* Silken */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Silken" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
24CFB70807E7A07C0081BD57 /* Copy PkgInfo */,
);
buildRules = (
);
dependencies = (
);
name = Silken;
productInstallPath = "$(HOME)/Library/Bundles";
productName = "FM-Chopper";
productReference = 2407DE920899296600EB68BF /* Silken.vst */;
productType = "com.apple.product-type.bundle";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1420;
};
buildConfigurationList = 24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "Silken" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
de,
en,
Base,
fr,
ja,
);
mainGroup = 089C166AFE841209C02AAC07 /* FM-Chopper */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Silken */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8D01CCC90486CAD60068D4B7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
24CFB70407E7A0220081BD57 /* PkgInfo in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
24CFB70807E7A07C0081BD57 /* Copy PkgInfo */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Copy PkgInfo";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "cp mac/PkgInfo \"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.vst/Contents/\"";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BACAAE12E3ADF9800EF8D7D /* audioeffectx.cpp in Sources */,
2407DEB9089929BA00EB68BF /* Silken.cpp in Sources */,
8BACAAE02E3ADF9800EF8D7D /* audioeffect.cpp in Sources */,
8BACAAE32E3ADF9800EF8D7D /* vstplugmain.cpp in Sources */,
24D8287009A914000093AEF8 /* SilkenProc.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
24BEAAEE08919AE700E695F9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9BMAKYA76W;
FRAMEWORK_SEARCH_PATHS = "";
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_TRIGRAPHS = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_MODEL_TUNING = "";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
HEADER_SEARCH_PATHS = "/Users/christopherjohnson/Desktop/vstsdk2.4/**";
INFOPLIST_FILE = ./mac/Info.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST";
LIBRARY_SEARCH_PATHS = "";
MACOSX_DEPLOYMENT_TARGET = 11.1;
OTHER_CFLAGS = "";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.airwindows.Silken;
PRODUCT_NAME = Silken;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SECTORDER_FLAGS = "";
STRIP_STYLE = debugging;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
WRAPPER_EXTENSION = vst;
};
name = Debug;
};
24BEAAEF08919AE700E695F9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
CODE_SIGN_STYLE = Manual;
COPY_PHASE_STRIP = YES;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=macosx*]" = 9BMAKYA76W;
FRAMEWORK_SEARCH_PATHS = "";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_ENABLE_TRIGRAPHS = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_MODEL_TUNING = "";
GCC_OPTIMIZATION_LEVEL = s;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = NO;
HEADER_SEARCH_PATHS = "/Users/christopherjohnson/Desktop/vstsdk2.4/**";
INFOPLIST_FILE = ./mac/Info.plist;
INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/VST";
LIBRARY_SEARCH_PATHS = "";
MACOSX_DEPLOYMENT_TARGET = 11.1;
OTHER_CFLAGS = "";
OTHER_LDFLAGS = "";
OTHER_REZFLAGS = "";
PRODUCT_BUNDLE_IDENTIFIER = com.airwindows.Silken;
PRODUCT_NAME = Silken;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SECTORDER_FLAGS = "";
SKIP_INSTALL = NO;
STRIP_INSTALLED_PRODUCT = YES;
STRIP_STYLE = debugging;
WARNING_CFLAGS = (
"-Wmost",
"-Wno-four-char-constants",
"-Wno-unknown-pragmas",
);
WRAPPER_EXTENSION = vst;
};
name = Release;
};
24BEAAF208919AE700E695F9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_MODEL_TUNING = G5;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "";
INFOPLIST_PREPROCESS = NO;
MACOSX_DEPLOYMENT_TARGET = 11.1;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
24BEAAF308919AE700E695F9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD)";
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_MODEL_TUNING = G4;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = s;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = "";
INFOPLIST_PREPROCESS = NO;
MACOSX_DEPLOYMENT_TARGET = 11.1;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
24BEAAEE08919AE700E695F9 /* Debug */,
24BEAAEF08919AE700E695F9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
24BEAAF108919AE700E695F9 /* Build configuration list for PBXProject "Silken" */ = {
isa = XCConfigurationList;
buildConfigurations = (
24BEAAF208919AE700E695F9 /* Debug */,
24BEAAF308919AE700E695F9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:Sample.xcodeproj">
</FileRef>
</Workspace>

View file

@ -0,0 +1,8 @@
<?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>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,143 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Gain */;
codeSenseManager = 91857D95148EF55400AAA11B /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
829,
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,
789,
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 = 345089498;
PBXWorkspaceStateSaveDate = 345089498;
};
perUserProjectItems = {
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = 911C2A9D1491A5F600A430AF /* PBXTextBookmark */;
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */;
};
sourceControlManager = 91857D94148EF55400AAA11B /* Source Control */;
userBuildSettings = {
};
};
2407DEB6089929BA00EB68BF /* Gain.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 1768}}";
sepNavSelRange = "{247, 0}";
sepNavVisRange = "{0, 1657}";
};
};
245463B80991757100464AD3 /* Gain.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 975}}";
sepNavSelRange = "{1552, 0}";
sepNavVisRange = "{796, 1857}";
sepNavWindowFrame = "{{15, 465}, {750, 558}}";
};
};
24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 488}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 798}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {859, 19825}}";
sepNavSelRange = "{10641, 0}";
sepNavVisRange = "{10076, 1095}";
};
};
24D8286F09A914000093AEF8 /* GainProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 482}}";
sepNavSelRange = "{239, 0}";
sepNavVisRange = "{0, 950}";
};
};
24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 493}}";
sepNavSelRange = "{249, 0}";
sepNavVisRange = "{0, 249}";
};
};
8D01CCC60486CAD60068D4B7 /* Gain */ = {
activeExec = 0;
};
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
name = "Gain.cpp: 10";
rLen = 0;
rLoc = 247;
rType = 0;
vrLen = 1657;
vrLoc = 0;
};
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
name = "Gain.cpp: 10";
rLen = 0;
rLoc = 247;
rType = 0;
vrLen = 1625;
vrLoc = 0;
};
91857D94148EF55400AAA11B /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
91857D95148EF55400AAA11B /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
}

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BlueprintName = "Silken"
ReferencedContainer = "container:Silken.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BlueprintName = "Silken"
ReferencedContainer = "container:Silken.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,22 @@
<?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>SchemeUserState</key>
<dict>
<key>Silken.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,22 @@
<?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>SchemeUserState</key>
<dict>
<key>«PROJECTNAME».xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "&#171;PROJECTNAME&#187;.vst"
BlueprintName = "&#171;PROJECTNAME&#187;"
ReferencedContainer = "container:Sample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,24 @@
<?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>Silken</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>Dthr</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1 @@
BNDL????

View file

@ -0,0 +1,17 @@
#define MAC 1
#define MACX 1
#define USE_NAMESPACE 0
#define TARGET_API_MAC_CARBON 1
#define USENAVSERVICES 1
#define __CF_USE_FRAMEWORK_INCLUDES__
#if __MWERKS__
#define __NOEXTENSIONS__
#endif
#define QUARTZ 1
#include <AvailabilityMacros.h>

View file

@ -0,0 +1,143 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Silken(audioMaster);}
Silken::Silken(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
B = 0.5;
C = 0.5;
for(int count = 0; count < 32767; count++) {firBufferL[count] = 0.0; firBufferR[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSampleL = 0.0;
firlastSampleR = 0.0;
for (int x = 0; x < 16; x++) {infirmediateL[x] = 0.0; infirmediateR[x] = 0.0;}
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
_canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
_canDo.insert("x2in2out");
setNumInputs(kNumInputs);
setNumOutputs(kNumOutputs);
setUniqueID(kUniqueId);
canProcessReplacing(); // supports output replacing
canDoubleReplacing(); // supports double precision processing
programsAreChunks(true);
vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
}
Silken::~Silken() {}
VstInt32 Silken::getVendorVersion () {return 1000;}
void Silken::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Silken::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
static float pinParameter(float data)
{
if (data < 0.0f) return 0.0f;
if (data > 1.0f) return 1.0f;
return data;
}
VstInt32 Silken::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
started with. */
*data = chunkData;
return kNumParameters * sizeof(float);
}
VstInt32 Silken::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
code from setParameter() here. */
return 0;
}
void Silken::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Silken::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
default: break; // unknown parameter, shouldn't happen!
} return 0.0; //we only need to update the relevant name, this is simple to manage
}
void Silken::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Silken", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Window", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Silken::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
case kParamC: float2string (C, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Silken::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Silken::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Silken::getEffectName(char* name) {
vst_strncpy(name, "Silken", kVstMaxProductStrLen); return true;
}
VstPlugCategory Silken::getPlugCategory() {return kPlugCategEffect;}
bool Silken::getProductString(char* text) {
vst_strncpy (text, "airwindows Silken", kVstMaxProductStrLen); return true;
}
bool Silken::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,220 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
void Silken::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}
void Silken::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}

View file

@ -0,0 +1,142 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Silken */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* 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,
324,
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 = 775573984;
PBXWorkspaceStateSaveDate = 775573984;
};
perUserProjectItems = {
8B80369D2E3A5342007BDCDE /* PBXTextBookmark */ = 8B80369D2E3A5342007BDCDE /* PBXTextBookmark */;
8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */ = 8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */;
8B80369F2E3A5342007BDCDE /* PBXTextBookmark */ = 8B80369F2E3A5342007BDCDE /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
};
};
2407DEB6089929BA00EB68BF /* Silken.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {660, 2610}}";
sepNavSelRange = "{4741, 0}";
sepNavVisRange = "{4522, 219}";
sepNavWindowFrame = "{{12, 47}, {895, 831}}";
};
};
245463B80991757100464AD3 /* Silken.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {46011, 1314}}";
sepNavSelRange = "{432, 0}";
sepNavVisRange = "{431, 5152}";
sepNavWindowFrame = "{{20, 47}, {895, 831}}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {859, 20267}}";
sepNavSelRange = "{10616, 0}";
sepNavVisRange = "{9653, 2414}";
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
};
};
24D8286F09A914000093AEF8 /* SilkenProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1138, 3960}}";
sepNavSelRange = "{584, 0}";
sepNavVisRange = "{4962, 1624}";
sepNavWindowFrame = "{{31, 50}, {1185, 824}}";
};
};
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8B02375F1D42B1C400E1E8C8 /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8B80369D2E3A5342007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Silken.cpp */;
name = "Silken.cpp: 124";
rLen = 0;
rLoc = 4741;
rType = 0;
vrLen = 219;
vrLoc = 4522;
};
8B80369E2E3A5342007BDCDE /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
comments = "'unprime' defined but not used";
fRef = 245463B80991757100464AD3 /* Silken.h */;
fallbackIsa = XCBuildMessageTextBookmark;
rLen = 1;
rLoc = 24;
rType = 1;
};
8B80369F2E3A5342007BDCDE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 245463B80991757100464AD3 /* Silken.h */;
name = "Silken.h: 25";
rLen = 0;
rLoc = 432;
rType = 0;
vrLen = 5152;
vrLoc = 431;
};
8D01CCC60486CAD60068D4B7 /* Silken */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:Sample.xcodeproj">
</FileRef>
</Workspace>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,143 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Gain */;
codeSenseManager = 91857D95148EF55400AAA11B /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
829,
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,
789,
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 = 345089498;
PBXWorkspaceStateSaveDate = 345089498;
};
perUserProjectItems = {
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = 911C2A9D1491A5F600A430AF /* PBXTextBookmark */;
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */;
};
sourceControlManager = 91857D94148EF55400AAA11B /* Source Control */;
userBuildSettings = {
};
};
2407DEB6089929BA00EB68BF /* Gain.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 1768}}";
sepNavSelRange = "{247, 0}";
sepNavVisRange = "{0, 1657}";
};
};
245463B80991757100464AD3 /* Gain.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 975}}";
sepNavSelRange = "{1552, 0}";
sepNavVisRange = "{796, 1857}";
sepNavWindowFrame = "{{15, 465}, {750, 558}}";
};
};
24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 488}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 798}";
};
};
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {859, 19825}}";
sepNavSelRange = "{10641, 0}";
sepNavVisRange = "{10076, 1095}";
};
};
24D8286F09A914000093AEF8 /* GainProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 482}}";
sepNavSelRange = "{239, 0}";
sepNavVisRange = "{0, 950}";
};
};
24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {992, 493}}";
sepNavSelRange = "{249, 0}";
sepNavVisRange = "{0, 249}";
};
};
8D01CCC60486CAD60068D4B7 /* Gain */ = {
activeExec = 0;
};
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
name = "Gain.cpp: 10";
rLen = 0;
rLoc = 247;
rType = 0;
vrLen = 1657;
vrLoc = 0;
};
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
name = "Gain.cpp: 10";
rLen = 0;
rLoc = 247;
rType = 0;
vrLen = 1625;
vrLoc = 0;
};
91857D94148EF55400AAA11B /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
91857D95148EF55400AAA11B /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
}

View file

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BlueprintName = "Gain"
ReferencedContainer = "container:Gain.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BlueprintName = "Gain"
ReferencedContainer = "container:Gain.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BlueprintName = "Gain"
ReferencedContainer = "container:Gain.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,22 @@
<?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>SchemeUserState</key>
<dict>
<key>Gain.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>8</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,22 @@
<?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>SchemeUserState</key>
<dict>
<key>«PROJECTNAME».xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "&#171;PROJECTNAME&#187;.vst"
BlueprintName = "&#171;PROJECTNAME&#187;"
ReferencedContainer = "container:Sample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,24 @@
<?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>Silken</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.airwindows.Silken</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleSignature</key>
<string>Dthr</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1 @@
BNDL????

View file

@ -0,0 +1,17 @@
#define MAC 1
#define MACX 1
#define USE_NAMESPACE 0
#define TARGET_API_MAC_CARBON 1
#define USENAVSERVICES 1
#define __CF_USE_FRAMEWORK_INCLUDES__
#if __MWERKS__
#define __NOEXTENSIONS__
#endif
#define QUARTZ 1
#include <AvailabilityMacros.h>

View file

@ -0,0 +1,143 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Silken(audioMaster);}
Silken::Silken(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
B = 0.5;
C = 0.5;
for(int count = 0; count < 32767; count++) {firBufferL[count] = 0.0; firBufferR[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSampleL = 0.0;
firlastSampleR = 0.0;
for (int x = 0; x < 16; x++) {infirmediateL[x] = 0.0; infirmediateR[x] = 0.0;}
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
_canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
_canDo.insert("x2in2out");
setNumInputs(kNumInputs);
setNumOutputs(kNumOutputs);
setUniqueID(kUniqueId);
canProcessReplacing(); // supports output replacing
canDoubleReplacing(); // supports double precision processing
programsAreChunks(true);
vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
}
Silken::~Silken() {}
VstInt32 Silken::getVendorVersion () {return 1000;}
void Silken::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Silken::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
static float pinParameter(float data)
{
if (data < 0.0f) return 0.0f;
if (data > 1.0f) return 1.0f;
return data;
}
VstInt32 Silken::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
started with. */
*data = chunkData;
return kNumParameters * sizeof(float);
}
VstInt32 Silken::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
code from setParameter() here. */
return 0;
}
void Silken::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Silken::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
default: break; // unknown parameter, shouldn't happen!
} return 0.0; //we only need to update the relevant name, this is simple to manage
}
void Silken::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Silken", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Window", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Silken::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
case kParamC: float2string (C, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Silken::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Silken::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Silken::getEffectName(char* name) {
vst_strncpy(name, "Silken", kVstMaxProductStrLen); return true;
}
VstPlugCategory Silken::getPlugCategory() {return kPlugCategEffect;}
bool Silken::getProductString(char* text) {
vst_strncpy (text, "airwindows Silken", kVstMaxProductStrLen); return true;
}
bool Silken::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,220 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
void Silken::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}
void Silken::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}

Binary file not shown.

Binary file not shown.

143
plugins/WinVST/Silken/Silken.cpp Executable file
View file

@ -0,0 +1,143 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Silken(audioMaster);}
Silken::Silken(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
B = 0.5;
C = 0.5;
for(int count = 0; count < 32767; count++) {firBufferL[count] = 0.0; firBufferR[count] = 0.0;}
for(int count = 0; count < 999; count++) {fir[count] = 0.0;}
firPosition = 0;
firlastSampleL = 0.0;
firlastSampleR = 0.0;
for (int x = 0; x < 16; x++) {infirmediateL[x] = 0.0; infirmediateR[x] = 0.0;}
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
//this is reset: values being initialized only once. Startup values, whatever they are.
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect.
_canDo.insert("plugAsSend"); // plug-in can be used as a send effect.
_canDo.insert("x2in2out");
setNumInputs(kNumInputs);
setNumOutputs(kNumOutputs);
setUniqueID(kUniqueId);
canProcessReplacing(); // supports output replacing
canDoubleReplacing(); // supports double precision processing
programsAreChunks(true);
vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name
}
Silken::~Silken() {}
VstInt32 Silken::getVendorVersion () {return 1000;}
void Silken::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Silken::getProgramName(char *name) {vst_strncpy (name, _programName, kVstMaxProgNameLen);}
//airwindows likes to ignore this stuff. Make your own programs, and make a different plugin rather than
//trying to do versioning and preventing people from using older versions. Maybe they like the old one!
static float pinParameter(float data)
{
if (data < 0.0f) return 0.0f;
if (data > 1.0f) return 1.0f;
return data;
}
VstInt32 Silken::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
started with. */
*data = chunkData;
return kNumParameters * sizeof(float);
}
VstInt32 Silken::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
code from setParameter() here. */
return 0;
}
void Silken::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Silken::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
default: break; // unknown parameter, shouldn't happen!
} return 0.0; //we only need to update the relevant name, this is simple to manage
}
void Silken::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Silken", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Window", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Silken::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
case kParamC: float2string (C, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Silken::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Silken::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Silken::getEffectName(char* name) {
vst_strncpy(name, "Silken", kVstMaxProductStrLen); return true;
}
VstPlugCategory Silken::getPlugCategory() {return kPlugCategEffect;}
bool Silken::getProductString(char* text) {
vst_strncpy (text, "airwindows Silken", kVstMaxProductStrLen); return true;
}
bool Silken::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

78
plugins/WinVST/Silken/Silken.h Executable file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,220 @@
/* ========================================
* Silken - Silken.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Silken_H
#include "Silken.h"
#endif
void Silken::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}
void Silken::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
double wet = A;
double freq = pow(B,2)*M_PI_2; if (freq < 0.0001) freq = 0.0001;
double positionMiddle = sin(freq)*0.5; //shift relative to frequency, not sample-rate
freq /= overallscale; //generating the FIR relative to sample rate
const int window = (int)fmin((C*C*256.0*overallscale)+2.0,998.0); //so's the window size
const int middle = (int)((double)window*positionMiddle);
for(int fip = 0; fip < middle; fip++) {
fir[fip] = (unprime[middle-fip])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
fir[middle] = 1.0;
for(int fip = middle+1; fip < window; fip++) {
fir[fip] = (unprime[fip-middle])*freq;
fir[fip] = sin(fir[fip])/fir[fip]; //sinc function
fir[fip] *= sin(((double)fip/(double)window)*M_PI); //windowed with sin()
}
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (firPosition < 0 || firPosition > 32767) firPosition = 32767;
int firp = firPosition;
firBufferL[firp] = inputSampleL; inputSampleL = 0.0;
firBufferR[firp] = inputSampleR; inputSampleR = 0.0;
if (firp + unprime[window] < 32767) {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip]] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip]] * fir[fip];
}
} else {
for(int fip = 1; fip < window; fip++) {
inputSampleL += firBufferL[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
inputSampleR += firBufferR[firp+unprime[fip] - ((firp+unprime[fip] > 32767)?32768:0)] * fir[fip];
}
}
inputSampleL *= sqrt(freq*0.618033988749894848204586); //compensate for gain
inputSampleR *= sqrt(freq*0.618033988749894848204586); //compensate for gain
firPosition--;
double softSpeed = fabs(inputSampleL);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleL = sin(inputSampleL)*0.9549925859; //scale to what cliponly uses
inputSampleL = (inputSampleL*softSpeed)+(firlastSampleL*(1.0-softSpeed));
softSpeed = fabs(inputSampleR);
if (softSpeed < 1.0) softSpeed = 1.0; else softSpeed = 1.0/softSpeed;
inputSampleR = sin(inputSampleR)*0.9549925859; //scale to what cliponly uses
inputSampleR = (inputSampleR*softSpeed)+(firlastSampleR*(1.0-softSpeed));
infirmediateL[spacing] = inputSampleL;
inputSampleL = firlastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateL[x-1] = infirmediateL[x];
firlastSampleL = infirmediateL[0]; //run a little buffer to handle this
infirmediateR[spacing] = inputSampleR;
inputSampleR = firlastSampleR; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) infirmediateR[x-1] = infirmediateR[x];
firlastSampleR = infirmediateR[0]; //run a little buffer to handle this
if (firp+unprime[middle] < 32768) {
inputSampleL = (firBufferL[firp+unprime[middle]]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]]*(wet+1.0))-(inputSampleR*wet);
} else {
inputSampleL = (firBufferL[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleL*wet);
inputSampleR = (firBufferR[firp+unprime[middle]-32768]*(wet+1.0))-(inputSampleR*wet);
}//dry/wet must use a sample from the middle of firBuffer for dry,
//because it's an FIR filter that is phase linear by nature
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}

View file

@ -0,0 +1,28 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VSTProject", "VSTProject.vcxproj", "{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.ActiveCfg = Debug|x64
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.Build.0 = Debug|x64
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.ActiveCfg = Debug|Win32
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.Build.0 = Debug|Win32
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.ActiveCfg = Release|x64
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.Build.0 = Release|x64
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.ActiveCfg = Release|Win32
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
<ClCompile Include="Silken.cpp" />
<ClCompile Include="SilkenProc.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
<ClInclude Include="Silken.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
<RootNamespace>VSTProject</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
<ProjectName>Silken64</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>NotSet</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<TargetExt>.dll</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FunctionLevelLinking>false</FunctionLevelLinking>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FunctionLevelLinking>false</FunctionLevelLinking>
<DebugInformationFormat>None</DebugInformationFormat>
</ClCompile>
<Link>
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>false</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>None</DebugInformationFormat>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>false</FunctionLevelLinking>
<IntrinsicFunctions>false</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>None</DebugInformationFormat>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Silken.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SilkenProc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Silken.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,3 @@
EXPORTS
VSTPluginMain
main=VSTPluginMain