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

@ -29,7 +29,7 @@ Dynamics: Pressure6, BeziComp, Pop3, Pop2, Pressure5, StoneFireComp, Dynamics, P
Effects: RingModulator, Dubly3, Dubly2, GalacticVibe, CloudCoat, Disintegrate, Fracture2, Dubly, Pafnuty2, PitchNasty, Trianglizer, ShortBuss, GuitarConditioner, Aura, TremoSquare, Tremolo, GlitchShifter, Gringer, Exciter, Energy2, Energy, Facet, Fracture, PowerSag2, PowerSag, Preponderant, Nikola
Filter: SmoothEQ, Parametric, Stonefire, AngleEQ, AngleFilter, Isolator3, BezEQ, Baxandall2, Pear2, Capacitor2, Distance3, Pear, ResEQ2, SubTight, CStrip2, Weight, Isolator2, Kalman, PrimeFIR, Holt2, Holt, ToneSlant, AverMatrix, Average, MackEQ, Hull2, Baxandall, Hull, EQ, Capacitor, Isolator, TapeFat, ResEQ, Lowpass2, Highpass2, Distance, Distance2, Lowpass, Highpass
Filter: SmoothEQ, Parametric, Silken, Stonefire, AngleEQ, AngleFilter, Isolator3, BezEQ, Baxandall2, Pear2, Capacitor2, Distance3, Pear, ResEQ2, SubTight, CStrip2, Weight, Isolator2, Kalman, PrimeFIR, Holt2, Holt, ToneSlant, AverMatrix, Average, MackEQ, Hull2, Baxandall, Hull, EQ, Capacitor, Isolator, TapeFat, ResEQ, Lowpass2, Highpass2, Distance, Distance2, Lowpass, Highpass
Lo-Fi: Flutter2, DeRez3, Pockey2, CrunchyGrooveWear, GrooveWear, Pockey, Flutter, DeRez2, BitGlitter, DeRez, TapeBias, ChromeOxide, Cojones, Vibrato, Bite, Deckwrecka, DustBunny
@ -4573,6 +4573,22 @@ But in sticking out, the subliminals it will generate are VERY different from wh
But isnt it fun sometimes to not care about that and just try out something wild to see what it does? Silhouette finds its use in that space. I hope you like it.
############ Silken is a high frequency boost that gives ambience and texture.
Here's one where the plugin is probably better than my ability to demo it. Silken is a kind of high frequency boost, based on PrimeFIR used in 'prime mode' but backwards, so rather than being a lowpass with lots of ambient leakage, it's a method of subtracting such a brickwall mostly linear phase lowpass with different leakage.
So that's a lot. You can simply listen to it and see whether it is able to do 'silky high frequency boosts such as you might use for lead vocals' or you can bear with me as I try to explain HOW it does that thing. Because, even though stuff's kinda hectic around here and my video wasn't good, the plugin I made really brings a useful texture. If I could sing better I'd be all over this demonstrating how great it is, and even so it might help out. I feel it might click with people so it behooves me to explain how it's real.
So, you can run a brickwall filter, using a 'window' (one of the controls) to determine just how steep the filter's gonna be. It's an algorithm called a sinc filter, and the wider the window, the steeper your brickwall can be. It's a phase-linear filter, so it has pre-echo and it has latency. Silken does not compensate for this latency, which depends on how wide the window is: it's a slightly unusual arrangement because it's not completely symmetrical in an effort to cut down on the latency.
So far so good. It's like a shelf for boosting highs and cutting lows. But then, bring in what PrimeFIR does. That lets you make the filter only from prime numbered samples, and not every sample. What happens when you make a sparse filter like that? I've made multiple plugins that use this TYPE of effect: BrightAmbience, and in fact my classic plugin Iron Oxide. There's plenty of experience in using this type of effect… at least with me :)
PrimeFIR can make a 'lowpass' out of only prime-numbered samples (part of the filter, not just counting every sample in your audio) and it lets through a sort of 'haze' around the filtered sound, as audio across the whole window bleeds through. What Silken does is different in two ways. First, it's subtracting the filtered part, to make it a highpass. Second, it's constructing the filter out of only NON-prime samples, this time. So what's happening is, it's more effective at being a highpass than PrimeFIR is at being a lowpass, but the stuff that leaks through is still out of the prime numbers because those are now the ones NOT being subtracted.
You get a highpass where, the harder you push it, the more of an 'aura of silky ambience' you get around the highs. It will sort of diffuse super high frequency transient information, like a diffusion filter does for visual information. The result is flattering in exactly the same way a camera's diffusion filter is. It should work fine on even the most high quality sources, but it should be an absolute lifesaver on the kind of nasty mic (like certain lavaliers!) that puts out distressing hyperfocussed bright transients. Now, you can diffuse that and change the texture of it, not just turn the brightness you've got up and down.
Hope you like it :)
############ Sinew combines sines and slew clipping for a tape bias effect!
Looks like I'm working on three major fronts at the moment, and here's a key advance on at least one of them :)

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

View file

@ -349,6 +349,7 @@ ShortBuss chases second harmonic, to add or remove it.[coll=Latest]
SideDull is like Sidepass, but a lowpass on the side channel. Treble-centerer.[coll=Latest]
Sidepass is a simple utility plugin, a highpass on the side channel. Mono-maker.[coll=Latest]
Silhouette replaces the sound with raw noise sculpted to match its dynamics.[coll=Latest]
Silken is a high frequency boost that gives ambience and texture.[coll=Recommended,Latest]
Sinew combines sines and slew clipping for a tape bias effect![coll=Basic,Recommended,Latest]
SingleEndedTriode is unusual analog modeling effects.[coll=Recommended,Latest]
Slew is a slew clipper, which darkens treble in an unusual way.[coll=]