This commit is contained in:
Christopher Johnson 2025-10-04 20:47:21 -04:00
parent 507302734a
commit 55a9a9549c
379 changed files with 102059 additions and 0 deletions

View file

@ -3928,6 +3928,20 @@ So if you liked weirdness like the Y series filters, this is your new toy. Back
Yeah, let's just call it 'more' ;)
############ PearEQ is a six-band Pear-based graphic EQ.
Turns out Pear wasn't done, even though it's been around for years. Pear, Pear2 for more nonlinearity, ConsoleMC and MD, ConsoleLA… all based on my filter derived from the Holt filter. I've done it by itself, I've stacked it up in the traditional way for making a steep multipole filter, I've taken those and made multi-band units nineteen Pear filters deep.
And all of that was before I started fooling with AngleEQ, which is incapable of doing what Pear or a biquad filter can do. Angle screws up the phase so thoroughly that if you generate a a rolled-off filtered crossover, and subtract the filtered part from dry, the result still has just as much bass as before.
So, the trick was reconstructing the original sound out of however many bands you have, EACH pole of the filter. Seemingly a pointless endeavor, but when you do that… suddenly the weird filter is able to filter both ways. So what happens if you do that to a biquad filter that was already able to do both things?
You get SmoothEQ2. That's what I did to make the hyper-flexible filter with tilty shelves. And that's great, and Pear was just sitting there, waiting for me to try it.
PearEQ combines an intensely natural, analog-sounding character around the sharpness of the filter edges, with a steepness otherwise unavailable to that kind of sound. It's a completely different sound from any other way you'd get that Q factor. You can take any biquad filter (for instance, any DAW standard filter) and crank up the steepness, and you'll get that sharp of a crossover… with obvious resonance, and it'll sound totally different. You can construct an isolator filter out of biquads and it'll still act different: Pear produces an increasingly steep drop-off into the stopband, and biquads won't. It's just different, and PearEQ lets you use that differentness either for great subtlety and natural tone… or to rip and boost frequencies WAY more than you should.
Go right ahead, and I'll keep working on more out of all this, as it comes together and shows its usefulness :)
############ PhaseNudge is a phase rotator/allpass filter.
Heres a simple little utility plugin, Airwindows-ized. Except, it seems like this isnt part of typical DAWs and plugin collections. Cant see why, its a pretty basic tool.

View file

@ -178,6 +178,7 @@ add_airwindows_plugin(DubSub)
add_airwindows_plugin(DubSub2)
add_airwindows_plugin(DustBunny)
add_airwindows_plugin(Dynamics)
add_airwindows_plugin(Dynamics2)
add_airwindows_plugin(Dyno)
add_airwindows_plugin(EQ)
add_airwindows_plugin(Edge)
@ -312,6 +313,8 @@ add_airwindows_plugin(PaulWide)
add_airwindows_plugin(PeaksOnly)
add_airwindows_plugin(Pear)
add_airwindows_plugin(Pear2)
add_airwindows_plugin(PearEQ)
add_airwindows_plugin(PearLiteEQ)
add_airwindows_plugin(PDBuss)
add_airwindows_plugin(PDChannel)
add_airwindows_plugin(PhaseNudge)
@ -376,6 +379,7 @@ add_airwindows_plugin(SingleEndedTriode)
add_airwindows_plugin(Slew)
add_airwindows_plugin(Slew2)
add_airwindows_plugin(Slew3)
add_airwindows_plugin(Slew4)
add_airwindows_plugin(SlewOnly)
add_airwindows_plugin(SlewSonic)
add_airwindows_plugin(Smooth)

View file

@ -0,0 +1,148 @@
/* ========================================
* Dynamics2 - Dynamics2.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Dynamics2_H
#include "Dynamics2.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Dynamics2(audioMaster);}
Dynamics2::Dynamics2(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 1.0;
B = 0.5;
C = 0.5;
D = 0.0;
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.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
}
Dynamics2::~Dynamics2() {}
VstInt32 Dynamics2::getVendorVersion () {return 1000;}
void Dynamics2::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Dynamics2::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 Dynamics2::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
chunkData[3] = D;
/* 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 Dynamics2::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
D = pinParameter(chunkData[3]);
/* 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 Dynamics2::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
case kParamD: D = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Dynamics2::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
case kParamD: return D; 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 Dynamics2::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Thresh", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Attack", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Release", kVstMaxParamStrLen); break;
case kParamD: vst_strncpy (text, "Gate", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Dynamics2::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;
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Dynamics2::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;
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Dynamics2::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Dynamics2::getEffectName(char* name) {
vst_strncpy(name, "Dynamics2", kVstMaxProductStrLen); return true;
}
VstPlugCategory Dynamics2::getPlugCategory() {return kPlugCategEffect;}
bool Dynamics2::getProductString(char* text) {
vst_strncpy (text, "airwindows Dynamics2", kVstMaxProductStrLen); return true;
}
bool Dynamics2::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,89 @@
/* ========================================
* Dynamics2 - Dynamics2.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Dynamics2_H
#define __Dynamics2_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kParamB =1,
kParamC =2,
kParamD =3,
kNumParameters = 4
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'dyn2'; //Change this to what the AU identity is!
class Dynamics2 :
public AudioEffectX
{
public:
Dynamics2(audioMasterCallback audioMaster);
~Dynamics2();
virtual bool getEffectName(char* name); // The plug-in name
virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
virtual bool getVendorString(char* text); // Vendor info
virtual VstInt32 getVendorVersion(); // Version number
virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
virtual void getProgramName(char *name); // read the name from the host
virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
virtual VstInt32 getChunk (void** data, bool isPreset);
virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
virtual VstInt32 canDo(char *text);
private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
float A;
float B;
float C;
float D;
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,240 @@
/* ========================================
* Dynamics2 - Dynamics2.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Dynamics2_H
#include "Dynamics2.h"
#endif
void Dynamics2::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();
double bezCThresh = pow(1.0-A, 6.0) * 8.0;
double bezRez = pow(1.0-B, 8.0) / overallscale;
double sloRez = pow(1.0-C,12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(D,4.0),sqrt(bezCThresh+1.0));
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 (fmax(fabs(inputSampleL),fabs(inputSampleR)) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
if (bezMaxF < gate) bezCompF[bez_SampR] = bezMaxF/gate; //note: SampR is a control voltage,
if (bezCompF[bez_SampR]<gate) bezCompF[bez_SampR] = 0.0; //not a bipolar audio signal
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
if (bezCompS[bez_SampR]<gate) bezCompS[bez_SampR] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
if (bezGate < 1.0 && gate > 0.0) {inputSampleL *= bezGate; inputSampleR *= bezGate;}
//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 Dynamics2::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();
double bezCThresh = pow(1.0-A, 6.0) * 8.0;
double bezRez = pow(1.0-B, 8.0) / overallscale;
double sloRez = pow(1.0-C,12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(D,4.0),sqrt(bezCThresh+1.0));
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 (fmax(fabs(inputSampleL),fabs(inputSampleR)) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
if (bezMaxF < gate) bezCompF[bez_SampR] = bezMaxF/gate; //note: SampR is a control voltage,
if (bezCompF[bez_SampR]<gate) bezCompF[bez_SampR] = 0.0; //not a bipolar audio signal
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
if (bezCompS[bez_SampR]<gate) bezCompS[bez_SampR] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
if (bezGate < 1.0 && gate > 0.0) {inputSampleL *= bezGate; inputSampleR *= bezGate;}
//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,168 @@
/* ========================================
* PearEQ - PearEQ.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearEQ_H
#include "PearEQ.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new PearEQ(audioMaster);}
PearEQ::PearEQ(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
B = 0.5;
C = 0.5;
D = 0.5;
E = 0.5;
F = 0.5;
for (int x = 0; x < pear_total; x++) {
pearA[x] = 0.0;
pearB[x] = 0.0;
pearC[x] = 0.0;
pearD[x] = 0.0;
pearE[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
}
PearEQ::~PearEQ() {}
VstInt32 PearEQ::getVendorVersion () {return 1000;}
void PearEQ::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void PearEQ::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 PearEQ::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
chunkData[3] = D;
chunkData[4] = E;
chunkData[5] = F;
/* 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 PearEQ::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
D = pinParameter(chunkData[3]);
E = pinParameter(chunkData[4]);
F = pinParameter(chunkData[5]);
/* 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 PearEQ::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
case kParamD: D = value; break;
case kParamE: E = value; break;
case kParamF: F = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float PearEQ::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
case kParamD: return D; break;
case kParamE: return E; break;
case kParamF: return F; 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 PearEQ::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "High", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "HMid", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Mid", kVstMaxParamStrLen); break;
case kParamD: vst_strncpy (text, "LMid", kVstMaxParamStrLen); break;
case kParamE: vst_strncpy (text, "Bass", kVstMaxParamStrLen); break;
case kParamF: vst_strncpy (text, "Sub", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void PearEQ::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;
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
case kParamE: float2string (E, text, kVstMaxParamStrLen); break;
case kParamF: float2string (F, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void PearEQ::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;
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamE: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 PearEQ::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool PearEQ::getEffectName(char* name) {
vst_strncpy(name, "PearEQ", kVstMaxProductStrLen); return true;
}
VstPlugCategory PearEQ::getPlugCategory() {return kPlugCategEffect;}
bool PearEQ::getProductString(char* text) {
vst_strncpy (text, "airwindows PearEQ", kVstMaxProductStrLen); return true;
}
bool PearEQ::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,126 @@
/* ========================================
* PearEQ - PearEQ.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearEQ_H
#define __PearEQ_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kParamB =1,
kParamC =2,
kParamD =3,
kParamE =4,
kParamF =5,
kNumParameters = 6
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'peaq'; //Change this to what the AU identity is!
class PearEQ :
public AudioEffectX
{
public:
PearEQ(audioMasterCallback audioMaster);
~PearEQ();
virtual bool getEffectName(char* name); // The plug-in name
virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
virtual bool getVendorString(char* text); // Vendor info
virtual VstInt32 getVendorVersion(); // Version number
virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
virtual void getProgramName(char *name); // read the name from the host
virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
virtual VstInt32 getChunk (void** data, bool isPreset);
virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
virtual VstInt32 canDo(char *text);
private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
float A;
float B;
float C;
float D;
float E;
float F;
enum {
prevSampL1,
prevSlewL1,
prevSampR1,
prevSlewR1,
prevSampL2,
prevSlewL2,
prevSampR2,
prevSlewR2,
prevSampL3,
prevSlewL3,
prevSampR3,
prevSlewR3,
prevSampL4,
prevSlewL4,
prevSampR4,
prevSlewR4,
prevSampL5,
prevSlewL5,
prevSampR5,
prevSlewR5,
prevSampL6,
prevSlewL6,
prevSampR6,
prevSlewR6,
prevSampL7,
prevSlewL7,
prevSampR7,
prevSlewR7,
prevSampL8,
prevSlewL8,
prevSampR8,
prevSlewR8,
prevSampL9,
prevSlewL9,
prevSampR9,
prevSlewR9,
pear_max,
figL,
figR,
gndL,
gndR,
slew,
freq,
levl,
pear_total
}; //new pear filter
double pearA[pear_total];
double pearB[pear_total];
double pearC[pear_total];
double pearD[pear_total];
double pearE[pear_total];
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,220 @@
/* ========================================
* PearEQ - PearEQ.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearEQ_H
#include "PearEQ.h"
#endif
void PearEQ::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();
double topLevl = sqrt(A+0.5);
pearA[levl] = sqrt(B+0.5);
pearB[levl] = sqrt(C+0.5);
pearC[levl] = sqrt(D+0.5);
pearD[levl] = sqrt(E+0.5);
pearE[levl] = sqrt(F+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+1.9);
pearC[freq] = pow(0.564,freqFactor+4.1);
pearD[freq] = pow(0.564,freqFactor+6.2);
pearE[freq] = pow(0.564,freqFactor+7.7);
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;
for (int x = 0; x < pear_max; x += 4) {
//begin Pear filter stages
pearA[figL] = inputSampleL; pearA[figR] = inputSampleR;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
pearA[slew] = ((pearA[figR]-pearA[x+2])+pearA[x+3])*pearA[freq]*0.5;
pearA[x+2] = pearA[figR] = (pearA[freq]*pearA[figR])+((1.0-pearA[freq])*(pearA[x+2]+pearA[x+3]));
pearA[x+3] = pearA[slew];
inputSampleL -= pearA[figL]; inputSampleR -= pearA[figR];
pearB[figL] = pearA[figL]; pearB[figR] = pearA[figR];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearB[slew] = ((pearB[figR]-pearB[x+2])+pearB[x+3])*pearB[freq]*0.5;
pearB[x+2] = pearB[figR] = (pearB[freq]*pearA[figR])+((1.0-pearB[freq])*(pearB[x+2]+pearB[x+3]));
pearB[x+3] = pearB[slew];
pearA[figL] -= pearB[figL]; pearA[figR] -= pearB[figR];
pearC[figL] = pearB[figL]; pearC[figR] = pearB[figR];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearC[slew] = ((pearC[figR]-pearC[x+2])+pearC[x+3])*pearC[freq]*0.5;
pearC[x+2] = pearC[figR] = (pearC[freq]*pearB[figR])+((1.0-pearC[freq])*(pearC[x+2]+pearC[x+3]));
pearC[x+3] = pearC[slew];
pearB[figL] -= pearC[figL]; pearB[figR] -= pearC[figR];
pearD[figL] = pearC[figL]; pearD[figR] = pearC[figR];
pearD[slew] = ((pearD[figL]-pearD[x])+pearD[x+1])*pearD[freq]*0.5;
pearD[x] = pearD[figL] = (pearD[freq]*pearC[figL])+((1.0-pearD[freq])*(pearD[x]+pearD[x+1]));
pearD[x+1] = pearD[slew];
pearD[slew] = ((pearD[figR]-pearD[x+2])+pearD[x+3])*pearD[freq]*0.5;
pearD[x+2] = pearD[figR] = (pearD[freq]*pearC[figR])+((1.0-pearD[freq])*(pearD[x+2]+pearD[x+3]));
pearD[x+3] = pearD[slew];
pearC[figL] -= pearD[figL]; pearC[figR] -= pearD[figR];
pearE[figL] = pearD[figL]; pearE[figR] = pearD[figR];
pearE[slew] = ((pearE[figL]-pearE[x])+pearE[x+1])*pearE[freq]*0.5;
pearE[x] = pearE[figL] = (pearE[freq]*pearD[figL])+((1.0-pearE[freq])*(pearE[x]+pearE[x+1]));
pearE[x+1] = pearE[slew];
pearE[slew] = ((pearE[figR]-pearE[x+2])+pearE[x+3])*pearE[freq]*0.5;
pearE[x+2] = pearE[figR] = (pearE[freq]*pearD[figR])+((1.0-pearE[freq])*(pearE[x+2]+pearE[x+3]));
pearE[x+3] = pearE[slew];
pearD[figL] -= pearE[figL]; pearD[figR] -= pearE[figR];
inputSampleL *= topLevl; inputSampleR *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]); inputSampleR += (pearA[figR]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]); inputSampleR += (pearB[figR]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]); inputSampleR += (pearC[figR]*pearC[levl]);
inputSampleL += (pearD[figL]*pearD[levl]); inputSampleR += (pearD[figR]*pearD[levl]);
inputSampleL += (pearE[figL]*pearE[levl]); inputSampleR += (pearE[figR]*pearE[levl]);
}
//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 PearEQ::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();
double topLevl = sqrt(A+0.5);
pearA[levl] = sqrt(B+0.5);
pearB[levl] = sqrt(C+0.5);
pearC[levl] = sqrt(D+0.5);
pearD[levl] = sqrt(E+0.5);
pearE[levl] = sqrt(F+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+1.9);
pearC[freq] = pow(0.564,freqFactor+4.1);
pearD[freq] = pow(0.564,freqFactor+6.2);
pearE[freq] = pow(0.564,freqFactor+7.7);
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;
for (int x = 0; x < pear_max; x += 4) {
//begin Pear filter stages
pearA[figL] = inputSampleL; pearA[figR] = inputSampleR;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
pearA[slew] = ((pearA[figR]-pearA[x+2])+pearA[x+3])*pearA[freq]*0.5;
pearA[x+2] = pearA[figR] = (pearA[freq]*pearA[figR])+((1.0-pearA[freq])*(pearA[x+2]+pearA[x+3]));
pearA[x+3] = pearA[slew];
inputSampleL -= pearA[figL]; inputSampleR -= pearA[figR];
pearB[figL] = pearA[figL]; pearB[figR] = pearA[figR];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearB[slew] = ((pearB[figR]-pearB[x+2])+pearB[x+3])*pearB[freq]*0.5;
pearB[x+2] = pearB[figR] = (pearB[freq]*pearA[figR])+((1.0-pearB[freq])*(pearB[x+2]+pearB[x+3]));
pearB[x+3] = pearB[slew];
pearA[figL] -= pearB[figL]; pearA[figR] -= pearB[figR];
pearC[figL] = pearB[figL]; pearC[figR] = pearB[figR];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearC[slew] = ((pearC[figR]-pearC[x+2])+pearC[x+3])*pearC[freq]*0.5;
pearC[x+2] = pearC[figR] = (pearC[freq]*pearB[figR])+((1.0-pearC[freq])*(pearC[x+2]+pearC[x+3]));
pearC[x+3] = pearC[slew];
pearB[figL] -= pearC[figL]; pearB[figR] -= pearC[figR];
pearD[figL] = pearC[figL]; pearD[figR] = pearC[figR];
pearD[slew] = ((pearD[figL]-pearD[x])+pearD[x+1])*pearD[freq]*0.5;
pearD[x] = pearD[figL] = (pearD[freq]*pearC[figL])+((1.0-pearD[freq])*(pearD[x]+pearD[x+1]));
pearD[x+1] = pearD[slew];
pearD[slew] = ((pearD[figR]-pearD[x+2])+pearD[x+3])*pearD[freq]*0.5;
pearD[x+2] = pearD[figR] = (pearD[freq]*pearC[figR])+((1.0-pearD[freq])*(pearD[x+2]+pearD[x+3]));
pearD[x+3] = pearD[slew];
pearC[figL] -= pearD[figL]; pearC[figR] -= pearD[figR];
pearE[figL] = pearD[figL]; pearE[figR] = pearD[figR];
pearE[slew] = ((pearE[figL]-pearE[x])+pearE[x+1])*pearE[freq]*0.5;
pearE[x] = pearE[figL] = (pearE[freq]*pearD[figL])+((1.0-pearE[freq])*(pearE[x]+pearE[x+1]));
pearE[x+1] = pearE[slew];
pearE[slew] = ((pearE[figR]-pearE[x+2])+pearE[x+3])*pearE[freq]*0.5;
pearE[x+2] = pearE[figR] = (pearE[freq]*pearD[figR])+((1.0-pearE[freq])*(pearE[x+2]+pearE[x+3]));
pearE[x+3] = pearE[slew];
pearD[figL] -= pearE[figL]; pearD[figR] -= pearE[figR];
inputSampleL *= topLevl; inputSampleR *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]); inputSampleR += (pearA[figR]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]); inputSampleR += (pearB[figR]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]); inputSampleR += (pearC[figR]*pearC[levl]);
inputSampleL += (pearD[figL]*pearD[levl]); inputSampleR += (pearD[figR]*pearD[levl]);
inputSampleL += (pearE[figL]*pearE[levl]); inputSampleR += (pearE[figR]*pearE[levl]);
}
//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,150 @@
/* ========================================
* PearLiteEQ - PearLiteEQ.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearLiteEQ_H
#include "PearLiteEQ.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new PearLiteEQ(audioMaster);}
PearLiteEQ::PearLiteEQ(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
B = 0.5;
C = 0.5;
D = 0.5;
for (int x = 0; x < pear_total; x++) {
pearA[x] = 0.0;
pearB[x] = 0.0;
pearC[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
}
PearLiteEQ::~PearLiteEQ() {}
VstInt32 PearLiteEQ::getVendorVersion () {return 1000;}
void PearLiteEQ::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void PearLiteEQ::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 PearLiteEQ::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
chunkData[2] = C;
chunkData[3] = D;
/* 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 PearLiteEQ::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
C = pinParameter(chunkData[2]);
D = pinParameter(chunkData[3]);
/* 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 PearLiteEQ::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
case kParamC: C = value; break;
case kParamD: D = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float PearLiteEQ::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; break;
case kParamC: return C; break;
case kParamD: return D; 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 PearLiteEQ::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "High", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "HMid", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "LMid", kVstMaxParamStrLen); break;
case kParamD: vst_strncpy (text, "Bass", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void PearLiteEQ::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;
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void PearLiteEQ::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;
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 PearLiteEQ::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool PearLiteEQ::getEffectName(char* name) {
vst_strncpy(name, "PearLiteEQ", kVstMaxProductStrLen); return true;
}
VstPlugCategory PearLiteEQ::getPlugCategory() {return kPlugCategEffect;}
bool PearLiteEQ::getProductString(char* text) {
vst_strncpy (text, "airwindows PearLiteEQ", kVstMaxProductStrLen); return true;
}
bool PearLiteEQ::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,116 @@
/* ========================================
* PearLiteEQ - PearLiteEQ.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearLiteEQ_H
#define __PearLiteEQ_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kParamB =1,
kParamC =2,
kParamD =3,
kNumParameters = 4
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'peap'; //Change this to what the AU identity is!
class PearLiteEQ :
public AudioEffectX
{
public:
PearLiteEQ(audioMasterCallback audioMaster);
~PearLiteEQ();
virtual bool getEffectName(char* name); // The plug-in name
virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
virtual bool getVendorString(char* text); // Vendor info
virtual VstInt32 getVendorVersion(); // Version number
virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
virtual void getProgramName(char *name); // read the name from the host
virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
virtual VstInt32 getChunk (void** data, bool isPreset);
virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
virtual VstInt32 canDo(char *text);
private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
float A;
float B;
float C;
float D;
enum {
prevSampL1,
prevSlewL1,
prevSampR1,
prevSlewR1,
prevSampL2,
prevSlewL2,
prevSampR2,
prevSlewR2,
prevSampL3,
prevSlewL3,
prevSampR3,
prevSlewR3,
prevSampL4,
prevSlewL4,
prevSampR4,
prevSlewR4,
prevSampL5,
prevSlewL5,
prevSampR5,
prevSlewR5,
prevSampL6,
prevSlewL6,
prevSampR6,
prevSlewR6,
prevSampL7,
prevSlewL7,
prevSampR7,
prevSlewR7,
prevSampL8,
prevSlewL8,
prevSampR8,
prevSlewR8,
pear_max,
figL,
figR,
gndL,
gndR,
slew,
freq,
levl,
pear_total
}; //new pear filter
double pearA[pear_total];
double pearB[pear_total];
double pearC[pear_total];
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,172 @@
/* ========================================
* PearLiteEQ - PearLiteEQ.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __PearLiteEQ_H
#include "PearLiteEQ.h"
#endif
void PearLiteEQ::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();
double topLevl = sqrt(A+0.5);
pearA[levl] = sqrt(B+0.5);
pearB[levl] = sqrt(C+0.5);
pearC[levl] = sqrt(D+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+4.1);
pearC[freq] = pow(0.564,freqFactor+7.1);
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;
for (int x = 0; x < pear_max; x += 4) {
//begin Pear filter stages
pearA[figL] = inputSampleL; pearA[figR] = inputSampleR;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
pearA[slew] = ((pearA[figR]-pearA[x+2])+pearA[x+3])*pearA[freq]*0.5;
pearA[x+2] = pearA[figR] = (pearA[freq]*pearA[figR])+((1.0-pearA[freq])*(pearA[x+2]+pearA[x+3]));
pearA[x+3] = pearA[slew];
inputSampleL -= pearA[figL]; inputSampleR -= pearA[figR];
pearB[figL] = pearA[figL]; pearB[figR] = pearA[figR];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearB[slew] = ((pearB[figR]-pearB[x+2])+pearB[x+3])*pearB[freq]*0.5;
pearB[x+2] = pearB[figR] = (pearB[freq]*pearA[figR])+((1.0-pearB[freq])*(pearB[x+2]+pearB[x+3]));
pearB[x+3] = pearB[slew];
pearA[figL] -= pearB[figL]; pearA[figR] -= pearB[figR];
pearC[figL] = pearB[figL]; pearC[figR] = pearB[figR];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearC[slew] = ((pearC[figR]-pearC[x+2])+pearC[x+3])*pearC[freq]*0.5;
pearC[x+2] = pearC[figR] = (pearC[freq]*pearB[figR])+((1.0-pearC[freq])*(pearC[x+2]+pearC[x+3]));
pearC[x+3] = pearC[slew];
pearB[figL] -= pearC[figL]; pearB[figR] -= pearC[figR];
inputSampleL *= topLevl; inputSampleR *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]); inputSampleR += (pearA[figR]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]); inputSampleR += (pearB[figR]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]); inputSampleR += (pearC[figR]*pearC[levl]);
}
//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 PearLiteEQ::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();
double topLevl = sqrt(A+0.5);
pearA[levl] = sqrt(B+0.5);
pearB[levl] = sqrt(C+0.5);
pearC[levl] = sqrt(D+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+4.1);
pearC[freq] = pow(0.564,freqFactor+7.1);
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;
for (int x = 0; x < pear_max; x += 4) {
//begin Pear filter stages
pearA[figL] = inputSampleL; pearA[figR] = inputSampleR;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
pearA[slew] = ((pearA[figR]-pearA[x+2])+pearA[x+3])*pearA[freq]*0.5;
pearA[x+2] = pearA[figR] = (pearA[freq]*pearA[figR])+((1.0-pearA[freq])*(pearA[x+2]+pearA[x+3]));
pearA[x+3] = pearA[slew];
inputSampleL -= pearA[figL]; inputSampleR -= pearA[figR];
pearB[figL] = pearA[figL]; pearB[figR] = pearA[figR];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearB[slew] = ((pearB[figR]-pearB[x+2])+pearB[x+3])*pearB[freq]*0.5;
pearB[x+2] = pearB[figR] = (pearB[freq]*pearA[figR])+((1.0-pearB[freq])*(pearB[x+2]+pearB[x+3]));
pearB[x+3] = pearB[slew];
pearA[figL] -= pearB[figL]; pearA[figR] -= pearB[figR];
pearC[figL] = pearB[figL]; pearC[figR] = pearB[figR];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearC[slew] = ((pearC[figR]-pearC[x+2])+pearC[x+3])*pearC[freq]*0.5;
pearC[x+2] = pearC[figR] = (pearC[freq]*pearB[figR])+((1.0-pearC[freq])*(pearC[x+2]+pearC[x+3]));
pearC[x+3] = pearC[slew];
pearB[figL] -= pearC[figL]; pearB[figR] -= pearC[figR];
inputSampleL *= topLevl; inputSampleR *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]); inputSampleR += (pearA[figR]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]); inputSampleR += (pearB[figR]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]); inputSampleR += (pearC[figR]*pearC[levl]);
}
//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,133 @@
/* ========================================
* Slew4 - Slew4.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Slew4_H
#include "Slew4.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Slew4(audioMaster);}
Slew4::Slew4(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
for(int x = 0; x < 23; x++) {
for (int y = 0; y < 11; y++) {slewL[x][y] = 0.0;slewR[x][y] = 0.0;}
}
sustainSlewL = 0.0;
secondSampleL = 0.0;
thirdSampleL = 0.0;
sustainSlewR = 0.0;
secondSampleR = 0.0;
thirdSampleR = 0.0;
slewCount = 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
}
Slew4::~Slew4() {}
VstInt32 Slew4::getVendorVersion () {return 1000;}
void Slew4::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Slew4::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 Slew4::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
/* 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 Slew4::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
/* 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 Slew4::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Slew4::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; 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 Slew4::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Compres", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Slew4::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Slew4::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Slew4::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Slew4::getEffectName(char* name) {
vst_strncpy(name, "Slew4", kVstMaxProductStrLen); return true;
}
VstPlugCategory Slew4::getPlugCategory() {return kPlugCategEffect;}
bool Slew4::getProductString(char* text) {
vst_strncpy (text, "airwindows Slew4", kVstMaxProductStrLen); return true;
}
bool Slew4::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,74 @@
/* ========================================
* Slew4 - Slew4.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Slew4_H
#define __Slew4_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kNumParameters = 1
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'slw4'; //Change this to what the AU identity is!
class Slew4 :
public AudioEffectX
{
public:
Slew4(audioMasterCallback audioMaster);
~Slew4();
virtual bool getEffectName(char* name); // The plug-in name
virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
virtual bool getVendorString(char* text); // Vendor info
virtual VstInt32 getVendorVersion(); // Version number
virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
virtual void getProgramName(char *name); // read the name from the host
virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
virtual VstInt32 getChunk (void** data, bool isPreset);
virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
virtual VstInt32 canDo(char *text);
private:
char _programName[kVstMaxProgNameLen + 1];
std::set< std::string > _canDo;
float A;
double slewL[24][12];
double sustainSlewL;
double secondSampleL;
double thirdSampleL;
double slewR[24][12];
double sustainSlewR;
double secondSampleR;
double thirdSampleR;
int slewCount;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,722 @@
/* ========================================
* Slew4 - Slew4.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Slew4_H
#include "Slew4.h"
#endif
void Slew4::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();
double compresity = pow(A*0.95,2.0)*8.0*overallscale;
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;
double drySampleL = inputSampleL;
double drySampleR = inputSampleR;
//begin L
sustainSlewL += fabs((inputSampleL-secondSampleL)-(secondSampleL-thirdSampleL));
sustainSlewL *= 0.9; inputSampleL = thirdSampleL; //two sample lookahead
double depthAmt = fmin(sin(fmin(sustainSlewL,M_PI_2))*compresity,9.0);
int z = floor(depthAmt);
double depthTrim = depthAmt - (double)z;
for (int y = 0; y < z; y++) {
switch (y) {
case 0:
slewL[slewCount%2][y] = inputSampleL;
inputSampleL = (slewL[0][y] + slewL[1][y]) * 0.5;
break;
case 1:
slewL[slewCount%4][y] = inputSampleL;
inputSampleL = (slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]) * 0.25;
break;
case 2:
slewL[slewCount%6][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y];
inputSampleL += slewL[3][y]+slewL[4][y]+slewL[5][y];
inputSampleL *= 0.1666666666;
break;
case 3:
slewL[slewCount%8][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y];
inputSampleL += slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y];
inputSampleL *= 0.125;
break;
case 4:
slewL[slewCount%10][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y];
inputSampleL += slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y];
inputSampleL *= 0.1;
break;
case 5:
slewL[slewCount%12][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y];
inputSampleL += slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y];
inputSampleL *= 0.0833333333;
break;
case 6:
slewL[slewCount%14][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y];
inputSampleL += slewL[7][y]+slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y];
inputSampleL *= 0.0714285;
break;
case 7:
slewL[slewCount%16][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y];
inputSampleL += slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y];
inputSampleL *= 0.0625;
break;
case 8:
slewL[slewCount%18][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y];
inputSampleL += slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y]+slewL[16][y]+slewL[17][y];
inputSampleL *= 0.05555555;
break;
case 9:
slewL[slewCount%20][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y];
inputSampleL += slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y]+slewL[16][y]+slewL[17][y]+slewL[18][y]+slewL[19][y];
inputSampleL *= 0.05;
break;
} //generate sets of rectangular window averages to layer
} //all of which have a 'node' (silence) at Nyquist to combine
double remainderSampleL = 0.0;
switch (z) {
case 0:
slewL[slewCount%2][z] = inputSampleL;
remainderSampleL = (slewL[0][z] + slewL[1][z]) * 0.5;
break;
case 1:
slewL[slewCount%4][z] = inputSampleL;
remainderSampleL = (slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]) * 0.25;
break;
case 2:
slewL[slewCount%6][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z];
remainderSampleL += slewL[3][z]+slewL[4][z]+slewL[5][z];
remainderSampleL *= 0.1666666666;
break;
case 3:
slewL[slewCount%8][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z];
remainderSampleL += slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z];
remainderSampleL *= 0.125;
break;
case 4:
slewL[slewCount%10][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z];
remainderSampleL += slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z];
remainderSampleL *= 0.1;
break;
case 5:
slewL[slewCount%12][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z];
remainderSampleL += slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z];
remainderSampleL *= 0.0833333333;
break;
case 6:
slewL[slewCount%14][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z];
remainderSampleL += slewL[7][z]+slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z];
remainderSampleL *= 0.0714285;
break;
case 7:
slewL[slewCount%16][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z];
remainderSampleL += slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z];
remainderSampleL *= 0.0625;
break;
case 8:
slewL[slewCount%18][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z];
remainderSampleL += slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z]+slewL[16][z]+slewL[17][z];
remainderSampleL *= 0.0555555;
break;
case 9:
slewL[slewCount%20][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z];
remainderSampleL += slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z]+slewL[16][z]+slewL[17][z]+slewL[18][z]+slewL[19][z];
remainderSampleL *= 0.05;
break;
} //generate the final fractional amount
for (int y = z+1; y < 9; y++) {
switch (y) {
case 0:
slewL[slewCount%2][y] = inputSampleL; break;
case 1:
slewL[slewCount%4][y] = inputSampleL; break;
case 2:
slewL[slewCount%6][y] = inputSampleL; break;
case 3:
slewL[slewCount%8][y] = inputSampleL; break;
case 4:
slewL[slewCount%10][y] = inputSampleL; break;
case 5:
slewL[slewCount%12][y] = inputSampleL; break;
case 6:
slewL[slewCount%14][y] = inputSampleL; break;
case 7:
slewL[slewCount%16][y] = inputSampleL; break;
case 8:
slewL[slewCount%18][y] = inputSampleL; break;
case 9:
slewL[slewCount%20][y] = inputSampleL; break;
}
} //clean up the little buffers when not being actively used
//end L
//begin R
sustainSlewR += fabs((inputSampleR-secondSampleR)-(secondSampleR-thirdSampleR));
sustainSlewR *= 0.9; inputSampleR = thirdSampleR; //two sample lookahead
depthAmt = fmin(sin(fmin(sustainSlewR,M_PI_2))*compresity,9.0);
z = floor(depthAmt);
depthTrim = depthAmt - (double)z;
for (int y = 0; y < z; y++) {
switch (y) {
case 0:
slewR[slewCount%2][y] = inputSampleR;
inputSampleR = (slewR[0][y] + slewR[1][y]) * 0.5;
break;
case 1:
slewR[slewCount%4][y] = inputSampleR;
inputSampleR = (slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]) * 0.25;
break;
case 2:
slewR[slewCount%6][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y];
inputSampleR += slewR[3][y]+slewR[4][y]+slewR[5][y];
inputSampleR *= 0.1666666666;
break;
case 3:
slewR[slewCount%8][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y];
inputSampleR += slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y];
inputSampleR *= 0.125;
break;
case 4:
slewR[slewCount%10][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y];
inputSampleR += slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y];
inputSampleR *= 0.1;
break;
case 5:
slewR[slewCount%12][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y];
inputSampleR += slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y];
inputSampleR *= 0.0833333333;
break;
case 6:
slewR[slewCount%14][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y];
inputSampleR += slewR[7][y]+slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y];
inputSampleR *= 0.0714285;
break;
case 7:
slewR[slewCount%16][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y];
inputSampleR += slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y];
inputSampleR *= 0.0625;
break;
case 8:
slewR[slewCount%18][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y];
inputSampleR += slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y]+slewR[16][y]+slewR[17][y];
inputSampleR *= 0.05555555;
break;
case 9:
slewR[slewCount%20][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y];
inputSampleR += slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y]+slewR[16][y]+slewR[17][y]+slewR[18][y]+slewR[19][y];
inputSampleR *= 0.05;
break;
} //generate sets of rectangular window averages to layer
} //all of which have a 'node' (silence) at Nyquist to combine
double remainderSampleR = 0.0;
switch (z) {
case 0:
slewR[slewCount%2][z] = inputSampleR;
remainderSampleR = (slewR[0][z] + slewR[1][z]) * 0.5;
break;
case 1:
slewR[slewCount%4][z] = inputSampleR;
remainderSampleR = (slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]) * 0.25;
break;
case 2:
slewR[slewCount%6][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z];
remainderSampleR += slewR[3][z]+slewR[4][z]+slewR[5][z];
remainderSampleR *= 0.1666666666;
break;
case 3:
slewR[slewCount%8][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z];
remainderSampleR += slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z];
remainderSampleR *= 0.125;
break;
case 4:
slewR[slewCount%10][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z];
remainderSampleR += slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z];
remainderSampleR *= 0.1;
break;
case 5:
slewR[slewCount%12][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z];
remainderSampleR += slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z];
remainderSampleR *= 0.0833333333;
break;
case 6:
slewR[slewCount%14][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z];
remainderSampleR += slewR[7][z]+slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z];
remainderSampleR *= 0.0714285;
break;
case 7:
slewR[slewCount%16][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z];
remainderSampleR += slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z];
remainderSampleR *= 0.0625;
break;
case 8:
slewR[slewCount%18][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z];
remainderSampleR += slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z]+slewR[16][z]+slewR[17][z];
remainderSampleR *= 0.0555555;
break;
case 9:
slewR[slewCount%20][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z];
remainderSampleR += slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z]+slewR[16][z]+slewR[17][z]+slewR[18][z]+slewR[19][z];
remainderSampleR *= 0.05;
break;
} //generate the final fractional amount
for (int y = z+1; y < 9; y++) {
switch (y) {
case 0:
slewR[slewCount%2][y] = inputSampleR; break;
case 1:
slewR[slewCount%4][y] = inputSampleR; break;
case 2:
slewR[slewCount%6][y] = inputSampleR; break;
case 3:
slewR[slewCount%8][y] = inputSampleR; break;
case 4:
slewR[slewCount%10][y] = inputSampleR; break;
case 5:
slewR[slewCount%12][y] = inputSampleR; break;
case 6:
slewR[slewCount%14][y] = inputSampleR; break;
case 7:
slewR[slewCount%16][y] = inputSampleR; break;
case 8:
slewR[slewCount%18][y] = inputSampleR; break;
case 9:
slewR[slewCount%20][y] = inputSampleR; break;
}
} //clean up the little buffers when not being actively used
//end R
slewCount++; if (slewCount > 619315200) slewCount = 0;
thirdSampleL = secondSampleL; secondSampleL = drySampleL;
thirdSampleR = secondSampleR; secondSampleR = drySampleR;
inputSampleL = (inputSampleL*(1.0-depthTrim))+(remainderSampleL*depthTrim);
inputSampleR = (inputSampleR*(1.0-depthTrim))+(remainderSampleR*depthTrim);
//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 Slew4::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();
double compresity = pow(A*0.95,2.0)*8.0*overallscale;
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;
double drySampleL = inputSampleL;
double drySampleR = inputSampleR;
//begin L
sustainSlewL += fabs((inputSampleL-secondSampleL)-(secondSampleL-thirdSampleL));
sustainSlewL *= 0.9; inputSampleL = thirdSampleL; //two sample lookahead
double depthAmt = fmin(sin(fmin(sustainSlewL,M_PI_2))*compresity,9.0);
int z = floor(depthAmt);
double depthTrim = depthAmt - (double)z;
for (int y = 0; y < z; y++) {
switch (y) {
case 0:
slewL[slewCount%2][y] = inputSampleL;
inputSampleL = (slewL[0][y] + slewL[1][y]) * 0.5;
break;
case 1:
slewL[slewCount%4][y] = inputSampleL;
inputSampleL = (slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]) * 0.25;
break;
case 2:
slewL[slewCount%6][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y];
inputSampleL += slewL[3][y]+slewL[4][y]+slewL[5][y];
inputSampleL *= 0.1666666666;
break;
case 3:
slewL[slewCount%8][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y];
inputSampleL += slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y];
inputSampleL *= 0.125;
break;
case 4:
slewL[slewCount%10][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y];
inputSampleL += slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y];
inputSampleL *= 0.1;
break;
case 5:
slewL[slewCount%12][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y];
inputSampleL += slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y];
inputSampleL *= 0.0833333333;
break;
case 6:
slewL[slewCount%14][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y];
inputSampleL += slewL[7][y]+slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y];
inputSampleL *= 0.0714285;
break;
case 7:
slewL[slewCount%16][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y];
inputSampleL += slewL[8][y]+slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y];
inputSampleL *= 0.0625;
break;
case 8:
slewL[slewCount%18][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y];
inputSampleL += slewL[9][y]+slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y]+slewL[16][y]+slewL[17][y];
inputSampleL *= 0.05555555;
break;
case 9:
slewL[slewCount%20][y] = inputSampleL;
inputSampleL = slewL[0][y]+slewL[1][y]+slewL[2][y]+slewL[3][y]+slewL[4][y]+slewL[5][y]+slewL[6][y]+slewL[7][y]+slewL[8][y]+slewL[9][y];
inputSampleL += slewL[10][y]+slewL[11][y]+slewL[12][y]+slewL[13][y]+slewL[14][y]+slewL[15][y]+slewL[16][y]+slewL[17][y]+slewL[18][y]+slewL[19][y];
inputSampleL *= 0.05;
break;
} //generate sets of rectangular window averages to layer
} //all of which have a 'node' (silence) at Nyquist to combine
double remainderSampleL = 0.0;
switch (z) {
case 0:
slewL[slewCount%2][z] = inputSampleL;
remainderSampleL = (slewL[0][z] + slewL[1][z]) * 0.5;
break;
case 1:
slewL[slewCount%4][z] = inputSampleL;
remainderSampleL = (slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]) * 0.25;
break;
case 2:
slewL[slewCount%6][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z];
remainderSampleL += slewL[3][z]+slewL[4][z]+slewL[5][z];
remainderSampleL *= 0.1666666666;
break;
case 3:
slewL[slewCount%8][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z];
remainderSampleL += slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z];
remainderSampleL *= 0.125;
break;
case 4:
slewL[slewCount%10][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z];
remainderSampleL += slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z];
remainderSampleL *= 0.1;
break;
case 5:
slewL[slewCount%12][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z];
remainderSampleL += slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z];
remainderSampleL *= 0.0833333333;
break;
case 6:
slewL[slewCount%14][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z];
remainderSampleL += slewL[7][z]+slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z];
remainderSampleL *= 0.0714285;
break;
case 7:
slewL[slewCount%16][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z];
remainderSampleL += slewL[8][z]+slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z];
remainderSampleL *= 0.0625;
break;
case 8:
slewL[slewCount%18][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z];
remainderSampleL += slewL[9][z]+slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z]+slewL[16][z]+slewL[17][z];
remainderSampleL *= 0.0555555;
break;
case 9:
slewL[slewCount%20][z] = inputSampleL;
remainderSampleL = slewL[0][z]+slewL[1][z]+slewL[2][z]+slewL[3][z]+slewL[4][z]+slewL[5][z]+slewL[6][z]+slewL[7][z]+slewL[8][z]+slewL[9][z];
remainderSampleL += slewL[10][z]+slewL[11][z]+slewL[12][z]+slewL[13][z]+slewL[14][z]+slewL[15][z]+slewL[16][z]+slewL[17][z]+slewL[18][z]+slewL[19][z];
remainderSampleL *= 0.05;
break;
} //generate the final fractional amount
for (int y = z+1; y < 9; y++) {
switch (y) {
case 0:
slewL[slewCount%2][y] = inputSampleL; break;
case 1:
slewL[slewCount%4][y] = inputSampleL; break;
case 2:
slewL[slewCount%6][y] = inputSampleL; break;
case 3:
slewL[slewCount%8][y] = inputSampleL; break;
case 4:
slewL[slewCount%10][y] = inputSampleL; break;
case 5:
slewL[slewCount%12][y] = inputSampleL; break;
case 6:
slewL[slewCount%14][y] = inputSampleL; break;
case 7:
slewL[slewCount%16][y] = inputSampleL; break;
case 8:
slewL[slewCount%18][y] = inputSampleL; break;
case 9:
slewL[slewCount%20][y] = inputSampleL; break;
}
} //clean up the little buffers when not being actively used
//end L
//begin R
sustainSlewR += fabs((inputSampleR-secondSampleR)-(secondSampleR-thirdSampleR));
sustainSlewR *= 0.9; inputSampleR = thirdSampleR; //two sample lookahead
depthAmt = fmin(sin(fmin(sustainSlewR,M_PI_2))*compresity,9.0);
z = floor(depthAmt);
depthTrim = depthAmt - (double)z;
for (int y = 0; y < z; y++) {
switch (y) {
case 0:
slewR[slewCount%2][y] = inputSampleR;
inputSampleR = (slewR[0][y] + slewR[1][y]) * 0.5;
break;
case 1:
slewR[slewCount%4][y] = inputSampleR;
inputSampleR = (slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]) * 0.25;
break;
case 2:
slewR[slewCount%6][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y];
inputSampleR += slewR[3][y]+slewR[4][y]+slewR[5][y];
inputSampleR *= 0.1666666666;
break;
case 3:
slewR[slewCount%8][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y];
inputSampleR += slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y];
inputSampleR *= 0.125;
break;
case 4:
slewR[slewCount%10][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y];
inputSampleR += slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y];
inputSampleR *= 0.1;
break;
case 5:
slewR[slewCount%12][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y];
inputSampleR += slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y];
inputSampleR *= 0.0833333333;
break;
case 6:
slewR[slewCount%14][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y];
inputSampleR += slewR[7][y]+slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y];
inputSampleR *= 0.0714285;
break;
case 7:
slewR[slewCount%16][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y];
inputSampleR += slewR[8][y]+slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y];
inputSampleR *= 0.0625;
break;
case 8:
slewR[slewCount%18][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y];
inputSampleR += slewR[9][y]+slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y]+slewR[16][y]+slewR[17][y];
inputSampleR *= 0.05555555;
break;
case 9:
slewR[slewCount%20][y] = inputSampleR;
inputSampleR = slewR[0][y]+slewR[1][y]+slewR[2][y]+slewR[3][y]+slewR[4][y]+slewR[5][y]+slewR[6][y]+slewR[7][y]+slewR[8][y]+slewR[9][y];
inputSampleR += slewR[10][y]+slewR[11][y]+slewR[12][y]+slewR[13][y]+slewR[14][y]+slewR[15][y]+slewR[16][y]+slewR[17][y]+slewR[18][y]+slewR[19][y];
inputSampleR *= 0.05;
break;
} //generate sets of rectangular window averages to layer
} //all of which have a 'node' (silence) at Nyquist to combine
double remainderSampleR = 0.0;
switch (z) {
case 0:
slewR[slewCount%2][z] = inputSampleR;
remainderSampleR = (slewR[0][z] + slewR[1][z]) * 0.5;
break;
case 1:
slewR[slewCount%4][z] = inputSampleR;
remainderSampleR = (slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]) * 0.25;
break;
case 2:
slewR[slewCount%6][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z];
remainderSampleR += slewR[3][z]+slewR[4][z]+slewR[5][z];
remainderSampleR *= 0.1666666666;
break;
case 3:
slewR[slewCount%8][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z];
remainderSampleR += slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z];
remainderSampleR *= 0.125;
break;
case 4:
slewR[slewCount%10][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z];
remainderSampleR += slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z];
remainderSampleR *= 0.1;
break;
case 5:
slewR[slewCount%12][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z];
remainderSampleR += slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z];
remainderSampleR *= 0.0833333333;
break;
case 6:
slewR[slewCount%14][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z];
remainderSampleR += slewR[7][z]+slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z];
remainderSampleR *= 0.0714285;
break;
case 7:
slewR[slewCount%16][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z];
remainderSampleR += slewR[8][z]+slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z];
remainderSampleR *= 0.0625;
break;
case 8:
slewR[slewCount%18][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z];
remainderSampleR += slewR[9][z]+slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z]+slewR[16][z]+slewR[17][z];
remainderSampleR *= 0.0555555;
break;
case 9:
slewR[slewCount%20][z] = inputSampleR;
remainderSampleR = slewR[0][z]+slewR[1][z]+slewR[2][z]+slewR[3][z]+slewR[4][z]+slewR[5][z]+slewR[6][z]+slewR[7][z]+slewR[8][z]+slewR[9][z];
remainderSampleR += slewR[10][z]+slewR[11][z]+slewR[12][z]+slewR[13][z]+slewR[14][z]+slewR[15][z]+slewR[16][z]+slewR[17][z]+slewR[18][z]+slewR[19][z];
remainderSampleR *= 0.05;
break;
} //generate the final fractional amount
for (int y = z+1; y < 9; y++) {
switch (y) {
case 0:
slewR[slewCount%2][y] = inputSampleR; break;
case 1:
slewR[slewCount%4][y] = inputSampleR; break;
case 2:
slewR[slewCount%6][y] = inputSampleR; break;
case 3:
slewR[slewCount%8][y] = inputSampleR; break;
case 4:
slewR[slewCount%10][y] = inputSampleR; break;
case 5:
slewR[slewCount%12][y] = inputSampleR; break;
case 6:
slewR[slewCount%14][y] = inputSampleR; break;
case 7:
slewR[slewCount%16][y] = inputSampleR; break;
case 8:
slewR[slewCount%18][y] = inputSampleR; break;
case 9:
slewR[slewCount%20][y] = inputSampleR; break;
}
} //clean up the little buffers when not being actively used
//end R
slewCount++; if (slewCount > 619315200) slewCount = 0;
thirdSampleL = secondSampleL; secondSampleL = drySampleL;
thirdSampleR = secondSampleR; secondSampleR = drySampleR;
inputSampleL = (inputSampleL*(1.0-depthTrim))+(remainderSampleL*depthTrim);
inputSampleR = (inputSampleR*(1.0-depthTrim))+(remainderSampleR*depthTrim);
//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,331 @@
/*
* File: Dynamics2.cpp
*
* Version: 1.0
*
* Created: 9/20/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.
*
*/
/*=============================================================================
Dynamics2.cpp
=============================================================================*/
#include "Dynamics2.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(Dynamics2)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::Dynamics2
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dynamics2::Dynamics2(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// state that plugin supports only stereo-in/stereo-out processing
UInt32 Dynamics2::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Dynamics2::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____Dynamics2EffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::Dynamics2Kernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus Dynamics2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
const AudioBufferList & inBuffer,
AudioBufferList & outBuffer,
UInt32 inFramesToProcess)
{
Float32 * inputL = (Float32*)(inBuffer.mBuffers[0].mData);
Float32 * inputR = (Float32*)(inBuffer.mBuffers[1].mData);
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
double bezCThresh = pow(1.0-GetParameter( kParam_A ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_B ), 8.0) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_C ),12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(GetParameter( kParam_D ),4.0),sqrt(bezCThresh+1.0));
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (fmax(fabs(inputSampleL),fabs(inputSampleR)) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
if (bezMaxF < gate) bezCompF[bez_SampR] = bezMaxF/gate; //note: SampR is a control voltage,
if (bezCompF[bez_SampR]<gate) bezCompF[bez_SampR] = 0.0; //not a bipolar audio signal
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
if (bezCompS[bez_SampR]<gate) bezCompS[bez_SampR] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
if (bezGate < 1.0 && gate > 0.0) {inputSampleL *= bezGate; inputSampleR *= bezGate;}
//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
*outputL = inputSampleL;
*outputR = inputSampleR;
//direct stereo out
inputL += 1;
inputR += 1;
outputL += 1;
outputR += 1;
}
return noErr;
}

View file

@ -0,0 +1 @@
_Dynamics2Entry

View file

@ -0,0 +1,148 @@
/*
* File: Dynamics2.h
*
* Version: 1.0
*
* Created: 9/20/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 "AUEffectBase.h"
#include "Dynamics2Version.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Dynamics2_h__
#define __Dynamics2_h__
#pragma mark ____Dynamics2 Parameters
// parameters
static const float kDefaultValue_ParamA = 1.0;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.0;
static CFStringRef kParameterAName = CFSTR("Thresh");
static CFStringRef kParameterBName = CFSTR("Attack");
static CFStringRef kParameterCName = CFSTR("Release");
static CFStringRef kParameterDName = CFSTR("Gate");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=4
};
#pragma mark ____Dynamics2
class Dynamics2 : public AUEffectBase
{
public:
Dynamics2(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Dynamics2 () { delete mDebugDispatcher; }
#endif
virtual ComponentResult Reset(AudioUnitScope inScope, AudioUnitElement inElement);
virtual OSStatus ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
const AudioBufferList & inBuffer, AudioBufferList & outBuffer,
UInt32 inFramesToProcess);
virtual UInt32 SupportedNumChannels(const AUChannelInfo ** outInfo);
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kDynamics2Version; }
private:
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: Dynamics2.r
*
* Version: 1.0
*
* Created: 9/20/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 "Dynamics2Version.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Dynamics2 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dynamics2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Dynamics2
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Dynamics2_COMP_SUBTYPE
#define COMP_MANUF Dynamics2_COMP_MANF
#define VERSION kDynamics2Version
#define NAME "Airwindows: Dynamics2"
#define DESCRIPTION "Dynamics2 AU"
#define ENTRY_POINT "Dynamics2Entry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,147 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Dynamics2 */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
364,
20,
48,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
188,
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 = 780618148;
PBXWorkspaceStateSaveDate = 780618148;
};
perUserProjectItems = {
8B23680F2E87162300CA47D4 /* PBXTextBookmark */ = 8B23680F2E87162300CA47D4 /* PBXTextBookmark */;
8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */ = 8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */;
8B4F3DD12E874B19007FA9AE /* PBXBookmark */ = 8B4F3DD12E874B19007FA9AE /* PBXBookmark */;
8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */ = 8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B23680F2E87162300CA47D4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Dynamics2.h */;
name = "Dynamics2.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 42;
vrLoc = 0;
};
8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* Dynamics2Version.h */;
name = "Dynamics2Version.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 128;
vrLoc = 2780;
};
8B4F3DD12E874B19007FA9AE /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */;
};
8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */;
name = "Dynamics2.cpp: 308";
rLen = 0;
rLoc = 14433;
rType = 0;
vrLen = 303;
vrLoc = 13043;
};
8BA05A660720730100365D66 /* Dynamics2.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 5868}}";
sepNavSelRange = "{14433, 0}";
sepNavVisRange = "{13043, 303}";
sepNavWindowFrame = "{{10, 81}, {1250, 767}}";
};
};
8BA05A690720730100365D66 /* Dynamics2Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1306, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{1172, 1797}";
sepNavWindowFrame = "{{15, 70}, {1353, 803}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* Dynamics2.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2664}}";
sepNavSelRange = "{5071, 334}";
sepNavVisRange = "{2727, 906}";
sepNavWindowFrame = "{{38, 79}, {915, 773}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* Dynamics2 */ = {
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 /* Dynamics2.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Dynamics2.r */; };
8BA05A6B0720730100365D66 /* Dynamics2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */; };
8BA05A6E0720730100365D66 /* Dynamics2Version.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* Dynamics2Version.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 /* Dynamics2.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Dynamics2.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 /* Dynamics2.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Dynamics2.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Dynamics2.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Dynamics2.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Dynamics2.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Dynamics2.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* Dynamics2Version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2Version.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 /* Dynamics2.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Dynamics2.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Dynamics2.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 /* Dynamics2 */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Dynamics2;
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 /* Dynamics2.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Dynamics2.h */,
8BA05A660720730100365D66 /* Dynamics2.cpp */,
8BA05A670720730100365D66 /* Dynamics2.exp */,
8BA05A680720730100365D66 /* Dynamics2.r */,
8BA05A690720730100365D66 /* Dynamics2Version.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 /* Dynamics2Version.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 /* Dynamics2.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 /* Dynamics2 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Dynamics2" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = Dynamics2;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Dynamics2;
productReference = 8D01CCD20486CAD60068D4B7 /* Dynamics2.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 "Dynamics2" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* Dynamics2 */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Dynamics2 */,
);
};
/* 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 /* Dynamics2.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* Dynamics2.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 = Dynamics2.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 = Dynamics2;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = Dynamics2.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 = Dynamics2;
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 "Dynamics2" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Dynamics2" */ = {
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: Dynamics2Version.h
*
* Version: 1.0
*
* Created: 9/20/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 __Dynamics2Version_h__
#define __Dynamics2Version_h__
#ifdef DEBUG
#define kDynamics2Version 0xFFFFFFFF
#else
#define kDynamics2Version 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Dynamics2_COMP_MANF 'Dthr'
#define Dynamics2_COMP_SUBTYPE 'dyn2'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

Binary file not shown.

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

View file

@ -0,0 +1,5 @@
//
// Prefix header for all source files of the '«PROJECTNAMEASIDENTIFIER»' target in the '«PROJECTNAMEASIDENTIFIER»' project.
//
#include <CoreServices/CoreServices.h>

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,272 @@
/*
* File: Dynamics2Mono.cpp
*
* Version: 1.0
*
* Created: 9/20/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.
*
*/
/*=============================================================================
Dynamics2Mono.cpp
=============================================================================*/
#include "Dynamics2Mono.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(Dynamics2Mono)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::Dynamics2Mono
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dynamics2Mono::Dynamics2Mono(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2Mono::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2Mono::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2Mono::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2Mono::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Dynamics2Mono::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2Mono::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____Dynamics2MonoEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::Dynamics2MonoKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Dynamics2Mono::Dynamics2MonoKernel::Reset()
{
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2Mono::Dynamics2MonoKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Dynamics2Mono::Dynamics2MonoKernel::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();
double bezCThresh = pow(1.0-GetParameter( kParam_A ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_B ), 8.0) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_C ),12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(GetParameter( kParam_D ),4.0),sqrt(bezCThresh+1.0));
while (nSampleFrames-- > 0) {
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
if (fabs(inputSampleL) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
if (bezCThresh > 0.0) inputSampleL *= ((bezCThresh*0.5)+1.0);
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezMaxF = fmax(bezMaxF,fabs(inputSampleL));
if (bezCompF[bez_cycle] > 1.0) {
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage.
if (bezCompS[bez_cycle] > 1.0) {
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
if (bezGate < 1.0 && gate > 0.0) inputSampleL *= bezGate;
//begin 32 bit floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_Dynamics2MonoEntry

View file

@ -0,0 +1,158 @@
/*
* File: Dynamics2Mono.h
*
* Version: 1.0
*
* Created: 9/20/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 "AUEffectBase.h"
#include "Dynamics2MonoVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Dynamics2Mono_h__
#define __Dynamics2Mono_h__
#pragma mark ____Dynamics2Mono Parameters
// parameters
static const float kDefaultValue_ParamA = 1.0;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.0;
static CFStringRef kParameterAName = CFSTR("Thresh");
static CFStringRef kParameterBName = CFSTR("Attack");
static CFStringRef kParameterCName = CFSTR("Release");
static CFStringRef kParameterDName = CFSTR("Gate");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=4
};
#pragma mark ____Dynamics2Mono
class Dynamics2Mono : public AUEffectBase
{
public:
Dynamics2Mono(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Dynamics2Mono () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new Dynamics2MonoKernel(this); }
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kDynamics2MonoVersion; }
protected:
class Dynamics2MonoKernel : public AUKernelBase // most of the real work happens here
{
public:
Dynamics2MonoKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: Dynamics2Mono.r
*
* Version: 1.0
*
* Created: 9/20/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 "Dynamics2MonoVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Dynamics2Mono 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dynamics2Mono~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Dynamics2Mono
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Dynamics2Mono_COMP_SUBTYPE
#define COMP_MANUF Dynamics2Mono_COMP_MANF
#define VERSION kDynamics2MonoVersion
#define NAME "Airwindows: Dynamics2Mono"
#define DESCRIPTION "Dynamics2Mono AU"
#define ENTRY_POINT "Dynamics2MonoEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,137 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Dynamics2Mono */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
292,
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 = 780606359;
PBXWorkspaceStateSaveDate = 780606359;
};
perUserProjectItems = {
8B2368212E8717A600CA47D4 /* PBXTextBookmark */ = 8B2368212E8717A600CA47D4 /* PBXTextBookmark */;
8B2368302E871E7200CA47D4 /* PBXTextBookmark */ = 8B2368302E871E7200CA47D4 /* PBXTextBookmark */;
8BF0FCD02E7EC80100F9D5D6 /* PlistBookmark */ = 8BF0FCD02E7EC80100F9D5D6 /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B2368212E8717A600CA47D4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2Mono.cpp */;
name = "Dynamics2Mono.cpp: 273";
rLen = 0;
rLoc = 12617;
rType = 0;
vrLen = 210;
vrLoc = 12305;
};
8B2368302E871E7200CA47D4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2Mono.cpp */;
name = "Dynamics2Mono.cpp: 273";
rLen = 0;
rLoc = 12617;
rType = 0;
vrLen = 208;
vrLoc = 12406;
};
8BA05A660720730100365D66 /* Dynamics2Mono.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 5058}}";
sepNavSelRange = "{12617, 0}";
sepNavVisRange = "{12406, 208}";
sepNavWindowFrame = "{{309, 59}, {1131, 819}}";
};
};
8BA05A690720730100365D66 /* Dynamics2MonoVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1306, 1062}}";
sepNavSelRange = "{2934, 0}";
sepNavVisRange = "{1073, 1924}";
sepNavWindowFrame = "{{38, 49}, {1353, 803}}";
};
};
8BC6025B073B072D006C4272 /* Dynamics2Mono.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1306, 2844}}";
sepNavSelRange = "{5511, 0}";
sepNavVisRange = "{4951, 855}";
sepNavWindowFrame = "{{730, 67}, {1353, 803}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8BF0FCD02E7EC80100F9D5D6 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/Dynamics2Mono/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
8D01CCC60486CAD60068D4B7 /* Dynamics2Mono */ = {
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 /* Dynamics2Mono.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Dynamics2Mono.r */; };
8BA05A6B0720730100365D66 /* Dynamics2Mono.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Dynamics2Mono.cpp */; };
8BA05A6E0720730100365D66 /* Dynamics2MonoVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* Dynamics2MonoVersion.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 /* Dynamics2Mono.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Dynamics2Mono.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 /* Dynamics2Mono.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Dynamics2Mono.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Dynamics2Mono.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Dynamics2Mono.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Dynamics2Mono.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Dynamics2Mono.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* Dynamics2MonoVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2MonoVersion.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 /* Dynamics2Mono.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2Mono.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Dynamics2Mono.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Dynamics2Mono.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 /* Dynamics2Mono */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Dynamics2Mono;
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 /* Dynamics2Mono.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Dynamics2Mono.h */,
8BA05A660720730100365D66 /* Dynamics2Mono.cpp */,
8BA05A670720730100365D66 /* Dynamics2Mono.exp */,
8BA05A680720730100365D66 /* Dynamics2Mono.r */,
8BA05A690720730100365D66 /* Dynamics2MonoVersion.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 /* Dynamics2MonoVersion.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 /* Dynamics2Mono.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 /* Dynamics2Mono */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Dynamics2Mono" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = Dynamics2Mono;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Dynamics2Mono;
productReference = 8D01CCD20486CAD60068D4B7 /* Dynamics2Mono.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 "Dynamics2Mono" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* Dynamics2Mono */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Dynamics2Mono */,
);
};
/* 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 /* Dynamics2Mono.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* Dynamics2Mono.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 = Dynamics2Mono.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 = Dynamics2Mono;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = Dynamics2Mono.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 = Dynamics2Mono;
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 "Dynamics2Mono" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Dynamics2Mono" */ = {
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: Dynamics2MonoVersion.h
*
* Version: 1.0
*
* Created: 9/20/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 __Dynamics2MonoVersion_h__
#define __Dynamics2MonoVersion_h__
#ifdef DEBUG
#define kDynamics2MonoVersion 0xFFFFFFFF
#else
#define kDynamics2MonoVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Dynamics2Mono_COMP_MANF 'Dthr'
#define Dynamics2Mono_COMP_SUBTYPE 'dym2'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

Binary file not shown.

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>

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>

Binary file not shown.

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>

View file

@ -0,0 +1,659 @@
/*
* File: MasteringMono.cpp
*
* Version: 1.0
*
* Created: 9/25/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.
*
*/
/*=============================================================================
MasteringMono.cpp
=============================================================================*/
#include "MasteringMono.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(MasteringMono)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::MasteringMono
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MasteringMono::MasteringMono(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
SetParameter(kParam_E, kDefaultValue_ParamE );
SetParameter(kParam_F, kDefaultValue_ParamF );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult MasteringMono::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
if ((inScope == kAudioUnitScope_Global) && (inParameterID == kParam_F)) //ID must be actual name of parameter identifier, not number
{
if (outStrings == NULL) return noErr;
CFStringRef strings [] =
{
kMenuItem_Dark,
kMenuItem_TenNines,
kMenuItem_TPDFWide,
kMenuItem_PaulWide,
kMenuItem_NJAD,
kMenuItem_Bypass,
};
*outStrings = CFArrayCreate (
NULL,
(const void **) strings,
(sizeof (strings) / sizeof (strings [0])),
NULL
);
return noErr;
}
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult MasteringMono::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
case kParam_E:
AUBase::FillInParameterName (outParameterInfo, kParameterEName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamE;
break;
case kParam_F:
AUBase::FillInParameterName (outParameterInfo, kParameterFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Indexed;
outParameterInfo.minValue = kDark;
outParameterInfo.maxValue = kBypass;
outParameterInfo.defaultValue = kDefaultValue_ParamF;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult MasteringMono::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult MasteringMono::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// MasteringMono::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult MasteringMono::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____MasteringMonoEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::MasteringMonoKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void MasteringMono::MasteringMonoKernel::Reset()
{
for (int x = 0; x < air_total; x++) air[x] = 0.0;
for (int x = 0; x < kal_total; x++) {kalM[x] = 0.0;kalS[x] = 0.0;}
lastSinewL = 0.0;
lastSampleL = 0.0;
wasPosClipL = false;
wasNegClipL = false;
for (int x = 0; x < 16; x++) {intermediateL[x] = 0.0;}
quantA = 0;
quantB = 1;
expectedSlew = 0.0;
testA = 0.0;
testB = 0.0;
correction = 0.0;
shapedSampleL = 0.0;
currentDither = 0.0;
ditherL = 0.0;
cutbinsL = false;
hotbinA = 0;
hotbinB = 0;
benfordize = 0.0;
totalA = 0.0;
totalB = 0.0;
outputSample = 0.0;
expon = 0; //internal dither variables
//these didn't like to be defined inside a case statement
NSOddL = 0.0; NSEvenL = 0.0; prevShapeL = 0.0;
flip = true; //Ten Nines
for(int count = 0; count < 99; count++) {
darkSampleL[count] = 0;
} //Dark
previousDitherL = 0.0; //PaulWide
bynL[0] = 1000.0;
bynL[1] = 301.0;
bynL[2] = 176.0;
bynL[3] = 125.0;
bynL[4] = 97.0;
bynL[5] = 79.0;
bynL[6] = 67.0;
bynL[7] = 58.0;
bynL[8] = 51.0;
bynL[9] = 46.0;
bynL[10] = 1000.0;
noiseShapingL = 0.0; //NJAD
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// MasteringMono::MasteringMonoKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void MasteringMono::MasteringMonoKernel::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();
double threshSinew = (0.25+((1.0-GetParameter( kParam_A ))*0.333))/overallscale;
double depthSinew = 1.0-pow(1.0-GetParameter( kParam_A ),2.0);
double trebleZoom = GetParameter( kParam_B )-0.5;
long double trebleGain = (trebleZoom*fabs(trebleZoom))+1.0;
if (trebleGain > 1.0) trebleGain = pow(trebleGain,3.0+sqrt(overallscale));
//this boost is necessary to adapt to higher sample rates
double midZoom = GetParameter( kParam_C )-0.5;
long double midGain = (midZoom*fabs(midZoom))+1.0;
double kalMid = 0.35-(GetParameter( kParam_C )*0.25); //crossover frequency between mid/bass
double kalSub = 0.45+(GetParameter( kParam_C )*0.25); //crossover frequency between bass/sub
double bassZoom = (GetParameter( kParam_D )*0.5)-0.25;
long double bassGain = (-bassZoom*fabs(bassZoom))+1.0; //control inverted
long double subGain = ((GetParameter( kParam_D )*0.25)-0.125)+1.0;
if (subGain < 1.0) subGain = 1.0; //very small sub shift, only pos.
long double driveIn = (GetParameter( kParam_E )-0.5)+1.0;
long double driveOut = (-(GetParameter( kParam_E )-0.5)*fabs(GetParameter( kParam_E )-0.5))+1.0;
int spacing = floor(overallscale); //should give us working basic scaling, usually 2 or 4
if (spacing < 1) spacing = 1; if (spacing > 16) spacing = 16;
int dither = (int) GetParameter( kParam_F );
int depth = (int)(17.0*overallscale);
if (depth < 3) depth = 3; if (depth > 98) depth = 98; //for Dark
while (nSampleFrames-- > 0) {
long double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
inputSampleL *= driveIn;
long double drySampleL = inputSampleL;
//begin Air3L
air[pvSL4] = air[pvAL4] - air[pvAL3]; air[pvSL3] = air[pvAL3] - air[pvAL2];
air[pvSL2] = air[pvAL2] - air[pvAL1]; air[pvSL1] = air[pvAL1] - inputSampleL;
air[accSL3] = air[pvSL4] - air[pvSL3]; air[accSL2] = air[pvSL3] - air[pvSL2];
air[accSL1] = air[pvSL2] - air[pvSL1];
air[acc2SL2] = air[accSL3] - air[accSL2]; air[acc2SL1] = air[accSL2] - air[accSL1];
air[outAL] = -(air[pvAL1] + air[pvSL3] + air[acc2SL2] - ((air[acc2SL2] + air[acc2SL1])*0.5));
air[gainAL] *= 0.5; air[gainAL] += fabs(drySampleL-air[outAL])*0.5;
if (air[gainAL] > 0.3*sqrt(overallscale)) air[gainAL] = 0.3*sqrt(overallscale);
air[pvAL4] = air[pvAL3]; air[pvAL3] = air[pvAL2];
air[pvAL2] = air[pvAL1]; air[pvAL1] = (air[gainAL] * air[outAL]) + drySampleL;
long double midL = drySampleL - ((air[outAL]*0.5)+(drySampleL*(0.457-(0.017*overallscale))));
long double temp = (midL + air[gndavgL])*0.5; air[gndavgL] = midL; midL = temp;
long double trebleL = drySampleL-midL;
//end Air3L
//begin KalmanML
temp = midL;
kalM[prevSlewL3] += kalM[prevSampL3] - kalM[prevSampL2]; kalM[prevSlewL3] *= 0.5;
kalM[prevSlewL2] += kalM[prevSampL2] - kalM[prevSampL1]; kalM[prevSlewL2] *= 0.5;
kalM[prevSlewL1] += kalM[prevSampL1] - midL; kalM[prevSlewL1] *= 0.5;
//make slews from each set of samples used
kalM[accSlewL2] += kalM[prevSlewL3] - kalM[prevSlewL2]; kalM[accSlewL2] *= 0.5;
kalM[accSlewL1] += kalM[prevSlewL2] - kalM[prevSlewL1]; kalM[accSlewL1] *= 0.5;
//differences between slews: rate of change of rate of change
kalM[accSlewL3] += (kalM[accSlewL2] - kalM[accSlewL1]); kalM[accSlewL3] *= 0.5;
//entering the abyss, what even is this
kalM[kalOutL] += kalM[prevSampL1] + kalM[prevSlewL2] + kalM[accSlewL3]; kalM[kalOutL] *= 0.5;
//resynthesizing predicted result (all iir smoothed)
kalM[kalGainL] += fabs(temp-kalM[kalOutL])*kalMid*8.0; kalM[kalGainL] *= 0.5;
//madness takes its toll. Kalman Gain: how much dry to retain
if (kalM[kalGainL] > kalMid*0.5) kalM[kalGainL] = kalMid*0.5;
//attempts to avoid explosions
kalM[kalOutL] += (temp*(1.0-(0.68+(kalMid*0.157))));
//this is for tuning a really complete cancellation up around Nyquist
kalM[prevSampL3] = kalM[prevSampL2]; kalM[prevSampL2] = kalM[prevSampL1];
kalM[prevSampL1] = (kalM[kalGainL] * kalM[kalOutL]) + ((1.0-kalM[kalGainL])*temp);
//feed the chain of previous samples
long double bassL = (kalM[kalOutL]+kalM[kalAvgL])*0.5;
kalM[kalAvgL] = kalM[kalOutL];
midL -= bassL;
//end KalmanML
//begin KalmanSL
temp = bassL;
kalS[prevSlewL3] += kalS[prevSampL3] - kalS[prevSampL2]; kalS[prevSlewL3] *= 0.5;
kalS[prevSlewL2] += kalS[prevSampL2] - kalS[prevSampL1]; kalS[prevSlewL2] *= 0.5;
kalS[prevSlewL1] += kalS[prevSampL1] - bassL; kalS[prevSlewL1] *= 0.5;
//make slews from each set of samples used
kalS[accSlewL2] += kalS[prevSlewL3] - kalS[prevSlewL2]; kalS[accSlewL2] *= 0.5;
kalS[accSlewL1] += kalS[prevSlewL2] - kalS[prevSlewL1]; kalS[accSlewL1] *= 0.5;
//differences between slews: rate of change of rate of change
kalS[accSlewL3] += (kalS[accSlewL2] - kalS[accSlewL1]); kalS[accSlewL3] *= 0.5;
//entering the abyss, what even is this
kalS[kalOutL] += kalS[prevSampL1] + kalS[prevSlewL2] + kalS[accSlewL3]; kalS[kalOutL] *= 0.5;
//resynthesizing predicted result (all iir smoothed)
kalS[kalGainL] += fabs(temp-kalS[kalOutL])*kalSub*8.0; kalS[kalGainL] *= 0.5;
//madness takes its toll. Kalman Gain: how much dry to retain
if (kalS[kalGainL] > kalSub*0.5) kalS[kalGainL] = kalSub*0.5;
//attempts to avoid explosions
kalS[kalOutL] += (temp*(1.0-(0.68+(kalSub*0.157))));
//this is for tuning a really complete cancellation up around Nyquist
kalS[prevSampL3] = kalS[prevSampL2]; kalS[prevSampL2] = kalS[prevSampL1];
kalS[prevSampL1] = (kalS[kalGainL] * kalS[kalOutL]) + ((1.0-kalS[kalGainL])*temp);
//feed the chain of previous samples
long double subL = (kalS[kalOutL]+kalS[kalAvgL])*0.5;
kalS[kalAvgL] = kalS[kalOutL];
bassL -= subL;
//end KalmanSL
inputSampleL = (subL*subGain);
if (bassZoom > 0.0) {
double closer = bassL * 1.57079633;
if (closer > 1.57079633) closer = 1.57079633;
if (closer < -1.57079633) closer = -1.57079633;
bassL = (bassL*(1.0-bassZoom))+(sin(closer)*bassZoom);
} //zooming in will make the body of the sound louder: it's just Density
if (bassZoom < 0.0) {
double farther = fabs(bassL) * 1.57079633;
if (farther > 1.57079633) farther = 1.0;
else farther = 1.0-cos(farther);
if (bassL > 0.0) bassL = (bassL*(1.0+bassZoom))-(farther*bassZoom*1.57079633);
if (bassL < 0.0) bassL = (bassL*(1.0+bassZoom))+(farther*bassZoom*1.57079633);
} //zooming out boosts the hottest peaks but cuts back softer stuff
inputSampleL += (bassL*bassGain);
if (midZoom > 0.0) {
double closer = midL * 1.57079633;
if (closer > 1.57079633) closer = 1.57079633;
if (closer < -1.57079633) closer = -1.57079633;
midL = (midL*(1.0-midZoom))+(sin(closer)*midZoom);
} //zooming in will make the body of the sound louder: it's just Density
if (midZoom < 0.0) {
double farther = fabs(midL) * 1.57079633;
if (farther > 1.57079633) farther = 1.0;
else farther = 1.0-cos(farther);
if (midL > 0.0) midL = (midL*(1.0+midZoom))-(farther*midZoom*1.57079633);
if (midL < 0.0) midL = (midL*(1.0+midZoom))+(farther*midZoom*1.57079633);
} //zooming out boosts the hottest peaks but cuts back softer stuff
inputSampleL += (midL*midGain);
if (trebleZoom > 0.0) {
double closer = trebleL * 1.57079633;
if (closer > 1.57079633) closer = 1.57079633;
if (closer < -1.57079633) closer = -1.57079633;
trebleL = (trebleL*(1.0-trebleZoom))+(sin(closer)*trebleZoom);
} //zooming in will make the body of the sound louder: it's just Density
if (trebleZoom < 0.0) {
double farther = fabs(trebleL) * 1.57079633;
if (farther > 1.57079633) farther = 1.0;
else farther = 1.0-cos(farther);
if (trebleL > 0.0) trebleL = (trebleL*(1.0+trebleZoom))-(farther*trebleZoom*1.57079633);
if (trebleL < 0.0) trebleL = (trebleL*(1.0+trebleZoom))+(farther*trebleZoom*1.57079633);
} //zooming out boosts the hottest peaks but cuts back softer stuff
inputSampleL += (trebleL*trebleGain);
inputSampleL *= driveOut;
//begin ClipOnly2 as a little, compressed chunk that can be dropped into code
if (inputSampleL > 4.0) inputSampleL = 4.0; if (inputSampleL < -4.0) inputSampleL = -4.0;
if (wasPosClipL == true) { //current will be over
if (inputSampleL<lastSampleL) lastSampleL=0.7058208+(inputSampleL*0.2609148);
else lastSampleL = 0.2491717+(lastSampleL*0.7390851);
} wasPosClipL = false;
if (inputSampleL>0.9549925859) {wasPosClipL=true;inputSampleL=0.7058208+(lastSampleL*0.2609148);}
if (wasNegClipL == true) { //current will be -over
if (inputSampleL > lastSampleL) lastSampleL=-0.7058208+(inputSampleL*0.2609148);
else lastSampleL=-0.2491717+(lastSampleL*0.7390851);
} wasNegClipL = false;
if (inputSampleL<-0.9549925859) {wasNegClipL=true;inputSampleL=-0.7058208+(lastSampleL*0.2609148);}
intermediateL[spacing] = inputSampleL;
inputSampleL = lastSampleL; //Latency is however many samples equals one 44.1k sample
for (int x = spacing; x > 0; x--) intermediateL[x-1] = intermediateL[x];
lastSampleL = intermediateL[0]; //run a little buffer to handle this
//end ClipOnly2 as a little, compressed chunk that can be dropped into code
temp = inputSampleL;
long double sinew = threshSinew * cos(lastSinewL*lastSinewL);
if (inputSampleL - lastSinewL > sinew) temp = lastSinewL + sinew;
if (-(inputSampleL - lastSinewL) > sinew) temp = lastSinewL - sinew;
lastSinewL = temp;
inputSampleL = (inputSampleL * (1.0-depthSinew))+(lastSinewL*depthSinew);
//run Sinew to stop excess slews, but run a dry/wet to allow a range of brights
switch (dither) {
case 1:
//begin Dark
inputSampleL *= 8388608.0; //we will apply the 24 bit Dark
//We are doing it first Left, then Right, because the loops may run faster if
//they aren't too jammed full of variables. This means re-running code.
//begin left
quantA = floor(inputSampleL);
quantB = floor(inputSampleL+1.0);
//to do this style of dither, we quantize in either direction and then
//do a reconstruction of what the result will be for each choice.
//We then evaluate which one we like, and keep a history of what we previously had
expectedSlew = 0;
for(int x = 0; x < depth; x++) {
expectedSlew += (darkSampleL[x+1] - darkSampleL[x]);
}
expectedSlew /= depth; //we have an average of all recent slews
//we are doing that to voice the thing down into the upper mids a bit
//it mustn't just soften the brightest treble, it must smooth high mids too
testA = fabs((darkSampleL[0] - quantA) - expectedSlew);
testB = fabs((darkSampleL[0] - quantB) - expectedSlew);
if (testA < testB) inputSampleL = quantA;
else inputSampleL = quantB;
//select whichever one departs LEAST from the vector of averaged
//reconstructed previous final samples. This will force a kind of dithering
//as it'll make the output end up as smooth as possible
for(int x = depth; x >=0; x--) {
darkSampleL[x+1] = darkSampleL[x];
}
darkSampleL[0] = inputSampleL;
//end Dark left
inputSampleL /= 8388608.0;
break; //Dark (Monitoring2)
case 2:
//begin Dark for Ten Nines
inputSampleL *= 8388608.0; //we will apply the 24 bit Dark
//We are doing it first Left, then Right, because the loops may run faster if
//they aren't too jammed full of variables. This means re-running code.
//begin L
correction = 0;
if (flip) {
NSOddL = (NSOddL * 0.9999999999) + prevShapeL;
NSEvenL = (NSEvenL * 0.9999999999) - prevShapeL;
correction = NSOddL;
} else {
NSOddL = (NSOddL * 0.9999999999) - prevShapeL;
NSEvenL = (NSEvenL * 0.9999999999) + prevShapeL;
correction = NSEvenL;
}
shapedSampleL = inputSampleL+correction;
//end Ten Nines L
//begin Dark L
quantA = floor(shapedSampleL);
quantB = floor(shapedSampleL+1.0);
//to do this style of dither, we quantize in either direction and then
//do a reconstruction of what the result will be for each choice.
//We then evaluate which one we like, and keep a history of what we previously had
expectedSlew = 0;
for(int x = 0; x < depth; x++) {
expectedSlew += (darkSampleL[x+1] - darkSampleL[x]);
}
expectedSlew /= depth; //we have an average of all recent slews
//we are doing that to voice the thing down into the upper mids a bit
//it mustn't just soften the brightest treble, it must smooth high mids too
testA = fabs((darkSampleL[0] - quantA) - expectedSlew);
testB = fabs((darkSampleL[0] - quantB) - expectedSlew);
if (testA < testB) inputSampleL = quantA;
else inputSampleL = quantB;
//select whichever one departs LEAST from the vector of averaged
//reconstructed previous final samples. This will force a kind of dithering
//as it'll make the output end up as smooth as possible
for(int x = depth; x >=0; x--) {
darkSampleL[x+1] = darkSampleL[x];
}
darkSampleL[0] = inputSampleL;
//end Dark L
prevShapeL = (floor(shapedSampleL) - inputSampleL)*0.9999999999;
//end Ten Nines L
flip = !flip;
inputSampleL /= 8388608.0;
break; //Ten Nines (which goes into Dark in Monitoring3)
case 3:
inputSampleL *= 8388608.0;
ditherL = -1.0;
ditherL += (double(fpdL)/UINT32_MAX);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
ditherL += (double(fpdL)/UINT32_MAX);
//TPDF: two 0-1 random noises
inputSampleL = floor(inputSampleL+ditherL);
inputSampleL /= 8388608.0;
break; //TPDF
case 4:
inputSampleL *= 8388608.0;
//Paul Frindle: It's true that the dither itself can sound different
//if it's given a different freq response and you get to hear it.
//The one we use most is triangular single pole high pass dither.
//It's not freq bent enough to sound odd, but is slightly less audible than
//flat dither. It can also be easily made by taking one sample of dither
//away from the previous one - this gives you the triangular PDF and the
//filtering in one go :-)
currentDither = (double(fpdL)/UINT32_MAX);
ditherL = currentDither;
ditherL -= previousDitherL;
previousDitherL = currentDither;
//TPDF: 0-1 random noise
inputSampleL = floor(inputSampleL+ditherL);
inputSampleL /= 8388608.0;
break; //PaulDither
case 5:
inputSampleL *= 8388608.0;
cutbinsL = false;
drySampleL = inputSampleL;//re-using in NJAD
inputSampleL -= noiseShapingL;
//NJAD L
benfordize = floor(inputSampleL);
while (benfordize >= 1.0) benfordize /= 10;
while (benfordize < 1.0 && benfordize > 0.0000001) benfordize *= 10;
hotbinA = floor(benfordize);
//hotbin becomes the Benford bin value for this number floored
totalA = 0.0;
if ((hotbinA > 0) && (hotbinA < 10))
{
bynL[hotbinA] += 1; if (bynL[hotbinA] > 982) cutbinsL = true;
totalA += (301-bynL[1]); totalA += (176-bynL[2]); totalA += (125-bynL[3]);
totalA += (97-bynL[4]); totalA += (79-bynL[5]); totalA += (67-bynL[6]);
totalA += (58-bynL[7]); totalA += (51-bynL[8]); totalA += (46-bynL[9]); bynL[hotbinA] -= 1;
} else hotbinA = 10;
//produce total number- smaller is closer to Benford real
benfordize = ceil(inputSampleL);
while (benfordize >= 1.0) benfordize /= 10;
while (benfordize < 1.0 && benfordize > 0.0000001) benfordize *= 10;
hotbinB = floor(benfordize);
//hotbin becomes the Benford bin value for this number ceiled
totalB = 0.0;
if ((hotbinB > 0) && (hotbinB < 10))
{
bynL[hotbinB] += 1; if (bynL[hotbinB] > 982) cutbinsL = true;
totalB += (301-bynL[1]); totalB += (176-bynL[2]); totalB += (125-bynL[3]);
totalB += (97-bynL[4]); totalB += (79-bynL[5]); totalB += (67-bynL[6]);
totalB += (58-bynL[7]); totalB += (51-bynL[8]); totalB += (46-bynL[9]); bynL[hotbinB] -= 1;
} else hotbinB = 10;
//produce total number- smaller is closer to Benford real
if (totalA < totalB) {bynL[hotbinA] += 1; outputSample = floor(inputSampleL);}
else {bynL[hotbinB] += 1; outputSample = floor(inputSampleL+1);}
//assign the relevant one to the delay line
//and floor/ceil signal accordingly
if (cutbinsL) {
bynL[1] *= 0.99; bynL[2] *= 0.99; bynL[3] *= 0.99; bynL[4] *= 0.99; bynL[5] *= 0.99;
bynL[6] *= 0.99; bynL[7] *= 0.99; bynL[8] *= 0.99; bynL[9] *= 0.99; bynL[10] *= 0.99;
}
noiseShapingL += outputSample - drySampleL;
if (noiseShapingL > fabs(inputSampleL)) noiseShapingL = fabs(inputSampleL);
if (noiseShapingL < -fabs(inputSampleL)) noiseShapingL = -fabs(inputSampleL);
inputSampleL /= 8388608.0;
if (inputSampleL > 1.0) inputSampleL = 1.0;
if (inputSampleL < -1.0) inputSampleL = -1.0;
//finished NJAD L
break; //NJAD (Monitoring. Brightest)
case 6:
//begin 32 bit stereo floating point dither
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));
//end 32 bit stereo floating point dither
break; //Bypass for saving floating point files directly
}
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_MasteringMonoEntry

View file

@ -0,0 +1,238 @@
/*
* File: MasteringMono.h
*
* Version: 1.0
*
* Created: 9/25/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 "AUEffectBase.h"
#include "MasteringMonoVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __MasteringMono_h__
#define __MasteringMono_h__
#pragma mark ____MasteringMono Parameters
// parameters
static const float kDefaultValue_ParamA = 0.0;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.5;
static const float kDefaultValue_ParamE = 0.5;
static const int kDark = 1;
static const int kTenNines = 2;
static const int kTPDFWide = 3;
static const int kPaulWide = 4;
static const int kNJAD = 5;
static const int kBypass = 6;
static const int kDefaultValue_ParamF = kBypass;
static CFStringRef kMenuItem_Dark = CFSTR ("Dark");
static CFStringRef kMenuItem_TenNines = CFSTR ("Ten Nines");
static CFStringRef kMenuItem_TPDFWide = CFSTR ("TPDF");
static CFStringRef kMenuItem_PaulWide = CFSTR ("PaulDither");
static CFStringRef kMenuItem_NJAD = CFSTR ("NJAD");
static CFStringRef kMenuItem_Bypass = CFSTR ("Bypass");
static CFStringRef kParameterAName = CFSTR("Glue");
static CFStringRef kParameterBName = CFSTR("Scope");
static CFStringRef kParameterCName = CFSTR("Skronk");
static CFStringRef kParameterDName = CFSTR("Girth");
static CFStringRef kParameterEName = CFSTR("Drive");
static CFStringRef kParameterFName = CFSTR("Dither");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
kParam_E =4,
kParam_F =5,
//Add your parameters here...
kNumberOfParameters=6
};
#pragma mark ____MasteringMono
class MasteringMono : public AUEffectBase
{
public:
MasteringMono(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~MasteringMono () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new MasteringMonoKernel(this); }
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kMasteringMonoVersion; }
protected:
class MasteringMonoKernel : public AUKernelBase // most of the real work happens here
{
public:
MasteringMonoKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
pvAL1,
pvSL1,
accSL1,
acc2SL1,
pvAL2,
pvSL2,
accSL2,
acc2SL2,
pvAL3,
pvSL3,
accSL3,
pvAL4,
pvSL4,
gndavgL,
outAL,
gainAL,
air_total
};
double air[air_total];
enum {
prevSampL1,
prevSlewL1,
accSlewL1,
prevSampL2,
prevSlewL2,
accSlewL2,
prevSampL3,
prevSlewL3,
accSlewL3,
kalGainL,
kalOutL,
kalAvgL,
kal_total
};
double kalM[kal_total];
double kalS[kal_total];
long double lastSinewL;
//this is overkill, used to run both Zoom and Sinew stages as they are after
//the summing in StoneFire, which sums three doubles to a long double.
double lastSampleL;
double intermediateL[16];
bool wasPosClipL;
bool wasNegClipL;
int quantA;
int quantB;
float expectedSlew;
float testA;
float testB;
double correction;
double shapedSampleL;
double currentDither;
double ditherL;
bool cutbinsL;
int hotbinA;
int hotbinB;
double benfordize;
double totalA;
double totalB;
double outputSample;
int expon; //internal dither variables
double NSOddL; //dither section!
double NSEvenL;
double prevShapeL;
bool flip; //VinylDither
double darkSampleL[100];
double previousDitherL;
double bynL[13];
double noiseShapingL; //NJAD
uint32_t fpdL;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: MasteringMono.r
*
* Version: 1.0
*
* Created: 9/25/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 "MasteringMonoVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_MasteringMono 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MasteringMono~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_MasteringMono
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE MasteringMono_COMP_SUBTYPE
#define COMP_MANUF MasteringMono_COMP_MANF
#define VERSION kMasteringMonoVersion
#define NAME "Airwindows: MasteringMono"
#define DESCRIPTION "MasteringMono AU"
#define ENTRY_POINT "MasteringMonoEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,128 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* MasteringMono */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
292,
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 = 780515115;
PBXWorkspaceStateSaveDate = 780515115;
};
perUserProjectItems = {
8B0D5E5D2E8575F3005B263E /* PlistBookmark */ = 8B0D5E5D2E8575F3005B263E /* PlistBookmark */;
8B0D5EEF2E85BAB8005B263E /* PlistBookmark */ = 8B0D5EEF2E85BAB8005B263E /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B0D5E5D2E8575F3005B263E /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/MasteringMono/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
8B0D5EEF2E85BAB8005B263E /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/MasteringMono/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8BA05A660720730100365D66 /* MasteringMono.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1084, 12366}}";
sepNavSelRange = "{10352, 0}";
sepNavVisRange = "{21384, 1570}";
sepNavWindowFrame = "{{397, 59}, {1131, 819}}";
};
};
8BA05A690720730100365D66 /* MasteringMonoVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1084, 1062}}";
sepNavSelRange = "{2934, 0}";
sepNavVisRange = "{1073, 1924}";
sepNavWindowFrame = "{{15, 54}, {1131, 819}}";
};
};
8BC6025B073B072D006C4272 /* MasteringMono.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1084, 3600}}";
sepNavSelRange = "{3544, 0}";
sepNavVisRange = "{2734, 1292}";
sepNavWindowFrame = "{{15, 54}, {1131, 819}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* MasteringMono */ = {
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 /* MasteringMono.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* MasteringMono.r */; };
8BA05A6B0720730100365D66 /* MasteringMono.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* MasteringMono.cpp */; };
8BA05A6E0720730100365D66 /* MasteringMonoVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* MasteringMonoVersion.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 /* MasteringMono.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* MasteringMono.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 /* MasteringMono.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MasteringMono.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* MasteringMono.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = MasteringMono.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* MasteringMono.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = MasteringMono.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* MasteringMonoVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MasteringMonoVersion.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 /* MasteringMono.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MasteringMono.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* MasteringMono.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MasteringMono.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 /* MasteringMono */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = MasteringMono;
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 /* MasteringMono.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* MasteringMono.h */,
8BA05A660720730100365D66 /* MasteringMono.cpp */,
8BA05A670720730100365D66 /* MasteringMono.exp */,
8BA05A680720730100365D66 /* MasteringMono.r */,
8BA05A690720730100365D66 /* MasteringMonoVersion.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 /* MasteringMonoVersion.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 /* MasteringMono.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 /* MasteringMono */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "MasteringMono" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = MasteringMono;
productInstallPath = "$(HOME)/Library/Bundles";
productName = MasteringMono;
productReference = 8D01CCD20486CAD60068D4B7 /* MasteringMono.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 "MasteringMono" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* MasteringMono */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* MasteringMono */,
);
};
/* 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 /* MasteringMono.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* MasteringMono.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 = MasteringMono.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 = MasteringMono;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = MasteringMono.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 = MasteringMono;
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 "MasteringMono" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "MasteringMono" */ = {
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: MasteringMonoVersion.h
*
* Version: 1.0
*
* Created: 9/25/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 __MasteringMonoVersion_h__
#define __MasteringMonoVersion_h__
#ifdef DEBUG
#define kMasteringMonoVersion 0xFFFFFFFF
#else
#define kMasteringMonoVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define MasteringMono_COMP_MANF 'Dthr'
#define MasteringMono_COMP_SUBTYPE 'masm'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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>

Binary file not shown.

28
plugins/MacAU/PearEQ/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>

297
plugins/MacAU/PearEQ/PearEQ.cpp Executable file
View file

@ -0,0 +1,297 @@
/*
* File: PearEQ.cpp
*
* Version: 1.0
*
* Created: 10/1/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.
*
*/
/*=============================================================================
PearEQ.cpp
=============================================================================*/
#include "PearEQ.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(PearEQ)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::PearEQ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PearEQ::PearEQ(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
SetParameter(kParam_E, kDefaultValue_ParamE );
SetParameter(kParam_F, kDefaultValue_ParamF );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearEQ::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearEQ::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
case kParam_E:
AUBase::FillInParameterName (outParameterInfo, kParameterEName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamE;
break;
case kParam_F:
AUBase::FillInParameterName (outParameterInfo, kParameterFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamF;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearEQ::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearEQ::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// PearEQ::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearEQ::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____PearEQEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::PearEQKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PearEQ::PearEQKernel::Reset()
{
for (int x = 0; x < pear_total; x++) {
pearA[x] = 0.0;
pearB[x] = 0.0;
pearC[x] = 0.0;
pearD[x] = 0.0;
pearE[x] = 0.0;
}
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearEQ::PearEQKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PearEQ::PearEQKernel::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();
double topLevl = sqrt(GetParameter( kParam_A )+0.5);
pearA[levl] = sqrt(GetParameter( kParam_B )+0.5);
pearB[levl] = sqrt(GetParameter( kParam_C )+0.5);
pearC[levl] = sqrt(GetParameter( kParam_D )+0.5);
pearD[levl] = sqrt(GetParameter( kParam_E )+0.5);
pearE[levl] = sqrt(GetParameter( kParam_F )+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+1.9);
pearC[freq] = pow(0.564,freqFactor+4.1);
pearD[freq] = pow(0.564,freqFactor+6.2);
pearE[freq] = pow(0.564,freqFactor+7.7);
while (nSampleFrames-- > 0) {
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
for (int x = 0; x < pear_max; x += 2) {
//begin Pear filter stages
pearA[figL] = inputSampleL;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
inputSampleL -= pearA[figL];
pearB[figL] = pearA[figL];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearA[figL] -= pearB[figL];
pearC[figL] = pearB[figL];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearB[figL] -= pearC[figL];
pearD[figL] = pearC[figL];
pearD[slew] = ((pearD[figL]-pearD[x])+pearD[x+1])*pearD[freq]*0.5;
pearD[x] = pearD[figL] = (pearD[freq]*pearC[figL])+((1.0-pearD[freq])*(pearD[x]+pearD[x+1]));
pearD[x+1] = pearD[slew];
pearC[figL] -= pearD[figL];
pearE[figL] = pearD[figL];
pearE[slew] = ((pearE[figL]-pearE[x])+pearE[x+1])*pearE[freq]*0.5;
pearE[x] = pearE[figL] = (pearE[freq]*pearD[figL])+((1.0-pearE[freq])*(pearE[x]+pearE[x+1]));
pearE[x+1] = pearE[slew];
pearD[figL] -= pearE[figL];
inputSampleL *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]);
inputSampleL += (pearD[figL]*pearD[levl]);
inputSampleL += (pearE[figL]*pearE[levl]);
}
//begin 32 bit floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_PearEQEntry

185
plugins/MacAU/PearEQ/PearEQ.h Executable file
View file

@ -0,0 +1,185 @@
/*
* File: PearEQ.h
*
* Version: 1.0
*
* Created: 10/1/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 "AUEffectBase.h"
#include "PearEQVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __PearEQ_h__
#define __PearEQ_h__
#pragma mark ____PearEQ Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.5;
static const float kDefaultValue_ParamE = 0.5;
static const float kDefaultValue_ParamF = 0.5;
static CFStringRef kParameterAName = CFSTR("High");
static CFStringRef kParameterBName = CFSTR("HMid");
static CFStringRef kParameterCName = CFSTR("Mid");
static CFStringRef kParameterDName = CFSTR("LMid");
static CFStringRef kParameterEName = CFSTR("Bass");
static CFStringRef kParameterFName = CFSTR("Sub");
//Alter the name if desired, but using the plugin name is a start
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
kParam_E =4,
kParam_F =5,
//Add your parameters here...
kNumberOfParameters=6
};
#pragma mark ____PearEQ
class PearEQ : public AUEffectBase
{
public:
PearEQ(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~PearEQ () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new PearEQKernel(this); }
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kPearEQVersion; }
protected:
class PearEQKernel : public AUKernelBase // most of the real work happens here
{
public:
PearEQKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
prevSampL1,
prevSlewL1,
prevSampL2,
prevSlewL2,
prevSampL3,
prevSlewL3,
prevSampL4,
prevSlewL4,
prevSampL5,
prevSlewL5,
prevSampL6,
prevSlewL6,
prevSampL7,
prevSlewL7,
prevSampL8,
prevSlewL8,
prevSampL9,
prevSlewL9,
pear_max,
figL,
gndL,
slew,
freq,
levl,
pear_total
}; //new pear filter
double pearA[pear_total];
double pearB[pear_total];
double pearC[pear_total];
double pearD[pear_total];
double pearE[pear_total];
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

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

@ -0,0 +1,61 @@
/*
* File: PearEQ.r
*
* Version: 1.0
*
* Created: 10/1/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 "PearEQVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_PearEQ 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PearEQ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_PearEQ
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE PearEQ_COMP_SUBTYPE
#define COMP_MANUF PearEQ_COMP_MANF
#define VERSION kPearEQVersion
#define NAME "Airwindows: PearEQ"
#define DESCRIPTION "PearEQ AU"
#define ENTRY_POINT "PearEQEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,144 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* PearEQ */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
292,
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 = 781017906;
PBXWorkspaceStateSaveDate = 781017906;
};
perUserProjectItems = {
8BDF8BB42E8D644D00833D3C /* PBXBookmark */ = 8BDF8BB42E8D644D00833D3C /* PBXBookmark */;
8BDF8BBC2E8D65CC00833D3C /* PlistBookmark */ = 8BDF8BBC2E8D65CC00833D3C /* PlistBookmark */;
8BDF8BC12E8D65DB00833D3C /* PlistBookmark */ = 8BDF8BC12E8D65DB00833D3C /* PlistBookmark */;
8BDF8BC72E8D65DB00833D3C /* PBXTextBookmark */ = 8BDF8BC72E8D65DB00833D3C /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* PearEQ.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {957, 5364}}";
sepNavSelRange = "{12312, 0}";
sepNavVisRange = "{9821, 1679}";
sepNavWindowFrame = "{{15, 38}, {963, 840}}";
};
};
8BA05A690720730100365D66 /* PearEQVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2885, 0}";
sepNavVisRange = "{964, 1984}";
sepNavWindowFrame = "{{15, 38}, {963, 840}}";
};
};
8BC6025B073B072D006C4272 /* PearEQ.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 3870}}";
sepNavSelRange = "{5909, 0}";
sepNavVisRange = "{5623, 621}";
sepNavWindowFrame = "{{15, 38}, {963, 840}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8BDF8BB42E8D644D00833D3C /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* PearEQ.cpp */;
};
8BDF8BBC2E8D65CC00833D3C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/PearEQ/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8BDF8BC12E8D65DB00833D3C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/PearEQ/Info.plist;
rLen = 26;
rLoc = 0;
};
8BDF8BC72E8D65DB00833D3C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* PearEQ.cpp */;
name = "PearEQ.cpp: 276";
rLen = 0;
rLoc = 12312;
rType = 0;
vrLen = 1679;
vrLoc = 9821;
};
8D01CCC60486CAD60068D4B7 /* PearEQ */ = {
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 /* PearEQ.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* PearEQ.r */; };
8BA05A6B0720730100365D66 /* PearEQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* PearEQ.cpp */; };
8BA05A6E0720730100365D66 /* PearEQVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* PearEQVersion.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 /* PearEQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* PearEQ.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 /* PearEQ.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PearEQ.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* PearEQ.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = PearEQ.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* PearEQ.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = PearEQ.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* PearEQVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PearEQVersion.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 /* PearEQ.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PearEQ.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* PearEQ.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PearEQ.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 /* PearEQ */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = PearEQ;
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 /* PearEQ.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* PearEQ.h */,
8BA05A660720730100365D66 /* PearEQ.cpp */,
8BA05A670720730100365D66 /* PearEQ.exp */,
8BA05A680720730100365D66 /* PearEQ.r */,
8BA05A690720730100365D66 /* PearEQVersion.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 /* PearEQVersion.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 /* PearEQ.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 /* PearEQ */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "PearEQ" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = PearEQ;
productInstallPath = "$(HOME)/Library/Bundles";
productName = PearEQ;
productReference = 8D01CCD20486CAD60068D4B7 /* PearEQ.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 "PearEQ" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* PearEQ */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* PearEQ */,
);
};
/* 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 /* PearEQ.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* PearEQ.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 = PearEQ.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 = PearEQ;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = PearEQ.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 = PearEQ;
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 "PearEQ" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "PearEQ" */ = {
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: PearEQVersion.h
*
* Version: 1.0
*
* Created: 10/1/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 __PearEQVersion_h__
#define __PearEQVersion_h__
#ifdef DEBUG
#define kPearEQVersion 0xFFFFFFFF
#else
#define kPearEQVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define PearEQ_COMP_MANF 'Dthr'
#define PearEQ_COMP_SUBTYPE 'peaq'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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>

Binary file not shown.

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>

View file

@ -0,0 +1,261 @@
/*
* File: PearLiteEQ.cpp
*
* Version: 1.0
*
* Created: 10/1/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.
*
*/
/*=============================================================================
PearLiteEQ.cpp
=============================================================================*/
#include "PearLiteEQ.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(PearLiteEQ)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::PearLiteEQ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PearLiteEQ::PearLiteEQ(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearLiteEQ::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearLiteEQ::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearLiteEQ::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearLiteEQ::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// PearLiteEQ::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult PearLiteEQ::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____PearLiteEQEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::PearLiteEQKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PearLiteEQ::PearLiteEQKernel::Reset()
{
for (int x = 0; x < pear_total; x++) {
pearA[x] = 0.0;
pearB[x] = 0.0;
pearC[x] = 0.0;
}
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// PearLiteEQ::PearLiteEQKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void PearLiteEQ::PearLiteEQKernel::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();
double topLevl = sqrt(GetParameter( kParam_A )+0.5);
pearA[levl] = sqrt(GetParameter( kParam_B )+0.5);
pearB[levl] = sqrt(GetParameter( kParam_C )+0.5);
pearC[levl] = sqrt(GetParameter( kParam_D )+0.5);
double freqFactor = sqrt(overallscale)+(overallscale*0.5);
pearA[freq] = pow(0.564,freqFactor+0.85);
pearB[freq] = pow(0.564,freqFactor+4.1);
pearC[freq] = pow(0.564,freqFactor+7.1);
while (nSampleFrames-- > 0) {
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
for (int x = 0; x < pear_max; x += 2) {
//begin Pear filter stages
pearA[figL] = inputSampleL;
pearA[slew] = ((pearA[figL]-pearA[x])+pearA[x+1])*pearA[freq]*0.5;
pearA[x] = pearA[figL] = (pearA[freq]*pearA[figL])+((1.0-pearA[freq])*(pearA[x]+pearA[x+1]));
pearA[x+1] = pearA[slew];
inputSampleL -= pearA[figL];
pearB[figL] = pearA[figL];
pearB[slew] = ((pearB[figL]-pearB[x])+pearB[x+1])*pearB[freq]*0.5;
pearB[x] = pearB[figL] = (pearB[freq]*pearA[figL])+((1.0-pearB[freq])*(pearB[x]+pearB[x+1]));
pearB[x+1] = pearB[slew];
pearA[figL] -= pearB[figL];
pearC[figL] = pearB[figL];
pearC[slew] = ((pearC[figL]-pearC[x])+pearC[x+1])*pearC[freq]*0.5;
pearC[x] = pearC[figL] = (pearC[freq]*pearB[figL])+((1.0-pearC[freq])*(pearC[x]+pearC[x+1]));
pearC[x+1] = pearC[slew];
pearB[figL] -= pearC[figL];
inputSampleL *= topLevl;
inputSampleL += (pearA[figL]*pearA[levl]);
inputSampleL += (pearB[figL]*pearB[levl]);
inputSampleL += (pearC[figL]*pearC[levl]);
}
//begin 32 bit floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_PearLiteEQEntry

View file

@ -0,0 +1,175 @@
/*
* File: PearLiteEQ.h
*
* Version: 1.0
*
* Created: 10/1/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 "AUEffectBase.h"
#include "PearLiteEQVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __PearLiteEQ_h__
#define __PearLiteEQ_h__
#pragma mark ____PearLiteEQ Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.5;
static CFStringRef kParameterAName = CFSTR("High");
static CFStringRef kParameterBName = CFSTR("HMid");
static CFStringRef kParameterCName = CFSTR("LMid");
static CFStringRef kParameterDName = CFSTR("Bass");
//Alter the name if desired, but using the plugin name is a start
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=4
};
#pragma mark ____PearLiteEQ
class PearLiteEQ : public AUEffectBase
{
public:
PearLiteEQ(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~PearLiteEQ () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new PearLiteEQKernel(this); }
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kPearLiteEQVersion; }
protected:
class PearLiteEQKernel : public AUKernelBase // most of the real work happens here
{
public:
PearLiteEQKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
prevSampL1,
prevSlewL1,
prevSampL2,
prevSlewL2,
prevSampL3,
prevSlewL3,
prevSampL4,
prevSlewL4,
prevSampL5,
prevSlewL5,
prevSampL6,
prevSlewL6,
prevSampL7,
prevSlewL7,
prevSampL8,
prevSlewL8,
pear_max,
figL,
gndL,
slew,
freq,
levl,
pear_total
}; //new pear filter
double pearA[pear_total];
double pearB[pear_total];
double pearC[pear_total];
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: PearLiteEQ.r
*
* Version: 1.0
*
* Created: 10/1/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 "PearLiteEQVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_PearLiteEQ 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PearLiteEQ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_PearLiteEQ
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE PearLiteEQ_COMP_SUBTYPE
#define COMP_MANUF PearLiteEQ_COMP_MANF
#define VERSION kPearLiteEQVersion
#define NAME "Airwindows: PearLiteEQ"
#define DESCRIPTION "PearLiteEQ AU"
#define ENTRY_POINT "PearLiteEQEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,128 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* PearLiteEQ */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
292,
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 = 781017104;
PBXWorkspaceStateSaveDate = 781017104;
};
perUserProjectItems = {
8BDF8B8A2E8D61F100833D3C /* PlistBookmark */ = 8BDF8B8A2E8D61F100833D3C /* PlistBookmark */;
8BDF8B902E8D623C00833D3C /* PlistBookmark */ = 8BDF8B902E8D623C00833D3C /* PlistBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* PearLiteEQ.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {957, 4788}}";
sepNavSelRange = "{11322, 0}";
sepNavVisRange = "{9997, 1388}";
sepNavWindowFrame = "{{37, 38}, {963, 840}}";
};
};
8BA05A690720730100365D66 /* PearLiteEQVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2913, 0}";
sepNavVisRange = "{968, 2008}";
sepNavWindowFrame = "{{15, 38}, {963, 840}}";
};
};
8BC6025B073B072D006C4272 /* PearLiteEQ.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 3888}}";
sepNavSelRange = "{5860, 0}";
sepNavVisRange = "{5412, 576}";
sepNavWindowFrame = "{{15, 38}, {963, 840}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8BDF8B8A2E8D61F100833D3C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/PearLiteEQ/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8BDF8B902E8D623C00833D3C /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/PearLiteEQ/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8D01CCC60486CAD60068D4B7 /* PearLiteEQ */ = {
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 /* PearLiteEQ.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* PearLiteEQ.r */; };
8BA05A6B0720730100365D66 /* PearLiteEQ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* PearLiteEQ.cpp */; };
8BA05A6E0720730100365D66 /* PearLiteEQVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* PearLiteEQVersion.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 /* PearLiteEQ.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* PearLiteEQ.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 /* PearLiteEQ.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PearLiteEQ.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* PearLiteEQ.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = PearLiteEQ.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* PearLiteEQ.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = PearLiteEQ.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* PearLiteEQVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PearLiteEQVersion.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 /* PearLiteEQ.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PearLiteEQ.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* PearLiteEQ.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PearLiteEQ.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 /* PearLiteEQ */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = PearLiteEQ;
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 /* PearLiteEQ.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* PearLiteEQ.h */,
8BA05A660720730100365D66 /* PearLiteEQ.cpp */,
8BA05A670720730100365D66 /* PearLiteEQ.exp */,
8BA05A680720730100365D66 /* PearLiteEQ.r */,
8BA05A690720730100365D66 /* PearLiteEQVersion.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 /* PearLiteEQVersion.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 /* PearLiteEQ.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 /* PearLiteEQ */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "PearLiteEQ" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = PearLiteEQ;
productInstallPath = "$(HOME)/Library/Bundles";
productName = PearLiteEQ;
productReference = 8D01CCD20486CAD60068D4B7 /* PearLiteEQ.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 "PearLiteEQ" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* PearLiteEQ */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* PearLiteEQ */,
);
};
/* 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 /* PearLiteEQ.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* PearLiteEQ.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 = PearLiteEQ.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 = PearLiteEQ;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = PearLiteEQ.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 = PearLiteEQ;
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 "PearLiteEQ" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "PearLiteEQ" */ = {
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: PearLiteEQVersion.h
*
* Version: 1.0
*
* Created: 10/1/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 __PearLiteEQVersion_h__
#define __PearLiteEQVersion_h__
#ifdef DEBUG
#define kPearLiteEQVersion 0xFFFFFFFF
#else
#define kPearLiteEQVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define PearLiteEQ_COMP_MANF 'Dthr'
#define PearLiteEQ_COMP_SUBTYPE 'peap'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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>

Binary file not shown.

28
plugins/MacAU/Slew4/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>

363
plugins/MacAU/Slew4/Slew4.cpp Executable file
View file

@ -0,0 +1,363 @@
/*
* File: Slew4.cpp
*
* Version: 1.0
*
* Created: 9/24/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.
*
*/
/*=============================================================================
Slew4.cpp
=============================================================================*/
#include "Slew4.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(Slew4)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::Slew4
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Slew4::Slew4(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Slew4::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Slew4::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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Slew4::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Slew4::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Slew4::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Slew4::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____Slew4EffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::Slew4Kernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Slew4::Slew4Kernel::Reset()
{
for(int x = 0; x < 23; x++) {
for (int y = 0; y < 11; y++) slew[x][y] = 0.0;
}
slewCount = 0;
sustainSlew = 0.0;
secondSample = 0.0;
thirdSample = 0.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Slew4::Slew4Kernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Slew4::Slew4Kernel::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();
double compresity = pow(GetParameter( kParam_A )*0.95,2.0)*8.0*overallscale;
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
double drySample = inputSample;
sustainSlew += fabs((inputSample-secondSample)-(secondSample-thirdSample));
sustainSlew *= 0.9; inputSample = thirdSample; //two sample lookahead
double depthAmt = fmin(sin(fmin(sustainSlew,M_PI_2))*compresity,9.0);
int z = floor(depthAmt);
double depthTrim = depthAmt - (double)z;
for (int y = 0; y < z; y++) {
switch (y) {
case 0:
slew[slewCount%2][y] = inputSample;
inputSample = (slew[0][y] + slew[1][y]) * 0.5;
break;
case 1:
slew[slewCount%4][y] = inputSample;
inputSample = (slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]) * 0.25;
break;
case 2:
slew[slewCount%6][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y];
inputSample += slew[3][y]+slew[4][y]+slew[5][y];
inputSample *= 0.1666666666;
break;
case 3:
slew[slewCount%8][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y];
inputSample += slew[4][y]+slew[5][y]+slew[6][y]+slew[7][y];
inputSample *= 0.125;
break;
case 4:
slew[slewCount%10][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y];
inputSample += slew[5][y]+slew[6][y]+slew[7][y]+slew[8][y]+slew[9][y];
inputSample *= 0.1;
break;
case 5:
slew[slewCount%12][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y]+slew[5][y];
inputSample += slew[6][y]+slew[7][y]+slew[8][y]+slew[9][y]+slew[10][y]+slew[11][y];
inputSample *= 0.0833333333;
break;
case 6:
slew[slewCount%14][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y]+slew[5][y]+slew[6][y];
inputSample += slew[7][y]+slew[8][y]+slew[9][y]+slew[10][y]+slew[11][y]+slew[12][y]+slew[13][y];
inputSample *= 0.0714285;
break;
case 7:
slew[slewCount%16][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y]+slew[5][y]+slew[6][y]+slew[7][y];
inputSample += slew[8][y]+slew[9][y]+slew[10][y]+slew[11][y]+slew[12][y]+slew[13][y]+slew[14][y]+slew[15][y];
inputSample *= 0.0625;
break;
case 8:
slew[slewCount%18][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y]+slew[5][y]+slew[6][y]+slew[7][y]+slew[8][y];
inputSample += slew[9][y]+slew[10][y]+slew[11][y]+slew[12][y]+slew[13][y]+slew[14][y]+slew[15][y]+slew[16][y]+slew[17][y];
inputSample *= 0.05555555;
break;
case 9:
slew[slewCount%20][y] = inputSample;
inputSample = slew[0][y]+slew[1][y]+slew[2][y]+slew[3][y]+slew[4][y]+slew[5][y]+slew[6][y]+slew[7][y]+slew[8][y]+slew[9][y];
inputSample += slew[10][y]+slew[11][y]+slew[12][y]+slew[13][y]+slew[14][y]+slew[15][y]+slew[16][y]+slew[17][y]+slew[18][y]+slew[19][y];
inputSample *= 0.05;
break;
} //generate sets of rectangular window averages to layer
} //all of which have a 'node' (silence) at Nyquist to combine
double remainderSample = 0.0;
switch (z) {
case 0:
slew[slewCount%2][z] = inputSample;
remainderSample = (slew[0][z] + slew[1][z]) * 0.5;
break;
case 1:
slew[slewCount%4][z] = inputSample;
remainderSample = (slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]) * 0.25;
break;
case 2:
slew[slewCount%6][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z];
remainderSample += slew[3][z]+slew[4][z]+slew[5][z];
remainderSample *= 0.1666666666;
break;
case 3:
slew[slewCount%8][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z];
remainderSample += slew[4][z]+slew[5][z]+slew[6][z]+slew[7][z];
remainderSample *= 0.125;
break;
case 4:
slew[slewCount%10][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z];
remainderSample += slew[5][z]+slew[6][z]+slew[7][z]+slew[8][z]+slew[9][z];
remainderSample *= 0.1;
break;
case 5:
slew[slewCount%12][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z]+slew[5][z];
remainderSample += slew[6][z]+slew[7][z]+slew[8][z]+slew[9][z]+slew[10][z]+slew[11][z];
remainderSample *= 0.0833333333;
break;
case 6:
slew[slewCount%14][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z]+slew[5][z]+slew[6][z];
remainderSample += slew[7][z]+slew[8][z]+slew[9][z]+slew[10][z]+slew[11][z]+slew[12][z]+slew[13][z];
remainderSample *= 0.0714285;
break;
case 7:
slew[slewCount%16][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z]+slew[5][z]+slew[6][z]+slew[7][z];
remainderSample += slew[8][z]+slew[9][z]+slew[10][z]+slew[11][z]+slew[12][z]+slew[13][z]+slew[14][z]+slew[15][z];
remainderSample *= 0.0625;
break;
case 8:
slew[slewCount%18][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z]+slew[5][z]+slew[6][z]+slew[7][z]+slew[8][z];
remainderSample += slew[9][z]+slew[10][z]+slew[11][z]+slew[12][z]+slew[13][z]+slew[14][z]+slew[15][z]+slew[16][z]+slew[17][z];
remainderSample *= 0.0555555;
break;
case 9:
slew[slewCount%20][z] = inputSample;
remainderSample = slew[0][z]+slew[1][z]+slew[2][z]+slew[3][z]+slew[4][z]+slew[5][z]+slew[6][z]+slew[7][z]+slew[8][z]+slew[9][z];
remainderSample += slew[10][z]+slew[11][z]+slew[12][z]+slew[13][z]+slew[14][z]+slew[15][z]+slew[16][z]+slew[17][z]+slew[18][z]+slew[19][z];
remainderSample *= 0.05;
break;
} //generate the final fractional amount
for (int y = z+1; y < 9; y++) {
switch (y) {
case 0:
slew[slewCount%2][y] = inputSample; break;
case 1:
slew[slewCount%4][y] = inputSample; break;
case 2:
slew[slewCount%6][y] = inputSample; break;
case 3:
slew[slewCount%8][y] = inputSample; break;
case 4:
slew[slewCount%10][y] = inputSample; break;
case 5:
slew[slewCount%12][y] = inputSample; break;
case 6:
slew[slewCount%14][y] = inputSample; break;
case 7:
slew[slewCount%16][y] = inputSample; break;
case 8:
slew[slewCount%18][y] = inputSample; break;
case 9:
slew[slewCount%20][y] = inputSample; break;
}
} //clean up the little buffers when not being actively used
slewCount++; if (slewCount > 619315200) slewCount = 0;
thirdSample = secondSample; secondSample = drySample;
inputSample = (inputSample*(1.0-depthTrim))+(remainderSample*depthTrim);
//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;
}
}

1
plugins/MacAU/Slew4/Slew4.exp Executable file
View file

@ -0,0 +1 @@
_Slew4Entry

141
plugins/MacAU/Slew4/Slew4.h Executable file
View file

@ -0,0 +1,141 @@
/*
* File: Slew4.h
*
* Version: 1.0
*
* Created: 9/24/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 "AUEffectBase.h"
#include "Slew4Version.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Slew4_h__
#define __Slew4_h__
#pragma mark ____Slew4 Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static CFStringRef kParameterAName = CFSTR("Compres");
enum {
kParam_A =0,
//Add your parameters here...
kNumberOfParameters=1
};
#pragma mark ____Slew4
class Slew4 : public AUEffectBase
{
public:
Slew4(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Slew4 () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new Slew4Kernel(this); }
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kSlew4Version; }
protected:
class Slew4Kernel : public AUKernelBase // most of the real work happens here
{
public:
Slew4Kernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
double slew[24][12];
int slewCount;
double sustainSlew;
double secondSample;
double thirdSample;
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

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

@ -0,0 +1,61 @@
/*
* File: Slew4.r
*
* Version: 1.0
*
* Created: 9/24/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 "Slew4Version.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Slew4 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slew4~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Slew4
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Slew4_COMP_SUBTYPE
#define COMP_MANUF Slew4_COMP_MANF
#define VERSION kSlew4Version
#define NAME "Airwindows: Slew4"
#define DESCRIPTION "Slew4 AU"
#define ENTRY_POINT "Slew4Entry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,133 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Slew4 */;
breakpoints = (
);
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
300,
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 = 780614087;
PBXWorkspaceStateSaveDate = 780614087;
};
perUserProjectItems = {
8B4F3D932E8744DD007FA9AE /* PlistBookmark */ = 8B4F3D932E8744DD007FA9AE /* PlistBookmark */;
8B4F3D942E8744DD007FA9AE /* PBXBookmark */ = 8B4F3D942E8744DD007FA9AE /* PBXBookmark */;
8B4F3D952E8744DD007FA9AE /* PBXTextBookmark */ = 8B4F3D952E8744DD007FA9AE /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B4F3D932E8744DD007FA9AE /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/Slew4/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8B4F3D942E8744DD007FA9AE /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* Slew4.cpp */;
};
8B4F3D952E8744DD007FA9AE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Slew4.cpp */;
name = "Slew4.cpp: 322";
rLen = 0;
rLoc = 14029;
rType = 0;
vrLen = 167;
vrLoc = 13954;
};
8BA05A660720730100365D66 /* Slew4.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1407, 6570}}";
sepNavSelRange = "{14029, 0}";
sepNavVisRange = "{13954, 167}";
sepNavWindowFrame = "{{17, 80}, {1219, 785}}";
};
};
8BA05A690720730100365D66 /* Slew4Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1084, 1062}}";
sepNavSelRange = "{2878, 0}";
sepNavVisRange = "{1065, 1876}";
sepNavWindowFrame = "{{15, 54}, {1131, 819}}";
};
};
8BC6025B073B072D006C4272 /* Slew4.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2538}}";
sepNavSelRange = "{4941, 0}";
sepNavVisRange = "{2001, 1059}";
sepNavWindowFrame = "{{61, 59}, {1131, 819}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* Slew4 */ = {
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 /* Slew4.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Slew4.r */; };
8BA05A6B0720730100365D66 /* Slew4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Slew4.cpp */; };
8BA05A6E0720730100365D66 /* Slew4Version.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* Slew4Version.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 /* Slew4.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Slew4.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 /* Slew4.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Slew4.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Slew4.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Slew4.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Slew4.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Slew4.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* Slew4Version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Slew4Version.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 /* Slew4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Slew4.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Slew4.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Slew4.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 /* Slew4 */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Slew4;
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 /* Slew4.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Slew4.h */,
8BA05A660720730100365D66 /* Slew4.cpp */,
8BA05A670720730100365D66 /* Slew4.exp */,
8BA05A680720730100365D66 /* Slew4.r */,
8BA05A690720730100365D66 /* Slew4Version.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 /* Slew4Version.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 /* Slew4.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 /* Slew4 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Slew4" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = Slew4;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Slew4;
productReference = 8D01CCD20486CAD60068D4B7 /* Slew4.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 "Slew4" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* Slew4 */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Slew4 */,
);
};
/* 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 /* Slew4.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* Slew4.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 = Slew4.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 = Slew4;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = Slew4.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 = Slew4;
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 "Slew4" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Slew4" */ = {
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: Slew4Version.h
*
* Version: 1.0
*
* Created: 9/24/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 __Slew4Version_h__
#define __Slew4Version_h__
#ifdef DEBUG
#define kSlew4Version 0xFFFFFFFF
#else
#define kSlew4Version 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Slew4_COMP_MANF 'Dthr'
#define Slew4_COMP_SUBTYPE 'slw4'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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,331 @@
/*
* File: Dynamics2.cpp
*
* Version: 1.0
*
* Created: 9/20/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.
*
*/
/*=============================================================================
Dynamics2.cpp
=============================================================================*/
#include "Dynamics2.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, Dynamics2)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::Dynamics2
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dynamics2::Dynamics2(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
SetParameter(kParam_D, kDefaultValue_ParamD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::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;
case kParam_D:
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// state that plugin supports only stereo-in/stereo-out processing
UInt32 Dynamics2::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Dynamics2::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____Dynamics2EffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::Dynamics2Kernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Dynamics2::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Dynamics2::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus Dynamics2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
const AudioBufferList & inBuffer,
AudioBufferList & outBuffer,
UInt32 inFramesToProcess)
{
Float32 * inputL = (Float32*)(inBuffer.mBuffers[0].mData);
Float32 * inputR = (Float32*)(inBuffer.mBuffers[1].mData);
Float32 * outputL = (Float32*)(outBuffer.mBuffers[0].mData);
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
double bezCThresh = pow(1.0-GetParameter( kParam_A ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_B ), 8.0) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_C ),12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(GetParameter( kParam_D ),4.0),sqrt(bezCThresh+1.0));
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
if (fmax(fabs(inputSampleL),fabs(inputSampleR)) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
if (bezMaxF < gate) bezCompF[bez_SampR] = bezMaxF/gate; //note: SampR is a control voltage,
if (bezCompF[bez_SampR]<gate) bezCompF[bez_SampR] = 0.0; //not a bipolar audio signal
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
if (bezCompS[bez_SampR]<gate) bezCompS[bez_SampR] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
if (bezGate < 1.0 && gate > 0.0) {inputSampleL *= bezGate; inputSampleR *= bezGate;}
//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
*outputL = inputSampleL;
*outputR = inputSampleR;
//direct stereo out
inputL += 1;
inputR += 1;
outputL += 1;
outputR += 1;
}
return noErr;
}

View file

@ -0,0 +1,2 @@
_Dynamics2Entry
_Dynamics2Factory

View file

@ -0,0 +1,148 @@
/*
* File: Dynamics2.h
*
* Version: 1.0
*
* Created: 9/20/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 "AUEffectBase.h"
#include "Dynamics2Version.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Dynamics2_h__
#define __Dynamics2_h__
#pragma mark ____Dynamics2 Parameters
// parameters
static const float kDefaultValue_ParamA = 1.0;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 0.0;
static CFStringRef kParameterAName = CFSTR("Thresh");
static CFStringRef kParameterBName = CFSTR("Attack");
static CFStringRef kParameterCName = CFSTR("Release");
static CFStringRef kParameterDName = CFSTR("Gate");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=4
};
#pragma mark ____Dynamics2
class Dynamics2 : public AUEffectBase
{
public:
Dynamics2(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Dynamics2 () { delete mDebugDispatcher; }
#endif
virtual ComponentResult Reset(AudioUnitScope inScope, AudioUnitElement inElement);
virtual OSStatus ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlags,
const AudioBufferList & inBuffer, AudioBufferList & outBuffer,
UInt32 inFramesToProcess);
virtual UInt32 SupportedNumChannels(const AUChannelInfo ** outInfo);
virtual ComponentResult GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings);
virtual ComponentResult GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo);
virtual ComponentResult GetPropertyInfo(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable );
virtual ComponentResult GetProperty(AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData);
virtual ComponentResult Initialize();
virtual bool SupportsTail () { return true; }
virtual Float64 GetTailTime() {return (1.0/GetSampleRate())*0.0;} //in SECONDS! gsr * a number = in samples
virtual Float64 GetLatency() {return (1.0/GetSampleRate())*0.0;} // in SECONDS! gsr * a number = in samples
/*! @method Version */
virtual ComponentResult Version() { return kDynamics2Version; }
private:
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: Dynamics2.r
*
* Version: 1.0
*
* Created: 9/20/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 "Dynamics2Version.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Dynamics2 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dynamics2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Dynamics2
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Dynamics2_COMP_SUBTYPE
#define COMP_MANUF Dynamics2_COMP_MANF
#define VERSION kDynamics2Version
#define NAME "Airwindows: Dynamics2"
#define DESCRIPTION "Dynamics2 AU"
#define ENTRY_POINT "Dynamics2Entry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,147 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* Dynamics2 */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
364,
20,
48,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
188,
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 = 780618148;
PBXWorkspaceStateSaveDate = 780618148;
};
perUserProjectItems = {
8B23680F2E87162300CA47D4 /* PBXTextBookmark */ = 8B23680F2E87162300CA47D4 /* PBXTextBookmark */;
8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */ = 8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */;
8B4F3DD12E874B19007FA9AE /* PBXBookmark */ = 8B4F3DD12E874B19007FA9AE /* PBXBookmark */;
8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */ = 8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B23680F2E87162300CA47D4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* Dynamics2.h */;
name = "Dynamics2.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 42;
vrLoc = 0;
};
8B4F3DD02E874B19007FA9AE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* Dynamics2Version.h */;
name = "Dynamics2Version.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 128;
vrLoc = 2780;
};
8B4F3DD12E874B19007FA9AE /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */;
};
8B4F3DD22E874B19007FA9AE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */;
name = "Dynamics2.cpp: 308";
rLen = 0;
rLoc = 14433;
rType = 0;
vrLen = 303;
vrLoc = 13043;
};
8BA05A660720730100365D66 /* Dynamics2.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 5868}}";
sepNavSelRange = "{14433, 0}";
sepNavVisRange = "{13043, 303}";
sepNavWindowFrame = "{{10, 81}, {1250, 767}}";
};
};
8BA05A690720730100365D66 /* Dynamics2Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1306, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{1172, 1797}";
sepNavWindowFrame = "{{15, 70}, {1353, 803}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* Dynamics2.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2664}}";
sepNavSelRange = "{5071, 334}";
sepNavVisRange = "{2727, 906}";
sepNavWindowFrame = "{{38, 79}, {915, 773}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* Dynamics2 */ = {
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 */
8B3B42B32E8AF84900F1D202 /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B422B2E8AF84900F1D202 /* CAExtAudioFile.h */; };
8B3B42B42E8AF84900F1D202 /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B422C2E8AF84900F1D202 /* CACFMachPort.h */; };
8B3B42B52E8AF84900F1D202 /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B422D2E8AF84900F1D202 /* CABool.h */; };
8B3B42B62E8AF84900F1D202 /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B422E2E8AF84900F1D202 /* CAComponent.cpp */; };
8B3B42B72E8AF84900F1D202 /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B422F2E8AF84900F1D202 /* CADebugger.h */; };
8B3B42B82E8AF84900F1D202 /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42302E8AF84900F1D202 /* CACFNumber.cpp */; };
8B3B42B92E8AF84A00F1D202 /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42312E8AF84900F1D202 /* CAGuard.h */; };
8B3B42BA2E8AF84A00F1D202 /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42322E8AF84900F1D202 /* CAAtomic.h */; };
8B3B42BB2E8AF84A00F1D202 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42332E8AF84900F1D202 /* CAStreamBasicDescription.h */; };
8B3B42BC2E8AF84A00F1D202 /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42342E8AF84900F1D202 /* CACFObject.h */; };
8B3B42BD2E8AF84A00F1D202 /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42352E8AF84900F1D202 /* CAStreamRangedDescription.h */; };
8B3B42BE2E8AF84A00F1D202 /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42362E8AF84900F1D202 /* CATokenMap.h */; };
8B3B42BF2E8AF84A00F1D202 /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42372E8AF84900F1D202 /* CAComponent.h */; };
8B3B42C02E8AF84A00F1D202 /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42382E8AF84900F1D202 /* CAAudioBufferList.h */; };
8B3B42C12E8AF84A00F1D202 /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42392E8AF84900F1D202 /* CAAudioUnit.h */; };
8B3B42C22E8AF84A00F1D202 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B423A2E8AF84900F1D202 /* CAAUParameter.h */; };
8B3B42C32E8AF84A00F1D202 /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B423B2E8AF84900F1D202 /* CAException.h */; };
8B3B42C42E8AF84A00F1D202 /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B423C2E8AF84900F1D202 /* CAAUProcessor.cpp */; };
8B3B42C52E8AF84A00F1D202 /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B423D2E8AF84900F1D202 /* CAAUProcessor.h */; };
8B3B42C62E8AF84A00F1D202 /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B423E2E8AF84900F1D202 /* CAProcess.h */; };
8B3B42C72E8AF84A00F1D202 /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B423F2E8AF84900F1D202 /* CACFDictionary.h */; };
8B3B42C82E8AF84A00F1D202 /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42402E8AF84900F1D202 /* CAPThread.h */; };
8B3B42C92E8AF84A00F1D202 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42412E8AF84900F1D202 /* CAAUParameter.cpp */; };
8B3B42CA2E8AF84A00F1D202 /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42422E8AF84900F1D202 /* CAAudioTimeStamp.h */; };
8B3B42CB2E8AF84A00F1D202 /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42432E8AF84900F1D202 /* CAFilePathUtils.cpp */; };
8B3B42CC2E8AF84A00F1D202 /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42442E8AF84900F1D202 /* CAAudioValueRange.h */; };
8B3B42CD2E8AF84A00F1D202 /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42452E8AF84900F1D202 /* CAVectorUnitTypes.h */; };
8B3B42CE2E8AF84A00F1D202 /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42462E8AF84900F1D202 /* CAAudioChannelLayoutObject.cpp */; };
8B3B42CF2E8AF84A00F1D202 /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42472E8AF84900F1D202 /* CAGuard.cpp */; };
8B3B42D02E8AF84A00F1D202 /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42482E8AF84900F1D202 /* CACFNumber.h */; };
8B3B42D12E8AF84A00F1D202 /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42492E8AF84900F1D202 /* CACFDistributedNotification.cpp */; };
8B3B42D22E8AF84A00F1D202 /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B424A2E8AF84900F1D202 /* CACFString.h */; };
8B3B42D32E8AF84A00F1D202 /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B424B2E8AF84900F1D202 /* CAAUMIDIMapManager.cpp */; };
8B3B42D42E8AF84A00F1D202 /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B424C2E8AF84900F1D202 /* CAComponentDescription.cpp */; };
8B3B42D52E8AF84A00F1D202 /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B424D2E8AF84900F1D202 /* CAHostTimeBase.h */; };
8B3B42D62E8AF84A00F1D202 /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B424E2E8AF84900F1D202 /* CADebugMacros.cpp */; };
8B3B42D72E8AF84A00F1D202 /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B424F2E8AF84900F1D202 /* CAAudioFileFormats.h */; };
8B3B42D82E8AF84A00F1D202 /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42502E8AF84900F1D202 /* CAAUMIDIMapManager.h */; };
8B3B42D92E8AF84A00F1D202 /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42512E8AF84900F1D202 /* CACFDictionary.cpp */; };
8B3B42DA2E8AF84A00F1D202 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42522E8AF84900F1D202 /* CAMutex.h */; };
8B3B42DB2E8AF84A00F1D202 /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42532E8AF84900F1D202 /* CACFString.cpp */; };
8B3B42DC2E8AF84A00F1D202 /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42542E8AF84900F1D202 /* CASettingsStorage.h */; };
8B3B42DD2E8AF84A00F1D202 /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42552E8AF84900F1D202 /* CADebugPrintf.h */; };
8B3B42DE2E8AF84A00F1D202 /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42562E8AF84900F1D202 /* CAXException.cpp */; };
8B3B42DF2E8AF84A00F1D202 /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42572E8AF84900F1D202 /* CAAUMIDIMap.h */; };
8B3B42E02E8AF84A00F1D202 /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42582E8AF84900F1D202 /* AUParamInfo.h */; };
8B3B42E12E8AF84A00F1D202 /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42592E8AF84900F1D202 /* CABitOperations.h */; };
8B3B42E22E8AF84A00F1D202 /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B425A2E8AF84900F1D202 /* CACFPreferences.cpp */; };
8B3B42E32E8AF84A00F1D202 /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B425B2E8AF84900F1D202 /* CABundleLocker.h */; };
8B3B42E42E8AF84A00F1D202 /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B425C2E8AF84900F1D202 /* CAPropertyAddress.h */; };
8B3B42E52E8AF84A00F1D202 /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B425D2E8AF84900F1D202 /* CAXException.h */; };
8B3B42E62E8AF84A00F1D202 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B425E2E8AF84900F1D202 /* CAAudioChannelLayout.cpp */; };
8B3B42E72E8AF84A00F1D202 /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B425F2E8AF84900F1D202 /* CAThreadSafeList.h */; };
8B3B42E82E8AF84A00F1D202 /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42602E8AF84900F1D202 /* CAAudioUnitOutputCapturer.h */; };
8B3B42E92E8AF84A00F1D202 /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42612E8AF84900F1D202 /* AUParamInfo.cpp */; };
8B3B42EA2E8AF84A00F1D202 /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42622E8AF84900F1D202 /* CASharedLibrary.cpp */; };
8B3B42EB2E8AF84A00F1D202 /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42632E8AF84900F1D202 /* CAAUMIDIMap.cpp */; };
8B3B42EC2E8AF84A00F1D202 /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42642E8AF84900F1D202 /* CALogMacros.h */; };
8B3B42ED2E8AF84A00F1D202 /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42652E8AF84900F1D202 /* CACFMessagePort.cpp */; };
8B3B42EE2E8AF84A00F1D202 /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42662E8AF84900F1D202 /* CARingBuffer.h */; };
8B3B42EF2E8AF84A00F1D202 /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42672E8AF84900F1D202 /* AUOutputBL.cpp */; };
8B3B42F02E8AF84A00F1D202 /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42682E8AF84900F1D202 /* CABufferList.h */; };
8B3B42F12E8AF84A00F1D202 /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42692E8AF84900F1D202 /* CASharedLibrary.h */; };
8B3B42F22E8AF84A00F1D202 /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B426A2E8AF84900F1D202 /* CACFData.h */; };
8B3B42F32E8AF84A00F1D202 /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B426B2E8AF84900F1D202 /* CAStreamRangedDescription.cpp */; };
8B3B42F42E8AF84A00F1D202 /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B426C2E8AF84900F1D202 /* CAPThread.cpp */; };
8B3B42F52E8AF84A00F1D202 /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B426D2E8AF84900F1D202 /* CAAutoDisposer.h */; };
8B3B42F62E8AF84A00F1D202 /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B426E2E8AF84900F1D202 /* CACFPreferences.h */; };
8B3B42F72E8AF84A00F1D202 /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B426F2E8AF84900F1D202 /* CAVectorUnit.cpp */; };
8B3B42F82E8AF84A00F1D202 /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42702E8AF84900F1D202 /* CAComponentDescription.h */; };
8B3B42F92E8AF84A00F1D202 /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42712E8AF84900F1D202 /* CADebugMacros.h */; };
8B3B42FA2E8AF84A00F1D202 /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42722E8AF84900F1D202 /* AUOutputBL.h */; };
8B3B42FB2E8AF84A00F1D202 /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42732E8AF84900F1D202 /* CADebugPrintf.cpp */; };
8B3B42FC2E8AF84A00F1D202 /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42742E8AF84900F1D202 /* CARingBuffer.cpp */; };
8B3B42FD2E8AF84A00F1D202 /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42752E8AF84900F1D202 /* CACFPlugIn.h */; };
8B3B42FE2E8AF84A00F1D202 /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42762E8AF84900F1D202 /* CASettingsStorage.cpp */; };
8B3B42FF2E8AF84A00F1D202 /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42772E8AF84900F1D202 /* CAMixMap.h */; };
8B3B43002E8AF84A00F1D202 /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42782E8AF84900F1D202 /* CACFDistributedNotification.h */; };
8B3B43012E8AF84A00F1D202 /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42792E8AF84900F1D202 /* CAFilePathUtils.h */; };
8B3B43022E8AF84A00F1D202 /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B427A2E8AF84900F1D202 /* CATink.h */; };
8B3B43032E8AF84A00F1D202 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B427B2E8AF84900F1D202 /* CAStreamBasicDescription.cpp */; };
8B3B43042E8AF84A00F1D202 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B427C2E8AF84900F1D202 /* CAAudioChannelLayout.h */; };
8B3B43052E8AF84A00F1D202 /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B427D2E8AF84900F1D202 /* CAProcess.cpp */; };
8B3B43062E8AF84A00F1D202 /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B427E2E8AF84900F1D202 /* CAHostTimeBase.cpp */; };
8B3B43072E8AF84A00F1D202 /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B427F2E8AF84900F1D202 /* CAPersistence.cpp */; };
8B3B43082E8AF84A00F1D202 /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42802E8AF84900F1D202 /* CAAudioBufferList.cpp */; };
8B3B43092E8AF84A00F1D202 /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42812E8AF84900F1D202 /* CAAudioTimeStamp.cpp */; };
8B3B430A2E8AF84A00F1D202 /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42822E8AF84900F1D202 /* CAVectorUnit.h */; };
8B3B430B2E8AF84A00F1D202 /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42832E8AF84900F1D202 /* CAByteOrder.h */; };
8B3B430C2E8AF84A00F1D202 /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42842E8AF84900F1D202 /* CACFArray.h */; };
8B3B430D2E8AF84A00F1D202 /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42852E8AF84900F1D202 /* CAAtomicStack.h */; };
8B3B430E2E8AF84A00F1D202 /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42862E8AF84900F1D202 /* CAReferenceCounted.h */; };
8B3B430F2E8AF84A00F1D202 /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42872E8AF84900F1D202 /* CACFMachPort.cpp */; };
8B3B43102E8AF84A00F1D202 /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42882E8AF84900F1D202 /* CABufferList.cpp */; };
8B3B43112E8AF84A00F1D202 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42892E8AF84900F1D202 /* CAMutex.cpp */; };
8B3B43122E8AF84A00F1D202 /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B428A2E8AF84900F1D202 /* CADebugger.cpp */; };
8B3B43132E8AF84A00F1D202 /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B428B2E8AF84900F1D202 /* CABundleLocker.cpp */; };
8B3B43142E8AF84A00F1D202 /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B428C2E8AF84900F1D202 /* CAAudioFileFormats.cpp */; };
8B3B43152E8AF84A00F1D202 /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B428D2E8AF84900F1D202 /* CAMath.h */; };
8B3B43162E8AF84A00F1D202 /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B428E2E8AF84900F1D202 /* CACFArray.cpp */; };
8B3B43172E8AF84A00F1D202 /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B428F2E8AF84900F1D202 /* CACFMessagePort.h */; };
8B3B43182E8AF84A00F1D202 /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42902E8AF84900F1D202 /* CAAudioValueRange.cpp */; };
8B3B43192E8AF84A00F1D202 /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42912E8AF84900F1D202 /* CAAudioUnit.cpp */; };
8B3B431A2E8AF84A00F1D202 /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42952E8AF84900F1D202 /* AUViewLocalizedStringKeys.h */; };
8B3B431B2E8AF84A00F1D202 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42972E8AF84900F1D202 /* ComponentBase.cpp */; };
8B3B431C2E8AF84A00F1D202 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42982E8AF84900F1D202 /* AUScopeElement.cpp */; };
8B3B431D2E8AF84A00F1D202 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42992E8AF84900F1D202 /* ComponentBase.h */; };
8B3B431E2E8AF84A00F1D202 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B429A2E8AF84900F1D202 /* AUBase.cpp */; };
8B3B431F2E8AF84A00F1D202 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B429B2E8AF84900F1D202 /* AUInputElement.h */; };
8B3B43202E8AF84A00F1D202 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B429C2E8AF84900F1D202 /* AUBase.h */; };
8B3B43212E8AF84A00F1D202 /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B429D2E8AF84900F1D202 /* AUPlugInDispatch.h */; };
8B3B43222E8AF84A00F1D202 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B429E2E8AF84900F1D202 /* AUDispatch.h */; };
8B3B43232E8AF84A00F1D202 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B429F2E8AF84900F1D202 /* AUOutputElement.cpp */; };
8B3B43252E8AF84A00F1D202 /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42A12E8AF84900F1D202 /* AUPlugInDispatch.cpp */; };
8B3B43262E8AF84A00F1D202 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42A22E8AF84900F1D202 /* AUOutputElement.h */; };
8B3B43272E8AF84A00F1D202 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42A32E8AF84900F1D202 /* AUDispatch.cpp */; };
8B3B43282E8AF84A00F1D202 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42A42E8AF84900F1D202 /* AUScopeElement.h */; };
8B3B43292E8AF84A00F1D202 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42A52E8AF84900F1D202 /* AUInputElement.cpp */; };
8B3B432A2E8AF84A00F1D202 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42A72E8AF84900F1D202 /* AUEffectBase.cpp */; };
8B3B432B2E8AF84A00F1D202 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42A82E8AF84900F1D202 /* AUEffectBase.h */; };
8B3B432C2E8AF84A00F1D202 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42AA2E8AF84900F1D202 /* AUTimestampGenerator.h */; };
8B3B432D2E8AF84A00F1D202 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42AB2E8AF84900F1D202 /* AUBaseHelper.cpp */; };
8B3B432E2E8AF84A00F1D202 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42AC2E8AF84900F1D202 /* AUSilentTimeout.h */; };
8B3B432F2E8AF84A00F1D202 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42AD2E8AF84900F1D202 /* AUInputFormatConverter.h */; };
8B3B43302E8AF84A00F1D202 /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42AE2E8AF84900F1D202 /* AUTimestampGenerator.cpp */; };
8B3B43312E8AF84A00F1D202 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B3B42AF2E8AF84900F1D202 /* AUBuffer.cpp */; };
8B3B43322E8AF84A00F1D202 /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42B02E8AF84900F1D202 /* AUMIDIDefs.h */; };
8B3B43332E8AF84A00F1D202 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42B12E8AF84900F1D202 /* AUBuffer.h */; };
8B3B43342E8AF84A00F1D202 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3B42B22E8AF84900F1D202 /* AUBaseHelper.h */; };
8BA05A6B0720730100365D66 /* Dynamics2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Dynamics2.cpp */; };
8BA05A6E0720730100365D66 /* Dynamics2Version.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* Dynamics2Version.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 */; };
8BC6025C073B072D006C4272 /* Dynamics2.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Dynamics2.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
8B3B422B2E8AF84900F1D202 /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
8B3B422C2E8AF84900F1D202 /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
8B3B422D2E8AF84900F1D202 /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
8B3B422E2E8AF84900F1D202 /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
8B3B422F2E8AF84900F1D202 /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
8B3B42302E8AF84900F1D202 /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
8B3B42312E8AF84900F1D202 /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
8B3B42322E8AF84900F1D202 /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
8B3B42332E8AF84900F1D202 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8B3B42342E8AF84900F1D202 /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
8B3B42352E8AF84900F1D202 /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
8B3B42362E8AF84900F1D202 /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
8B3B42372E8AF84900F1D202 /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
8B3B42382E8AF84900F1D202 /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
8B3B42392E8AF84900F1D202 /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
8B3B423A2E8AF84900F1D202 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8B3B423B2E8AF84900F1D202 /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
8B3B423C2E8AF84900F1D202 /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
8B3B423D2E8AF84900F1D202 /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
8B3B423E2E8AF84900F1D202 /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
8B3B423F2E8AF84900F1D202 /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
8B3B42402E8AF84900F1D202 /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
8B3B42412E8AF84900F1D202 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8B3B42422E8AF84900F1D202 /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
8B3B42432E8AF84900F1D202 /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
8B3B42442E8AF84900F1D202 /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
8B3B42452E8AF84900F1D202 /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
8B3B42462E8AF84900F1D202 /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
8B3B42472E8AF84900F1D202 /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
8B3B42482E8AF84900F1D202 /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
8B3B42492E8AF84900F1D202 /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
8B3B424A2E8AF84900F1D202 /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
8B3B424B2E8AF84900F1D202 /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
8B3B424C2E8AF84900F1D202 /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
8B3B424D2E8AF84900F1D202 /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
8B3B424E2E8AF84900F1D202 /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
8B3B424F2E8AF84900F1D202 /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
8B3B42502E8AF84900F1D202 /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
8B3B42512E8AF84900F1D202 /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
8B3B42522E8AF84900F1D202 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8B3B42532E8AF84900F1D202 /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
8B3B42542E8AF84900F1D202 /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
8B3B42552E8AF84900F1D202 /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
8B3B42562E8AF84900F1D202 /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
8B3B42572E8AF84900F1D202 /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
8B3B42582E8AF84900F1D202 /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
8B3B42592E8AF84900F1D202 /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
8B3B425A2E8AF84900F1D202 /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
8B3B425B2E8AF84900F1D202 /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
8B3B425C2E8AF84900F1D202 /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
8B3B425D2E8AF84900F1D202 /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
8B3B425E2E8AF84900F1D202 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8B3B425F2E8AF84900F1D202 /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
8B3B42602E8AF84900F1D202 /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
8B3B42612E8AF84900F1D202 /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
8B3B42622E8AF84900F1D202 /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
8B3B42632E8AF84900F1D202 /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
8B3B42642E8AF84900F1D202 /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
8B3B42652E8AF84900F1D202 /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
8B3B42662E8AF84900F1D202 /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
8B3B42672E8AF84900F1D202 /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
8B3B42682E8AF84900F1D202 /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
8B3B42692E8AF84900F1D202 /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
8B3B426A2E8AF84900F1D202 /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
8B3B426B2E8AF84900F1D202 /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
8B3B426C2E8AF84900F1D202 /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
8B3B426D2E8AF84900F1D202 /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
8B3B426E2E8AF84900F1D202 /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
8B3B426F2E8AF84900F1D202 /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
8B3B42702E8AF84900F1D202 /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
8B3B42712E8AF84900F1D202 /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
8B3B42722E8AF84900F1D202 /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
8B3B42732E8AF84900F1D202 /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
8B3B42742E8AF84900F1D202 /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
8B3B42752E8AF84900F1D202 /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
8B3B42762E8AF84900F1D202 /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
8B3B42772E8AF84900F1D202 /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
8B3B42782E8AF84900F1D202 /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
8B3B42792E8AF84900F1D202 /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
8B3B427A2E8AF84900F1D202 /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
8B3B427B2E8AF84900F1D202 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8B3B427C2E8AF84900F1D202 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8B3B427D2E8AF84900F1D202 /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
8B3B427E2E8AF84900F1D202 /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
8B3B427F2E8AF84900F1D202 /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
8B3B42802E8AF84900F1D202 /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
8B3B42812E8AF84900F1D202 /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
8B3B42822E8AF84900F1D202 /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
8B3B42832E8AF84900F1D202 /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
8B3B42842E8AF84900F1D202 /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
8B3B42852E8AF84900F1D202 /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
8B3B42862E8AF84900F1D202 /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
8B3B42872E8AF84900F1D202 /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
8B3B42882E8AF84900F1D202 /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
8B3B42892E8AF84900F1D202 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8B3B428A2E8AF84900F1D202 /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
8B3B428B2E8AF84900F1D202 /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
8B3B428C2E8AF84900F1D202 /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
8B3B428D2E8AF84900F1D202 /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
8B3B428E2E8AF84900F1D202 /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
8B3B428F2E8AF84900F1D202 /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
8B3B42902E8AF84900F1D202 /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
8B3B42912E8AF84900F1D202 /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
8B3B42952E8AF84900F1D202 /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
8B3B42972E8AF84900F1D202 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8B3B42982E8AF84900F1D202 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8B3B42992E8AF84900F1D202 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8B3B429A2E8AF84900F1D202 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8B3B429B2E8AF84900F1D202 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8B3B429C2E8AF84900F1D202 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8B3B429D2E8AF84900F1D202 /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
8B3B429E2E8AF84900F1D202 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8B3B429F2E8AF84900F1D202 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8B3B42A02E8AF84900F1D202 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8B3B42A12E8AF84900F1D202 /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
8B3B42A22E8AF84900F1D202 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8B3B42A32E8AF84900F1D202 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8B3B42A42E8AF84900F1D202 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8B3B42A52E8AF84900F1D202 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8B3B42A72E8AF84900F1D202 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8B3B42A82E8AF84900F1D202 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8B3B42AA2E8AF84900F1D202 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8B3B42AB2E8AF84900F1D202 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
8B3B42AC2E8AF84900F1D202 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8B3B42AD2E8AF84900F1D202 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8B3B42AE2E8AF84900F1D202 /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
8B3B42AF2E8AF84900F1D202 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8B3B42B02E8AF84900F1D202 /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
8B3B42B12E8AF84900F1D202 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8B3B42B22E8AF84900F1D202 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
8B3B43352E8AF96000F1D202 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
8BA05A660720730100365D66 /* Dynamics2.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Dynamics2.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Dynamics2.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Dynamics2.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Dynamics2.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Dynamics2.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* Dynamics2Version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2Version.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>"; };
8BC6025B073B072D006C4272 /* Dynamics2.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Dynamics2.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Dynamics2.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Dynamics2.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 /* Dynamics2 */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Dynamics2;
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 = (
8B3B42292E8AF84900F1D202 /* CA_SDK */,
8BA05A56072072A900365D66 /* AU Source */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* Dynamics2.component */,
);
name = Products;
sourceTree = "<group>";
};
8B3B42292E8AF84900F1D202 /* CA_SDK */ = {
isa = PBXGroup;
children = (
8B3B422A2E8AF84900F1D202 /* PublicUtility */,
8B3B42922E8AF84900F1D202 /* AudioUnits */,
);
name = CA_SDK;
path = ../../../../CA_SDK;
sourceTree = "<group>";
};
8B3B422A2E8AF84900F1D202 /* PublicUtility */ = {
isa = PBXGroup;
children = (
8B3B422B2E8AF84900F1D202 /* CAExtAudioFile.h */,
8B3B422C2E8AF84900F1D202 /* CACFMachPort.h */,
8B3B422D2E8AF84900F1D202 /* CABool.h */,
8B3B422E2E8AF84900F1D202 /* CAComponent.cpp */,
8B3B422F2E8AF84900F1D202 /* CADebugger.h */,
8B3B42302E8AF84900F1D202 /* CACFNumber.cpp */,
8B3B42312E8AF84900F1D202 /* CAGuard.h */,
8B3B42322E8AF84900F1D202 /* CAAtomic.h */,
8B3B42332E8AF84900F1D202 /* CAStreamBasicDescription.h */,
8B3B42342E8AF84900F1D202 /* CACFObject.h */,
8B3B42352E8AF84900F1D202 /* CAStreamRangedDescription.h */,
8B3B42362E8AF84900F1D202 /* CATokenMap.h */,
8B3B42372E8AF84900F1D202 /* CAComponent.h */,
8B3B42382E8AF84900F1D202 /* CAAudioBufferList.h */,
8B3B42392E8AF84900F1D202 /* CAAudioUnit.h */,
8B3B423A2E8AF84900F1D202 /* CAAUParameter.h */,
8B3B423B2E8AF84900F1D202 /* CAException.h */,
8B3B423C2E8AF84900F1D202 /* CAAUProcessor.cpp */,
8B3B423D2E8AF84900F1D202 /* CAAUProcessor.h */,
8B3B423E2E8AF84900F1D202 /* CAProcess.h */,
8B3B423F2E8AF84900F1D202 /* CACFDictionary.h */,
8B3B42402E8AF84900F1D202 /* CAPThread.h */,
8B3B42412E8AF84900F1D202 /* CAAUParameter.cpp */,
8B3B42422E8AF84900F1D202 /* CAAudioTimeStamp.h */,
8B3B42432E8AF84900F1D202 /* CAFilePathUtils.cpp */,
8B3B42442E8AF84900F1D202 /* CAAudioValueRange.h */,
8B3B42452E8AF84900F1D202 /* CAVectorUnitTypes.h */,
8B3B42462E8AF84900F1D202 /* CAAudioChannelLayoutObject.cpp */,
8B3B42472E8AF84900F1D202 /* CAGuard.cpp */,
8B3B42482E8AF84900F1D202 /* CACFNumber.h */,
8B3B42492E8AF84900F1D202 /* CACFDistributedNotification.cpp */,
8B3B424A2E8AF84900F1D202 /* CACFString.h */,
8B3B424B2E8AF84900F1D202 /* CAAUMIDIMapManager.cpp */,
8B3B424C2E8AF84900F1D202 /* CAComponentDescription.cpp */,
8B3B424D2E8AF84900F1D202 /* CAHostTimeBase.h */,
8B3B424E2E8AF84900F1D202 /* CADebugMacros.cpp */,
8B3B424F2E8AF84900F1D202 /* CAAudioFileFormats.h */,
8B3B42502E8AF84900F1D202 /* CAAUMIDIMapManager.h */,
8B3B42512E8AF84900F1D202 /* CACFDictionary.cpp */,
8B3B42522E8AF84900F1D202 /* CAMutex.h */,
8B3B42532E8AF84900F1D202 /* CACFString.cpp */,
8B3B42542E8AF84900F1D202 /* CASettingsStorage.h */,
8B3B42552E8AF84900F1D202 /* CADebugPrintf.h */,
8B3B42562E8AF84900F1D202 /* CAXException.cpp */,
8B3B42572E8AF84900F1D202 /* CAAUMIDIMap.h */,
8B3B42582E8AF84900F1D202 /* AUParamInfo.h */,
8B3B42592E8AF84900F1D202 /* CABitOperations.h */,
8B3B425A2E8AF84900F1D202 /* CACFPreferences.cpp */,
8B3B425B2E8AF84900F1D202 /* CABundleLocker.h */,
8B3B425C2E8AF84900F1D202 /* CAPropertyAddress.h */,
8B3B425D2E8AF84900F1D202 /* CAXException.h */,
8B3B425E2E8AF84900F1D202 /* CAAudioChannelLayout.cpp */,
8B3B425F2E8AF84900F1D202 /* CAThreadSafeList.h */,
8B3B42602E8AF84900F1D202 /* CAAudioUnitOutputCapturer.h */,
8B3B42612E8AF84900F1D202 /* AUParamInfo.cpp */,
8B3B42622E8AF84900F1D202 /* CASharedLibrary.cpp */,
8B3B42632E8AF84900F1D202 /* CAAUMIDIMap.cpp */,
8B3B42642E8AF84900F1D202 /* CALogMacros.h */,
8B3B42652E8AF84900F1D202 /* CACFMessagePort.cpp */,
8B3B42662E8AF84900F1D202 /* CARingBuffer.h */,
8B3B42672E8AF84900F1D202 /* AUOutputBL.cpp */,
8B3B42682E8AF84900F1D202 /* CABufferList.h */,
8B3B42692E8AF84900F1D202 /* CASharedLibrary.h */,
8B3B426A2E8AF84900F1D202 /* CACFData.h */,
8B3B426B2E8AF84900F1D202 /* CAStreamRangedDescription.cpp */,
8B3B426C2E8AF84900F1D202 /* CAPThread.cpp */,
8B3B426D2E8AF84900F1D202 /* CAAutoDisposer.h */,
8B3B426E2E8AF84900F1D202 /* CACFPreferences.h */,
8B3B426F2E8AF84900F1D202 /* CAVectorUnit.cpp */,
8B3B42702E8AF84900F1D202 /* CAComponentDescription.h */,
8B3B42712E8AF84900F1D202 /* CADebugMacros.h */,
8B3B42722E8AF84900F1D202 /* AUOutputBL.h */,
8B3B42732E8AF84900F1D202 /* CADebugPrintf.cpp */,
8B3B42742E8AF84900F1D202 /* CARingBuffer.cpp */,
8B3B42752E8AF84900F1D202 /* CACFPlugIn.h */,
8B3B42762E8AF84900F1D202 /* CASettingsStorage.cpp */,
8B3B42772E8AF84900F1D202 /* CAMixMap.h */,
8B3B42782E8AF84900F1D202 /* CACFDistributedNotification.h */,
8B3B42792E8AF84900F1D202 /* CAFilePathUtils.h */,
8B3B427A2E8AF84900F1D202 /* CATink.h */,
8B3B427B2E8AF84900F1D202 /* CAStreamBasicDescription.cpp */,
8B3B427C2E8AF84900F1D202 /* CAAudioChannelLayout.h */,
8B3B427D2E8AF84900F1D202 /* CAProcess.cpp */,
8B3B427E2E8AF84900F1D202 /* CAHostTimeBase.cpp */,
8B3B427F2E8AF84900F1D202 /* CAPersistence.cpp */,
8B3B42802E8AF84900F1D202 /* CAAudioBufferList.cpp */,
8B3B42812E8AF84900F1D202 /* CAAudioTimeStamp.cpp */,
8B3B42822E8AF84900F1D202 /* CAVectorUnit.h */,
8B3B42832E8AF84900F1D202 /* CAByteOrder.h */,
8B3B42842E8AF84900F1D202 /* CACFArray.h */,
8B3B42852E8AF84900F1D202 /* CAAtomicStack.h */,
8B3B42862E8AF84900F1D202 /* CAReferenceCounted.h */,
8B3B42872E8AF84900F1D202 /* CACFMachPort.cpp */,
8B3B42882E8AF84900F1D202 /* CABufferList.cpp */,
8B3B42892E8AF84900F1D202 /* CAMutex.cpp */,
8B3B428A2E8AF84900F1D202 /* CADebugger.cpp */,
8B3B428B2E8AF84900F1D202 /* CABundleLocker.cpp */,
8B3B428C2E8AF84900F1D202 /* CAAudioFileFormats.cpp */,
8B3B428D2E8AF84900F1D202 /* CAMath.h */,
8B3B428E2E8AF84900F1D202 /* CACFArray.cpp */,
8B3B428F2E8AF84900F1D202 /* CACFMessagePort.h */,
8B3B42902E8AF84900F1D202 /* CAAudioValueRange.cpp */,
8B3B42912E8AF84900F1D202 /* CAAudioUnit.cpp */,
);
path = PublicUtility;
sourceTree = "<group>";
};
8B3B42922E8AF84900F1D202 /* AudioUnits */ = {
isa = PBXGroup;
children = (
8B3B42932E8AF84900F1D202 /* AUPublic */,
);
path = AudioUnits;
sourceTree = "<group>";
};
8B3B42932E8AF84900F1D202 /* AUPublic */ = {
isa = PBXGroup;
children = (
8B3B42942E8AF84900F1D202 /* AUViewBase */,
8B3B42962E8AF84900F1D202 /* AUBase */,
8B3B42A62E8AF84900F1D202 /* OtherBases */,
8B3B42A92E8AF84900F1D202 /* Utility */,
);
path = AUPublic;
sourceTree = "<group>";
};
8B3B42942E8AF84900F1D202 /* AUViewBase */ = {
isa = PBXGroup;
children = (
8B3B42952E8AF84900F1D202 /* AUViewLocalizedStringKeys.h */,
);
path = AUViewBase;
sourceTree = "<group>";
};
8B3B42962E8AF84900F1D202 /* AUBase */ = {
isa = PBXGroup;
children = (
8B3B42972E8AF84900F1D202 /* ComponentBase.cpp */,
8B3B42982E8AF84900F1D202 /* AUScopeElement.cpp */,
8B3B42992E8AF84900F1D202 /* ComponentBase.h */,
8B3B429A2E8AF84900F1D202 /* AUBase.cpp */,
8B3B429B2E8AF84900F1D202 /* AUInputElement.h */,
8B3B429C2E8AF84900F1D202 /* AUBase.h */,
8B3B429D2E8AF84900F1D202 /* AUPlugInDispatch.h */,
8B3B429E2E8AF84900F1D202 /* AUDispatch.h */,
8B3B429F2E8AF84900F1D202 /* AUOutputElement.cpp */,
8B3B42A02E8AF84900F1D202 /* AUResources.r */,
8B3B42A12E8AF84900F1D202 /* AUPlugInDispatch.cpp */,
8B3B42A22E8AF84900F1D202 /* AUOutputElement.h */,
8B3B42A32E8AF84900F1D202 /* AUDispatch.cpp */,
8B3B42A42E8AF84900F1D202 /* AUScopeElement.h */,
8B3B42A52E8AF84900F1D202 /* AUInputElement.cpp */,
);
path = AUBase;
sourceTree = "<group>";
};
8B3B42A62E8AF84900F1D202 /* OtherBases */ = {
isa = PBXGroup;
children = (
8B3B42A72E8AF84900F1D202 /* AUEffectBase.cpp */,
8B3B42A82E8AF84900F1D202 /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8B3B42A92E8AF84900F1D202 /* Utility */ = {
isa = PBXGroup;
children = (
8B3B42AA2E8AF84900F1D202 /* AUTimestampGenerator.h */,
8B3B42AB2E8AF84900F1D202 /* AUBaseHelper.cpp */,
8B3B42AC2E8AF84900F1D202 /* AUSilentTimeout.h */,
8B3B42AD2E8AF84900F1D202 /* AUInputFormatConverter.h */,
8B3B42AE2E8AF84900F1D202 /* AUTimestampGenerator.cpp */,
8B3B42AF2E8AF84900F1D202 /* AUBuffer.cpp */,
8B3B42B02E8AF84900F1D202 /* AUMIDIDefs.h */,
8B3B42B12E8AF84900F1D202 /* AUBuffer.h */,
8B3B42B22E8AF84900F1D202 /* AUBaseHelper.h */,
);
path = Utility;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Dynamics2.h */,
8BA05A660720730100365D66 /* Dynamics2.cpp */,
8BA05A670720730100365D66 /* Dynamics2.exp */,
8BA05A680720730100365D66 /* Dynamics2.r */,
8BA05A690720730100365D66 /* Dynamics2Version.h */,
);
name = "AU Source";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8B3B42E32E8AF84A00F1D202 /* CABundleLocker.h in Headers */,
8B3B43042E8AF84A00F1D202 /* CAAudioChannelLayout.h in Headers */,
8B3B42FA2E8AF84A00F1D202 /* AUOutputBL.h in Headers */,
8B3B42D52E8AF84A00F1D202 /* CAHostTimeBase.h in Headers */,
8B3B431D2E8AF84A00F1D202 /* ComponentBase.h in Headers */,
8B3B430D2E8AF84A00F1D202 /* CAAtomicStack.h in Headers */,
8B3B42CA2E8AF84A00F1D202 /* CAAudioTimeStamp.h in Headers */,
8B3B42E72E8AF84A00F1D202 /* CAThreadSafeList.h in Headers */,
8B3B42C22E8AF84A00F1D202 /* CAAUParameter.h in Headers */,
8B3B43342E8AF84A00F1D202 /* AUBaseHelper.h in Headers */,
8B3B432C2E8AF84A00F1D202 /* AUTimestampGenerator.h in Headers */,
8B3B42DD2E8AF84A00F1D202 /* CADebugPrintf.h in Headers */,
8B3B43172E8AF84A00F1D202 /* CACFMessagePort.h in Headers */,
8B3B42C52E8AF84A00F1D202 /* CAAUProcessor.h in Headers */,
8B3B42C12E8AF84A00F1D202 /* CAAudioUnit.h in Headers */,
8B3B431A2E8AF84A00F1D202 /* AUViewLocalizedStringKeys.h in Headers */,
8B3B43002E8AF84A00F1D202 /* CACFDistributedNotification.h in Headers */,
8B3B42BF2E8AF84A00F1D202 /* CAComponent.h in Headers */,
8B3B42CD2E8AF84A00F1D202 /* CAVectorUnitTypes.h in Headers */,
8BA05A6E0720730100365D66 /* Dynamics2Version.h in Headers */,
8B3B43012E8AF84A00F1D202 /* CAFilePathUtils.h in Headers */,
8B3B42C32E8AF84A00F1D202 /* CAException.h in Headers */,
8B3B42BA2E8AF84A00F1D202 /* CAAtomic.h in Headers */,
8B3B42B92E8AF84A00F1D202 /* CAGuard.h in Headers */,
8B3B431F2E8AF84A00F1D202 /* AUInputElement.h in Headers */,
8B3B42F62E8AF84A00F1D202 /* CACFPreferences.h in Headers */,
8B3B430B2E8AF84A00F1D202 /* CAByteOrder.h in Headers */,
8B3B42EE2E8AF84A00F1D202 /* CARingBuffer.h in Headers */,
8B3B42B52E8AF84900F1D202 /* CABool.h in Headers */,
8B3B42DA2E8AF84A00F1D202 /* CAMutex.h in Headers */,
8B3B43202E8AF84A00F1D202 /* AUBase.h in Headers */,
8BC6025C073B072D006C4272 /* Dynamics2.h in Headers */,
8B3B42D22E8AF84A00F1D202 /* CACFString.h in Headers */,
8B3B42F12E8AF84A00F1D202 /* CASharedLibrary.h in Headers */,
8B3B42BE2E8AF84A00F1D202 /* CATokenMap.h in Headers */,
8B3B42B32E8AF84900F1D202 /* CAExtAudioFile.h in Headers */,
8B3B42C82E8AF84A00F1D202 /* CAPThread.h in Headers */,
8B3B42E42E8AF84A00F1D202 /* CAPropertyAddress.h in Headers */,
8B3B430E2E8AF84A00F1D202 /* CAReferenceCounted.h in Headers */,
8B3B43332E8AF84A00F1D202 /* AUBuffer.h in Headers */,
8B3B43152E8AF84A00F1D202 /* CAMath.h in Headers */,
8B3B42F52E8AF84A00F1D202 /* CAAutoDisposer.h in Headers */,
8B3B42BC2E8AF84A00F1D202 /* CACFObject.h in Headers */,
8B3B42DC2E8AF84A00F1D202 /* CASettingsStorage.h in Headers */,
8B3B42E52E8AF84A00F1D202 /* CAXException.h in Headers */,
8B3B43022E8AF84A00F1D202 /* CATink.h in Headers */,
8B3B432F2E8AF84A00F1D202 /* AUInputFormatConverter.h in Headers */,
8B3B430A2E8AF84A00F1D202 /* CAVectorUnit.h in Headers */,
8B3B42C62E8AF84A00F1D202 /* CAProcess.h in Headers */,
8B3B42CC2E8AF84A00F1D202 /* CAAudioValueRange.h in Headers */,
8B3B42E12E8AF84A00F1D202 /* CABitOperations.h in Headers */,
8B3B42D72E8AF84A00F1D202 /* CAAudioFileFormats.h in Headers */,
8B3B42D02E8AF84A00F1D202 /* CACFNumber.h in Headers */,
8B3B42E82E8AF84A00F1D202 /* CAAudioUnitOutputCapturer.h in Headers */,
8B3B42F92E8AF84A00F1D202 /* CADebugMacros.h in Headers */,
8B3B43322E8AF84A00F1D202 /* AUMIDIDefs.h in Headers */,
8B3B42F22E8AF84A00F1D202 /* CACFData.h in Headers */,
8B3B42BB2E8AF84A00F1D202 /* CAStreamBasicDescription.h in Headers */,
8B3B43212E8AF84A00F1D202 /* AUPlugInDispatch.h in Headers */,
8B3B42BD2E8AF84A00F1D202 /* CAStreamRangedDescription.h in Headers */,
8B3B42FD2E8AF84A00F1D202 /* CACFPlugIn.h in Headers */,
8B3B42C02E8AF84A00F1D202 /* CAAudioBufferList.h in Headers */,
8B3B42D82E8AF84A00F1D202 /* CAAUMIDIMapManager.h in Headers */,
8B3B432B2E8AF84A00F1D202 /* AUEffectBase.h in Headers */,
8B3B42C72E8AF84A00F1D202 /* CACFDictionary.h in Headers */,
8B3B43282E8AF84A00F1D202 /* AUScopeElement.h in Headers */,
8B3B42F82E8AF84A00F1D202 /* CAComponentDescription.h in Headers */,
8B3B432E2E8AF84A00F1D202 /* AUSilentTimeout.h in Headers */,
8B3B42F02E8AF84A00F1D202 /* CABufferList.h in Headers */,
8B3B43222E8AF84A00F1D202 /* AUDispatch.h in Headers */,
8B3B43262E8AF84A00F1D202 /* AUOutputElement.h in Headers */,
8B3B42EC2E8AF84A00F1D202 /* CALogMacros.h in Headers */,
8B3B42E02E8AF84A00F1D202 /* AUParamInfo.h in Headers */,
8B3B42FF2E8AF84A00F1D202 /* CAMixMap.h in Headers */,
8B3B430C2E8AF84A00F1D202 /* CACFArray.h in Headers */,
8B3B42B42E8AF84900F1D202 /* CACFMachPort.h in Headers */,
8B3B42DF2E8AF84A00F1D202 /* CAAUMIDIMap.h in Headers */,
8B3B42B72E8AF84900F1D202 /* CADebugger.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* Dynamics2 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Dynamics2" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Dynamics2;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Dynamics2;
productReference = 8D01CCD20486CAD60068D4B7 /* Dynamics2.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 "Dynamics2" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
en,
fr,
Base,
ja,
de,
);
mainGroup = 089C166AFE841209C02AAC07 /* Dynamics2 */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Dynamics2 */,
);
};
/* 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 = (
8B3B42EF2E8AF84A00F1D202 /* AUOutputBL.cpp in Sources */,
8B3B43142E8AF84A00F1D202 /* CAAudioFileFormats.cpp in Sources */,
8B3B43062E8AF84A00F1D202 /* CAHostTimeBase.cpp in Sources */,
8B3B42DE2E8AF84A00F1D202 /* CAXException.cpp in Sources */,
8B3B43082E8AF84A00F1D202 /* CAAudioBufferList.cpp in Sources */,
8B3B42CB2E8AF84A00F1D202 /* CAFilePathUtils.cpp in Sources */,
8B3B42C92E8AF84A00F1D202 /* CAAUParameter.cpp in Sources */,
8B3B42EB2E8AF84A00F1D202 /* CAAUMIDIMap.cpp in Sources */,
8B3B43182E8AF84A00F1D202 /* CAAudioValueRange.cpp in Sources */,
8B3B43272E8AF84A00F1D202 /* AUDispatch.cpp in Sources */,
8B3B42E22E8AF84A00F1D202 /* CACFPreferences.cpp in Sources */,
8B3B43252E8AF84A00F1D202 /* AUPlugInDispatch.cpp in Sources */,
8B3B42C42E8AF84A00F1D202 /* CAAUProcessor.cpp in Sources */,
8B3B42D92E8AF84A00F1D202 /* CACFDictionary.cpp in Sources */,
8B3B432D2E8AF84A00F1D202 /* AUBaseHelper.cpp in Sources */,
8B3B43122E8AF84A00F1D202 /* CADebugger.cpp in Sources */,
8B3B42E62E8AF84A00F1D202 /* CAAudioChannelLayout.cpp in Sources */,
8B3B42E92E8AF84A00F1D202 /* AUParamInfo.cpp in Sources */,
8B3B43072E8AF84A00F1D202 /* CAPersistence.cpp in Sources */,
8B3B42FB2E8AF84A00F1D202 /* CADebugPrintf.cpp in Sources */,
8B3B43302E8AF84A00F1D202 /* AUTimestampGenerator.cpp in Sources */,
8B3B43032E8AF84A00F1D202 /* CAStreamBasicDescription.cpp in Sources */,
8B3B42D32E8AF84A00F1D202 /* CAAUMIDIMapManager.cpp in Sources */,
8B3B42FE2E8AF84A00F1D202 /* CASettingsStorage.cpp in Sources */,
8B3B43232E8AF84A00F1D202 /* AUOutputElement.cpp in Sources */,
8B3B42CF2E8AF84A00F1D202 /* CAGuard.cpp in Sources */,
8BA05A6B0720730100365D66 /* Dynamics2.cpp in Sources */,
8B3B43112E8AF84A00F1D202 /* CAMutex.cpp in Sources */,
8B3B432A2E8AF84A00F1D202 /* AUEffectBase.cpp in Sources */,
8B3B430F2E8AF84A00F1D202 /* CACFMachPort.cpp in Sources */,
8B3B431E2E8AF84A00F1D202 /* AUBase.cpp in Sources */,
8B3B42EA2E8AF84A00F1D202 /* CASharedLibrary.cpp in Sources */,
8B3B42D12E8AF84A00F1D202 /* CACFDistributedNotification.cpp in Sources */,
8B3B42D42E8AF84A00F1D202 /* CAComponentDescription.cpp in Sources */,
8B3B42DB2E8AF84A00F1D202 /* CACFString.cpp in Sources */,
8B3B431B2E8AF84A00F1D202 /* ComponentBase.cpp in Sources */,
8B3B42FC2E8AF84A00F1D202 /* CARingBuffer.cpp in Sources */,
8B3B431C2E8AF84A00F1D202 /* AUScopeElement.cpp in Sources */,
8B3B43192E8AF84A00F1D202 /* CAAudioUnit.cpp in Sources */,
8B3B43162E8AF84A00F1D202 /* CACFArray.cpp in Sources */,
8B3B43132E8AF84A00F1D202 /* CABundleLocker.cpp in Sources */,
8B3B43052E8AF84A00F1D202 /* CAProcess.cpp in Sources */,
8B3B42F32E8AF84A00F1D202 /* CAStreamRangedDescription.cpp in Sources */,
8B3B42F42E8AF84A00F1D202 /* CAPThread.cpp in Sources */,
8B3B42B62E8AF84900F1D202 /* CAComponent.cpp in Sources */,
8B3B42CE2E8AF84A00F1D202 /* CAAudioChannelLayoutObject.cpp in Sources */,
8B3B43092E8AF84A00F1D202 /* CAAudioTimeStamp.cpp in Sources */,
8B3B43102E8AF84A00F1D202 /* CABufferList.cpp in Sources */,
8B3B42ED2E8AF84A00F1D202 /* CACFMessagePort.cpp in Sources */,
8B3B42F72E8AF84A00F1D202 /* CAVectorUnit.cpp in Sources */,
8B3B43292E8AF84A00F1D202 /* AUInputElement.cpp in Sources */,
8B3B43312E8AF84A00F1D202 /* AUBuffer.cpp in Sources */,
8B3B42D62E8AF84A00F1D202 /* CADebugMacros.cpp in Sources */,
8B3B42B82E8AF84900F1D202 /* CACFNumber.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8B3B43352E8AF96000F1D202 /* 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 = Dynamics2.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 = Dynamics2;
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 = Dynamics2.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 = Dynamics2;
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 "Dynamics2" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Dynamics2" */ = {
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 = "Dynamics2.component"
BlueprintName = "Dynamics2"
ReferencedContainer = "container:Dynamics2.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 = "Dynamics2.component"
BlueprintName = "Dynamics2"
ReferencedContainer = "container:Dynamics2.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>Dynamics2.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>

Some files were not shown because too many files have changed in this diff Show more