SquareRoot

This commit is contained in:
Christopher Johnson 2025-02-16 15:36:21 -05:00
parent 4d8e79b7e2
commit 6a9e1e2913
339 changed files with 63071 additions and 3483 deletions

View file

@ -37,7 +37,7 @@ Noise: Noise, Texturize, TexturizeMS, VoiceOfTheStarship, DarkNoise, ElectroHat,
Reverb: Galactic3, kCathedral3, kPlate140, kPlate240, CreamCoat, kGuitarHall, kPlateD, kPlateB, kPlateA, kPlateC, CrunchCoat, kCathedral2, Verbity2, Galactic, Galactic2, Verbity, Chamber2, Chamber, Infinity2, NonlinearSpace, kCathedral, Infinity, MatrixVerb, PocketVerbs, Reverb
Saturation: Hypersoft, Creature, Huge, NCSeventeen, Tube2, Tube, Spiral2, PurestDrive, Focus, Mojo, Dyno, Spiral, UnBox, Desk4, Righteous4
Saturation: SquareRoot, Hypersoft, Creature, Huge, NCSeventeen, Tube2, Tube, Spiral2, PurestDrive, Focus, Mojo, Dyno, Spiral, UnBox, Desk4, Righteous4
Stereo: Srsly3, Srsly2, Srsly, Wider, StereoFX, ToVinyl4, AutoPan, LRFlipTimer, MSFlipTimer, Sidepass, SideDull
@ -4407,6 +4407,28 @@ So, I wanted to do something nice for my peeps since everybody has been so kind
See ya soon, and I hope you like Spiral2. If you would have dropped $50 on this without a moments hesitation once you hear what it can do by trying it, please do that using the Patreon. Im looking to keep expanding and be more ambitious, if thats OK. Its more fun being ambitious with a budget, and food and shelter and stuff :)
############ SquareRoot has new discoveries in soft saturation!
What if saturation, but not flat-topping, because it was a kind that literally never reaches a 'top' but always keeps producing louder output the harder you drive it?
Well, that would defeat the purpose of safety clipping, first of all, but then let's see what else we can do :)
I don't think sqrt() commonly gets used for saturation effects, for several reasons. First, it's wildly inaccurate at tiny values. Second, it won't safety clip (obviously). Third, if you DO try to use it even though it's wildly inaccurate at tiny values, it turns and bites you, throwing in a crossover distortion that can be really distracting. You've heard it… if you heard LRConvolve, because that uses a square root to compensate for how you're multiplying one channel by the other.
There's no solution to these things, but is there a workaround? YES. And it's called 'Soar'.
Turns out you can adjust how the square root works to get a smooth contour that still gives you that infinitely-extended softclip. It's a useful effect, that feels kinda like how our ears respond to loudness. If you have something like a drum track that's all spikey and doesn't sound anything like being there, SquareRoot at some level of drive (you can add as much as 12 dB in the plugin, and nearly a hundred dB with BitShiftGain in front of it) will immediately give it that 'there in the room' feel while still distinguishing dynamics for you.
And then there's 'Soar' sitting there: all it does is change this adjustment from full smoothness… to uncorrected, nonlinear square root quirkiness. And that throws in controllable amounts of crossover distortion, Class B or AB distortion (since it's not a sharp edge but increasingly weird curves) and that makes quiet details louder, unnaturally so.
It lets you keep that effect subtle (like the eccentricities of a big push-pull tube amp, or a grungey Hammond B3) or make it really obnoxious: then if you overdrive the input harder, that Soar coloration will become more subtle again, because you'll have to turn the output down. If even the plain output with no 'Soar' is too intense, you get a dry/wet control that should be able to help you find just the right intensity for whatever SquareRoot can produce.
Soar is originally from a story by Mixerman, who used a stray knob to appease a difficult record label exec sitting in on a session. In the story, it was not real. But this is! Right down to the dangers of adding TOO MUCH soar and ruining everything. So, be prudent and don't soar too much!
This is bonkers for getting retro tones, for simulating acoustic loudness (you can put it in front of Discontinuity for even more loudness cues!) and for giving certain instruments their natural color, like big amps and wonky organs. The effect exists in guitar stompboxes as a notoriously aggro pedal: ZVex's Machine pedal. But this plugin is not that, it's a separate effect with its own purposes that happens to be one of the few effects to work with crossover distortion, normally not a popular effect, but now rendered accessible and useful.
I know I'll be finding uses for all this, and I hope you do too :)
############ Srsly is a psychoacoustic stereo processor.
People get really excited sometimes, so heres a failure :)

View file

@ -171,6 +171,7 @@ add_airwindows_plugin(Edge)
add_airwindows_plugin(EdIsDim)
add_airwindows_plugin(Elation)
add_airwindows_plugin(ElectroHat)
add_airwindows_plugin(Elliptical)
add_airwindows_plugin(Energy)
add_airwindows_plugin(Energy2)
add_airwindows_plugin(Ensemble)
@ -251,6 +252,7 @@ add_airwindows_plugin(Lowpass)
add_airwindows_plugin(Lowpass2)
add_airwindows_plugin(LRConvolve)
add_airwindows_plugin(LRConvolve2)
add_airwindows_plugin(LRConvolve3)
add_airwindows_plugin(LRFlipTimer)
add_airwindows_plugin(Luxor)
add_airwindows_plugin(MackEQ)
@ -353,6 +355,7 @@ add_airwindows_plugin(SoftGate)
add_airwindows_plugin(SpatializeDither)
add_airwindows_plugin(Spiral)
add_airwindows_plugin(Spiral2)
add_airwindows_plugin(SquareRoot)
add_airwindows_plugin(Srsly)
add_airwindows_plugin(Srsly2)
add_airwindows_plugin(Srsly3)

View file

@ -0,0 +1,138 @@
/* ========================================
* Elliptical - Elliptical.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Elliptical_H
#include "Elliptical.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Elliptical(audioMaster);}
Elliptical::Elliptical(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
B = 0.5;
iirA = 0.0;
iirB = 0.0;
iirC = 0.0;
iirD = 0.0;
iirE = 0.0;
iirF = 0.0;
iirG = 0.0;
iirH = 0.0;
fpFlip = true;
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
}
Elliptical::~Elliptical() {}
VstInt32 Elliptical::getVendorVersion () {return 1000;}
void Elliptical::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void Elliptical::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 Elliptical::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
/* 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 Elliptical::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
/* 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 Elliptical::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float Elliptical::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; 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 Elliptical::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Cutoff", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Slope", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void Elliptical::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void Elliptical::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 Elliptical::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool Elliptical::getEffectName(char* name) {
vst_strncpy(name, "Elliptical", kVstMaxProductStrLen); return true;
}
VstPlugCategory Elliptical::getPlugCategory() {return kPlugCategEffect;}
bool Elliptical::getProductString(char* text) {
vst_strncpy (text, "airwindows Elliptical", kVstMaxProductStrLen); return true;
}
bool Elliptical::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,74 @@
/* ========================================
* Elliptical - Elliptical.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Elliptical_H
#define __Elliptical_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kParamB =1,
kNumParameters = 2
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'elli'; //Change this to what the AU identity is!
class Elliptical :
public AudioEffectX
{
public:
Elliptical(audioMasterCallback audioMaster);
~Elliptical();
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;
double iirA;
double iirB; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
double iirC; //we introduce the second pole at the same frequency, to become a pseudo-Capacitor behavior
double iirD;
double iirE;
double iirF; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirG;
double iirH; //seven poles max, and the final pole is always at 20hz directly.
bool fpFlip;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,210 @@
/* ========================================
* Elliptical - Elliptical.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __Elliptical_H
#include "Elliptical.h"
#endif
void Elliptical::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 rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
double slope = pow(B,3) * 6.0;
double newA = cutoff * rangescale;
double newB = newA; //other part of interleaved IIR is the same
double fpOld = 0.618033988749894848204586; //golden ratio!
double newC = cutoff * rangescale; //first extra pole is the same
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newD = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newE = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newF = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newG = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newH = cutoff * rangescale;
//converge toward the unvarying fixed cutoff value
double polesC = slope; if (slope > 1.0) polesC = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesD = slope; if (slope > 1.0) polesD = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesE = slope; if (slope > 1.0) polesE = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesF = slope; if (slope > 1.0) polesF = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesG = slope; if (slope > 1.0) polesG = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesH = slope; if (slope > 1.0) polesH = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
//each one will either be 0.0, the fractional slope value, or 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;
double mid = inputSampleL + inputSampleR;
double side = inputSampleL - inputSampleR;
//assign mid and side.Between these sections, you can do mid/side processing
double temp = side;
double correction;
if (fpFlip) {
iirA = (iirA * (1.0 - newA)) + (temp * newA); temp -= iirA; correction = iirA;
} else {
iirB = (iirB * (1.0 - newB)) + (temp * newB); temp -= iirB; correction = iirB;
}
iirC = (iirC * (1.0 - newC)) + (temp * newC); temp -= iirC;
iirD = (iirD * (1.0 - newD)) + (temp * newD); temp -= iirD;
iirE = (iirE * (1.0 - newE)) + (temp * newE); temp -= iirE;
iirF = (iirF * (1.0 - newF)) + (temp * newF); temp -= iirF;
iirG = (iirG * (1.0 - newG)) + (temp * newG); temp -= iirG;
iirH = (iirH * (1.0 - newH)) + (temp * newH); temp -= iirH;
//set up all the iir filters in case they are used
if (polesC == 1.0) correction += iirC; if (polesC > 0.0 && polesC < 1.0) correction += (iirC * polesC);
if (polesD == 1.0) correction += iirD; if (polesD > 0.0 && polesD < 1.0) correction += (iirD * polesD);
if (polesE == 1.0) correction += iirE; if (polesE > 0.0 && polesE < 1.0) correction += (iirE * polesE);
if (polesF == 1.0) correction += iirF; if (polesF > 0.0 && polesF < 1.0) correction += (iirF * polesF);
if (polesG == 1.0) correction += iirG; if (polesG > 0.0 && polesG < 1.0) correction += (iirG * polesG);
if (polesH == 1.0) correction += iirH; if (polesH > 0.0 && polesH < 1.0) correction += (iirH * polesH);
//each of these are added directly if they're fully engaged,
//multiplied by 0-1 if they are the interpolated one, or skipped if they are beyond the interpolated one.
//the purpose is to do all the math at the floating point exponent nearest to the tiny value in use.
//also, it's formatted that way to easily substitute the next variable: this could be written as a loop
//with everything an array value. However, this makes just as much sense for this few poles.
side -= correction;
fpFlip = !fpFlip;
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
//unassign mid and side
//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 Elliptical::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 rangescale = 0.1 / overallscale;
double cutoff = pow(A,3);
double slope = pow(B,3) * 6.0;
double newA = cutoff * rangescale;
double newB = newA; //other part of interleaved IIR is the same
double fpOld = 0.618033988749894848204586; //golden ratio!
double newC = cutoff * rangescale; //first extra pole is the same
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newD = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newE = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newF = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newG = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newH = cutoff * rangescale;
//converge toward the unvarying fixed cutoff value
double polesC = slope; if (slope > 1.0) polesC = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesD = slope; if (slope > 1.0) polesD = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesE = slope; if (slope > 1.0) polesE = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesF = slope; if (slope > 1.0) polesF = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesG = slope; if (slope > 1.0) polesG = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesH = slope; if (slope > 1.0) polesH = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
//each one will either be 0.0, the fractional slope value, or 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;
double mid = inputSampleL + inputSampleR;
double side = inputSampleL - inputSampleR;
//assign mid and side.Between these sections, you can do mid/side processing
double temp = side;
double correction;
if (fpFlip) {
iirA = (iirA * (1.0 - newA)) + (temp * newA); temp -= iirA; correction = iirA;
} else {
iirB = (iirB * (1.0 - newB)) + (temp * newB); temp -= iirB; correction = iirB;
}
iirC = (iirC * (1.0 - newC)) + (temp * newC); temp -= iirC;
iirD = (iirD * (1.0 - newD)) + (temp * newD); temp -= iirD;
iirE = (iirE * (1.0 - newE)) + (temp * newE); temp -= iirE;
iirF = (iirF * (1.0 - newF)) + (temp * newF); temp -= iirF;
iirG = (iirG * (1.0 - newG)) + (temp * newG); temp -= iirG;
iirH = (iirH * (1.0 - newH)) + (temp * newH); temp -= iirH;
//set up all the iir filters in case they are used
if (polesC == 1.0) correction += iirC; if (polesC > 0.0 && polesC < 1.0) correction += (iirC * polesC);
if (polesD == 1.0) correction += iirD; if (polesD > 0.0 && polesD < 1.0) correction += (iirD * polesD);
if (polesE == 1.0) correction += iirE; if (polesE > 0.0 && polesE < 1.0) correction += (iirE * polesE);
if (polesF == 1.0) correction += iirF; if (polesF > 0.0 && polesF < 1.0) correction += (iirF * polesF);
if (polesG == 1.0) correction += iirG; if (polesG > 0.0 && polesG < 1.0) correction += (iirG * polesG);
if (polesH == 1.0) correction += iirH; if (polesH > 0.0 && polesH < 1.0) correction += (iirH * polesH);
//each of these are added directly if they're fully engaged,
//multiplied by 0-1 if they are the interpolated one, or skipped if they are beyond the interpolated one.
//the purpose is to do all the math at the floating point exponent nearest to the tiny value in use.
//also, it's formatted that way to easily substitute the next variable: this could be written as a loop
//with everything an array value. However, this makes just as much sense for this few poles.
side -= correction;
fpFlip = !fpFlip;
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
//unassign mid and side
//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

@ -13,9 +13,6 @@ LRConvolve2::LRConvolve2(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.0;
B = 0.0;
iirSample = 0.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
@ -51,7 +48,6 @@ VstInt32 LRConvolve2::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
/* 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. */
@ -64,7 +60,6 @@ VstInt32 LRConvolve2::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
@ -75,7 +70,6 @@ VstInt32 LRConvolve2::setChunk (void* data, VstInt32 byteSize, bool isPreset)
void LRConvolve2::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
@ -83,15 +77,13 @@ void LRConvolve2::setParameter(VstInt32 index, float value) {
float LRConvolve2::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; 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 LRConvolve2::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Smooth", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Channel", kVstMaxParamStrLen); break;
case kParamA: vst_strncpy (text, "Soar", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
@ -99,7 +91,6 @@ void LRConvolve2::getParameterName(VstInt32 index, char *text) {
void LRConvolve2::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
@ -107,7 +98,6 @@ void LRConvolve2::getParameterDisplay(VstInt32 index, char *text) {
void LRConvolve2::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}

View file

@ -17,8 +17,7 @@
enum {
kParamA =0,
kParamB =1,
kNumParameters = 2
kNumParameters = 1
}; //
const int kNumPrograms = 0;
@ -54,9 +53,6 @@ private:
std::set< std::string > _canDo;
float A;
float B;
double iirSample;
uint32_t fpdL;
uint32_t fpdR;

View file

@ -18,8 +18,7 @@ void LRConvolve2::processReplacing(float **inputs, float **outputs, VstInt32 sam
overallscale /= 44100.0;
overallscale *= getSampleRate();
double smooth = pow(A,4)*(0.5/overallscale);
double channel = B;
double soar = 0.3-(A*0.3);
while (--sampleFrames >= 0)
{
@ -28,17 +27,15 @@ void LRConvolve2::processReplacing(float **inputs, float **outputs, VstInt32 sam
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier*modulate);
if (carrier < 0.0) carrier = -sqrt(-carrier*modulate);
inputSampleL = inputSampleR = carrier;
//blame Jannik Asfaig (BoyXx76) for this (and me) :D
double out = 0.0;
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0 && inputSampleR > 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0 && inputSampleR > 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL > 0.0 && inputSampleR < 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL < 0.0 && inputSampleR < 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
inputSampleL = inputSampleR = out;
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
@ -70,8 +67,7 @@ void LRConvolve2::processDoubleReplacing(double **inputs, double **outputs, VstI
overallscale /= 44100.0;
overallscale *= getSampleRate();
double smooth = pow(A,4)*(0.5/overallscale);
double channel = B;
double soar = 0.3-(A*0.3);
while (--sampleFrames >= 0)
{
@ -80,17 +76,15 @@ void LRConvolve2::processDoubleReplacing(double **inputs, double **outputs, VstI
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier*modulate);
if (carrier < 0.0) carrier = -sqrt(-carrier*modulate);
inputSampleL = inputSampleR = carrier;
//blame Jannik Asfaig (BoyXx76) for this (and me) :D
double out = 0.0;
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0 && inputSampleR > 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0 && inputSampleR > 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL > 0.0 && inputSampleR < 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL < 0.0 && inputSampleR < 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
inputSampleL = inputSampleR = out;
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);

View file

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

View file

@ -0,0 +1,66 @@
/* ========================================
* LRConvolve3 - LRConvolve3.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __LRConvolve3_H
#define __LRConvolve3_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParamA =0,
kParamB =1,
kNumParameters = 2
}; //
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'lrcx'; //Change this to what the AU identity is!
class LRConvolve3 :
public AudioEffectX
{
public:
LRConvolve3(audioMasterCallback audioMaster);
~LRConvolve3();
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;
double iirSample;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,112 @@
/* ========================================
* LRConvolve3 - LRConvolve3.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __LRConvolve3_H
#include "LRConvolve3.h"
#endif
void LRConvolve3::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 smooth = pow(A,4)*(0.5/overallscale);
double channel = B;
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 carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier/modulate)*modulate;
if (carrier < 0.0) carrier = -sqrt(carrier/modulate)*modulate;
inputSampleL = inputSampleR = carrier;
//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 LRConvolve3::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 smooth = pow(A,4)*(0.5/overallscale);
double channel = B;
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 carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier/modulate)*modulate;
if (carrier < 0.0) carrier = -sqrt(carrier/modulate)*modulate;
inputSampleL = inputSampleR = carrier;
//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

@ -15,6 +15,7 @@ RingModulator::RingModulator(audioMasterCallback audioMaster) :
A = 0.5;
B = 0.5;
C = 0.0;
D = 0.0;
sinePosL = 0.0;
sinePosR = 0.0;
@ -57,6 +58,7 @@ VstInt32 RingModulator::getChunk (void** data, bool isPreset)
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. */
@ -71,6 +73,7 @@ VstInt32 RingModulator::setChunk (void* data, VstInt32 byteSize, bool isPreset)
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
@ -83,6 +86,7 @@ void RingModulator::setParameter(VstInt32 index, float value) {
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!
}
}
@ -92,6 +96,7 @@ float RingModulator::getParameter(VstInt32 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
}
@ -100,7 +105,8 @@ void RingModulator::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Freq", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Dry/Wet", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Soar", kVstMaxParamStrLen); break;
case kParamD: vst_strncpy (text, "Dry/Wet", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
@ -110,6 +116,7 @@ void RingModulator::getParameterDisplay(VstInt32 index, char *text) {
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
}
@ -119,6 +126,7 @@ void RingModulator::getParameterLabel(VstInt32 index, char *text) {
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!
}
}

View file

@ -19,7 +19,8 @@ enum {
kParamA =0,
kParamB =1,
kParamC =2,
kNumParameters = 3
kParamD =3,
kNumParameters = 4
}; //
const int kNumPrograms = 0;
@ -57,6 +58,7 @@ private:
float A;
float B;
float C;
float D;
double sinePosL;
double sinePosR;

View file

@ -21,7 +21,8 @@ void RingModulator::processReplacing(float **inputs, float **outputs, VstInt32 s
incLA = incLB; incLB = pow(A,5)/overallscale;
incRA = incRB; incRB = pow(B,5)/overallscale;
double wet = pow(C,2);
double soar = 0.3-(C*0.3);
double wet = pow(D,2);
while (--sampleFrames >= 0)
{
@ -44,31 +45,31 @@ void RingModulator::processReplacing(float **inputs, float **outputs, VstInt32 s
double sinResultR = sin(sinePosR);
double out = 0.0;
double snM = fabs(sinResultL);
double snM = fabs(sinResultL)+(soar*soar);
double inM = fabs(inputSampleL);
if (inM < snM) {
inM = fabs(sinResultL);
snM = fabs(inputSampleL);
snM = fabs(inputSampleL)+(soar*soar);
}
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleL = out;
out = 0.0;
snM = fabs(sinResultR);
snM = fabs(sinResultR)+(soar*soar);
inM = fabs(inputSampleR);
if (inM < snM) {
inM = fabs(sinResultR);
snM = fabs(inputSampleR);
snM = fabs(inputSampleR)+(soar*soar);
}
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleR = out;
if (wet != 1.0) {
@ -110,7 +111,8 @@ void RingModulator::processDoubleReplacing(double **inputs, double **outputs, Vs
incLA = incLB; incLB = pow(A,5)/overallscale;
incRA = incRB; incRB = pow(B,5)/overallscale;
double wet = pow(C,2);
double soar = 0.3-(C*0.3);
double wet = pow(D,2);
while (--sampleFrames >= 0)
{
@ -133,31 +135,31 @@ void RingModulator::processDoubleReplacing(double **inputs, double **outputs, Vs
double sinResultR = sin(sinePosR);
double out = 0.0;
double snM = fabs(sinResultL);
double snM = fabs(sinResultL)+(soar*soar);
double inM = fabs(inputSampleL);
if (inM < snM) {
inM = fabs(sinResultL);
snM = fabs(inputSampleL);
snM = fabs(inputSampleL)+(soar*soar);
}
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleL = out;
out = 0.0;
snM = fabs(sinResultR);
snM = fabs(sinResultR)+(soar*soar);
inM = fabs(inputSampleR);
if (inM < snM) {
inM = fabs(sinResultR);
snM = fabs(inputSampleR);
snM = fabs(inputSampleR)+(soar*soar);
}
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleR = out;
if (wet != 1.0) {

View file

@ -0,0 +1,144 @@
/* ========================================
* SquareRoot - SquareRoot.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __SquareRoot_H
#include "SquareRoot.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new SquareRoot(audioMaster);}
SquareRoot::SquareRoot(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
B = 0.0;
C = 0.5;
D = 1.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
}
SquareRoot::~SquareRoot() {}
VstInt32 SquareRoot::getVendorVersion () {return 1000;}
void SquareRoot::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void SquareRoot::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 SquareRoot::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 SquareRoot::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 SquareRoot::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 SquareRoot::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 SquareRoot::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "In", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Soar", kVstMaxParamStrLen); break;
case kParamC: vst_strncpy (text, "Out", kVstMaxParamStrLen); break;
case kParamD: vst_strncpy (text, "Dry/Wet", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void SquareRoot::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 SquareRoot::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 SquareRoot::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool SquareRoot::getEffectName(char* name) {
vst_strncpy(name, "SquareRoot", kVstMaxProductStrLen); return true;
}
VstPlugCategory SquareRoot::getPlugCategory() {return kPlugCategEffect;}
bool SquareRoot::getProductString(char* text) {
vst_strncpy (text, "airwindows SquareRoot", kVstMaxProductStrLen); return true;
}
bool SquareRoot::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,68 @@
/* ========================================
* SquareRoot - SquareRoot.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __SquareRoot_H
#define __SquareRoot_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 = 'sqrt'; //Change this to what the AU identity is!
class SquareRoot :
public AudioEffectX
{
public:
SquareRoot(audioMasterCallback audioMaster);
~SquareRoot();
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;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,134 @@
/* ========================================
* SquareRoot - SquareRoot.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __SquareRoot_H
#include "SquareRoot.h"
#endif
void SquareRoot::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
double in = A*2.0; in *= in;
double soar = 0.3-(B*0.3);
double out = C*2.0; out *= out;
double wet = D;
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;
if (in !=1.0) {
inputSampleL *= in;
inputSampleR *= in;
}
double temp = fabs(inputSampleL)+(soar*soar);
if (inputSampleL > 0.0) inputSampleL = fmax((sqrt(1.0/temp)*temp)-soar,0.0);
if (inputSampleL < 0.0) inputSampleL = fmin((-sqrt(1.0/temp)*temp)+soar,0.0);
temp = fabs(inputSampleR)+(soar*soar);
if (inputSampleR > 0.0) inputSampleR = fmax((sqrt(1.0/temp)*temp)-soar,0.0);
if (inputSampleR < 0.0) inputSampleR = fmin((-sqrt(1.0/temp)*temp)+soar,0.0);
if (out !=1.0) {
inputSampleL *= out;
inputSampleR *= out;
}
if (wet !=1.0) {
inputSampleL = (inputSampleL * wet) + (drySampleL * (1.0-wet));
inputSampleR = (inputSampleR * wet) + (drySampleR * (1.0-wet));
}
//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 SquareRoot::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
double in = A*2.0; in *= in;
double soar = 0.3-(B*0.3);
double out = C*2.0; out *= out;
double wet = D;
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;
if (in !=1.0) {
inputSampleL *= in;
inputSampleR *= in;
}
double temp = fabs(inputSampleL)+(soar*soar);
if (inputSampleL > 0.0) inputSampleL = fmax((sqrt(1.0/temp)*temp)-soar,0.0);
if (inputSampleL < 0.0) inputSampleL = fmin((-sqrt(1.0/temp)*temp)+soar,0.0);
temp = fabs(inputSampleR)+(soar*soar);
if (inputSampleR > 0.0) inputSampleR = fmax((sqrt(1.0/temp)*temp)-soar,0.0);
if (inputSampleR < 0.0) inputSampleR = fmin((-sqrt(1.0/temp)*temp)+soar,0.0);
if (out !=1.0) {
inputSampleL *= out;
inputSampleR *= out;
}
if (wet !=1.0) {
inputSampleL = (inputSampleL * wet) + (drySampleL * (1.0-wet));
inputSampleR = (inputSampleR * wet) + (drySampleR * (1.0-wet));
}
//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

@ -12,7 +12,8 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new S
SweetWide::SweetWide(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
A = 0.5;
A = 0.0;
B = 0.5;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
@ -48,6 +49,7 @@ VstInt32 SweetWide::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = A;
chunkData[1] = B;
/* 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. */
@ -60,6 +62,7 @@ VstInt32 SweetWide::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
A = pinParameter(chunkData[0]);
B = pinParameter(chunkData[1]);
/* We're ignoring byteSize as we found it to be a filthy liar */
/* calculate any other fields you need here - you could copy in
@ -70,6 +73,7 @@ VstInt32 SweetWide::setChunk (void* data, VstInt32 byteSize, bool isPreset)
void SweetWide::setParameter(VstInt32 index, float value) {
switch (index) {
case kParamA: A = value; break;
case kParamB: B = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
@ -77,13 +81,15 @@ void SweetWide::setParameter(VstInt32 index, float value) {
float SweetWide::getParameter(VstInt32 index) {
switch (index) {
case kParamA: return A; break;
case kParamB: return B; 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 SweetWide::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "Un/Wide", kVstMaxParamStrLen); break;
case kParamA: vst_strncpy (text, "Soar", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "Un/Wide", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
@ -91,6 +97,7 @@ void SweetWide::getParameterName(VstInt32 index, char *text) {
void SweetWide::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
@ -98,6 +105,7 @@ void SweetWide::getParameterDisplay(VstInt32 index, char *text) {
void SweetWide::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}

View file

@ -17,7 +17,8 @@
enum {
kParamA =0,
kNumParameters = 1
kParamB =1,
kNumParameters = 2
}; //
const int kNumPrograms = 0;
@ -53,6 +54,7 @@ private:
std::set< std::string > _canDo;
float A;
float B;
uint32_t fpdL;
uint32_t fpdR;

View file

@ -14,7 +14,8 @@ void SweetWide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
float* out1 = outputs[0];
float* out2 = outputs[1];
double blend = -(A-0.5);
double soar = 0.3-(A*0.3);
double blend = -(B-0.5);
while (--sampleFrames >= 0)
{
@ -25,12 +26,12 @@ void SweetWide::processReplacing(float **inputs, float **outputs, VstInt32 sampl
double outL = 0.0;
double outR = 0.0;
if (inputSampleL > 0.0) outL = sqrt(inputSampleL*fabs(inputSampleR));
if (inputSampleL < 0.0) outL = -sqrt(-inputSampleL*fabs(inputSampleR));
if (inputSampleR > 0.0) outR = sqrt(inputSampleR*fabs(inputSampleL));
if (inputSampleR < 0.0) outR = -sqrt(-inputSampleR*fabs(inputSampleL));
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0) outL = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0) outL = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleR > 0.0) outR = fmax((sqrt(inL/inR)*inR)-soar,0.0);
if (inputSampleR < 0.0) outR = fmin((-sqrt(inL/inR)*inR)+soar,0.0);
inputSampleL = (outL * blend) + (inputSampleL * (1.0-blend));
inputSampleR = (outR * blend) + (inputSampleR * (1.0-blend));
@ -61,7 +62,8 @@ void SweetWide::processDoubleReplacing(double **inputs, double **outputs, VstInt
double* out1 = outputs[0];
double* out2 = outputs[1];
double blend = -(A-0.5);
double soar = 0.3-(A*0.3);
double blend = -(B-0.5);
while (--sampleFrames >= 0)
{
@ -72,12 +74,12 @@ void SweetWide::processDoubleReplacing(double **inputs, double **outputs, VstInt
double outL = 0.0;
double outR = 0.0;
if (inputSampleL > 0.0) outL = sqrt(inputSampleL*fabs(inputSampleR));
if (inputSampleL < 0.0) outL = -sqrt(-inputSampleL*fabs(inputSampleR));
if (inputSampleR > 0.0) outR = sqrt(inputSampleR*fabs(inputSampleL));
if (inputSampleR < 0.0) outR = -sqrt(-inputSampleR*fabs(inputSampleL));
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0) outL = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0) outL = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleR > 0.0) outR = fmax((sqrt(inL/inR)*inR)-soar,0.0);
if (inputSampleR < 0.0) outR = fmin((-sqrt(inL/inR)*inR)+soar,0.0);
inputSampleL = (outL * blend) + (inputSampleL * (1.0-blend));
inputSampleR = (outR * blend) + (inputSampleR * (1.0-blend));

View file

@ -0,0 +1,306 @@
/*
* File: Elliptical.cpp
*
* Version: 1.0
*
* Created: 2/13/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.
*
*/
/*=============================================================================
Elliptical.cpp
=============================================================================*/
#include "Elliptical.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(Elliptical)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::Elliptical
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Elliptical::Elliptical(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::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 Elliptical::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Elliptical::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____EllipticalEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::EllipticalKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirA = 0.0;
iirB = 0.0;
iirC = 0.0;
iirD = 0.0;
iirE = 0.0;
iirF = 0.0;
iirG = 0.0;
iirH = 0.0;
fpFlip = true;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus Elliptical::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 rangescale = 0.1 / overallscale;
double cutoff = pow(GetParameter( kParam_A ),3);
double slope = pow(GetParameter( kParam_B ),3) * 6.0;
double newA = cutoff * rangescale;
double newB = newA; //other part of interleaved IIR is the same
double fpOld = 0.618033988749894848204586; //golden ratio!
double newC = cutoff * rangescale; //first extra pole is the same
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newD = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newE = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newF = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newG = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newH = cutoff * rangescale;
//converge toward the unvarying fixed cutoff value
double polesC = slope; if (slope > 1.0) polesC = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesD = slope; if (slope > 1.0) polesD = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesE = slope; if (slope > 1.0) polesE = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesF = slope; if (slope > 1.0) polesF = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesG = slope; if (slope > 1.0) polesG = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesH = slope; if (slope > 1.0) polesH = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
//each one will either be 0.0, the fractional slope value, or 1
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;
double mid = inputSampleL + inputSampleR;
double side = inputSampleL - inputSampleR;
//assign mid and side.Between these sections, you can do mid/side processing
double temp = side;
double correction;
if (fpFlip) {
iirA = (iirA * (1.0 - newA)) + (temp * newA); temp -= iirA; correction = iirA;
} else {
iirB = (iirB * (1.0 - newB)) + (temp * newB); temp -= iirB; correction = iirB;
}
iirC = (iirC * (1.0 - newC)) + (temp * newC); temp -= iirC;
iirD = (iirD * (1.0 - newD)) + (temp * newD); temp -= iirD;
iirE = (iirE * (1.0 - newE)) + (temp * newE); temp -= iirE;
iirF = (iirF * (1.0 - newF)) + (temp * newF); temp -= iirF;
iirG = (iirG * (1.0 - newG)) + (temp * newG); temp -= iirG;
iirH = (iirH * (1.0 - newH)) + (temp * newH); temp -= iirH;
//set up all the iir filters in case they are used
if (polesC == 1.0) correction += iirC; if (polesC > 0.0 && polesC < 1.0) correction += (iirC * polesC);
if (polesD == 1.0) correction += iirD; if (polesD > 0.0 && polesD < 1.0) correction += (iirD * polesD);
if (polesE == 1.0) correction += iirE; if (polesE > 0.0 && polesE < 1.0) correction += (iirE * polesE);
if (polesF == 1.0) correction += iirF; if (polesF > 0.0 && polesF < 1.0) correction += (iirF * polesF);
if (polesG == 1.0) correction += iirG; if (polesG > 0.0 && polesG < 1.0) correction += (iirG * polesG);
if (polesH == 1.0) correction += iirH; if (polesH > 0.0 && polesH < 1.0) correction += (iirH * polesH);
//each of these are added directly if they're fully engaged,
//multiplied by 0-1 if they are the interpolated one, or skipped if they are beyond the interpolated one.
//the purpose is to do all the math at the floating point exponent nearest to the tiny value in use.
//also, it's formatted that way to easily substitute the next variable: this could be written as a loop
//with everything an array value. However, this makes just as much sense for this few poles.
side -= correction;
fpFlip = !fpFlip;
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
//unassign mid and side
//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 @@
_EllipticalEntry

View file

@ -0,0 +1,132 @@
/*
* File: Elliptical.h
*
* Version: 1.0
*
* Created: 2/13/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 "EllipticalVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Elliptical_h__
#define __Elliptical_h__
#pragma mark ____Elliptical Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.5;
static CFStringRef kParameterAName = CFSTR("Cutoff");
static CFStringRef kParameterBName = CFSTR("Slope");
//Alter the name if desired, but using the plugin name is a start
enum {
kParam_A =0,
kParam_B =1,
//Add your parameters here...
kNumberOfParameters=2
};
#pragma mark ____Elliptical
class Elliptical : public AUEffectBase
{
public:
Elliptical(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Elliptical () { 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 kEllipticalVersion; }
private:
double iirA;
double iirB; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
double iirC; //we introduce the second pole at the same frequency, to become a pseudo-Capacitor behavior
double iirD;
double iirE;
double iirF; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirG;
double iirH; //seven poles max, and the final pole is always at 20hz directly.
bool fpFlip;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: Elliptical.r
*
* Version: 1.0
*
* Created: 2/13/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 "EllipticalVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Elliptical 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Elliptical~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Elliptical
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Elliptical_COMP_SUBTYPE
#define COMP_MANUF Elliptical_COMP_MANF
#define VERSION kEllipticalVersion
#define NAME "Airwindows: Elliptical"
#define DESCRIPTION "Elliptical AU"
#define ENTRY_POINT "EllipticalEntry"
#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 /* Elliptical */;
breakpoints = (
);
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 = 761178492;
PBXWorkspaceStateSaveDate = 761178492;
};
perUserProjectItems = {
8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */ = 8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */;
8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */ = 8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* Elliptical.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1206, 5688}}";
sepNavSelRange = "{10992, 2094}";
sepNavVisRange = "{10198, 2333}";
sepNavWindowFrame = "{{601, 66}, {1253, 812}}";
};
};
8BA05A690720730100365D66 /* EllipticalVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {948, 1188}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 53}";
sepNavWindowFrame = "{{15, 62}, {1043, 811}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* EllipticalVersion.h */;
name = "EllipticalVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 53;
vrLoc = 0;
};
8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* EllipticalVersion.h */;
name = "EllipticalVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 53;
vrLoc = 0;
};
8BC6025B073B072D006C4272 /* Elliptical.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2376}}";
sepNavSelRange = "{4917, 476}";
sepNavVisRange = "{2820, 1210}";
sepNavWindowFrame = "{{397, 38}, {1043, 811}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* Elliptical */ = {
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 /* Elliptical.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Elliptical.r */; };
8BA05A6B0720730100365D66 /* Elliptical.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Elliptical.cpp */; };
8BA05A6E0720730100365D66 /* EllipticalVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* EllipticalVersion.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 /* Elliptical.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Elliptical.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 /* Elliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Elliptical.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Elliptical.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Elliptical.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Elliptical.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Elliptical.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* EllipticalVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EllipticalVersion.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 /* Elliptical.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Elliptical.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Elliptical.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Elliptical.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 /* Elliptical */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Elliptical;
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 /* Elliptical.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Elliptical.h */,
8BA05A660720730100365D66 /* Elliptical.cpp */,
8BA05A670720730100365D66 /* Elliptical.exp */,
8BA05A680720730100365D66 /* Elliptical.r */,
8BA05A690720730100365D66 /* EllipticalVersion.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 /* EllipticalVersion.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 /* Elliptical.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 /* Elliptical */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Elliptical" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = Elliptical;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Elliptical;
productReference = 8D01CCD20486CAD60068D4B7 /* Elliptical.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 "Elliptical" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* Elliptical */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Elliptical */,
);
};
/* 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 /* Elliptical.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* Elliptical.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 = Elliptical.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 = Elliptical;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = Elliptical.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 = Elliptical;
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 "Elliptical" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Elliptical" */ = {
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: EllipticalVersion.h
*
* Version: 1.0
*
* Created: 2/13/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 __EllipticalVersion_h__
#define __EllipticalVersion_h__
#ifdef DEBUG
#define kEllipticalVersion 0xFFFFFFFF
#else
#define kEllipticalVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Elliptical_COMP_MANF 'Dthr'
#define Elliptical_COMP_SUBTYPE 'elli'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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

@ -60,8 +60,7 @@ LRConvolve2::LRConvolve2(AudioUnit component)
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
@ -103,13 +102,6 @@ ComponentResult LRConvolve2::GetParameterInfo(AudioUnitScope inScope,
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;
default:
result = kAudioUnitErr_InvalidParameter;
@ -181,7 +173,6 @@ ComponentResult LRConvolve2::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve2::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirSample = 0.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
@ -200,12 +191,8 @@ OSStatus LRConvolve2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionF
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 smooth = pow(GetParameter( kParam_A ),4)*(0.5/overallscale);
double channel = GetParameter( kParam_B );
double soar = 0.3-(GetParameter( kParam_A )*0.3);
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
@ -213,18 +200,16 @@ OSStatus LRConvolve2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionF
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier*modulate);
if (carrier < 0.0) carrier = -sqrt(-carrier*modulate);
inputSampleL = inputSampleR = carrier;
//blame Jannik Asfaig (BoyXx76) for this (and me) :D
double out = 0.0;
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0 && inputSampleR > 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0 && inputSampleR > 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL > 0.0 && inputSampleR < 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL < 0.0 && inputSampleR < 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
inputSampleL = inputSampleR = out;
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;

View file

@ -55,15 +55,12 @@
// parameters
static const float kDefaultValue_ParamA = 0.0;
static const float kDefaultValue_ParamB = 0.0;
static CFStringRef kParameterAName = CFSTR("Smooth");
static CFStringRef kParameterBName = CFSTR("Channel");
static CFStringRef kParameterAName = CFSTR("Soar");
enum {
kParam_A =0,
kParam_B =1,
kNumberOfParameters=2
kNumberOfParameters=1
};
#pragma mark ____LRConvolve2
@ -110,7 +107,6 @@ public:
virtual ComponentResult Version() { return kLRConvolve2Version; }
private:
double iirSample;
uint32_t fpdL;
uint32_t fpdR;
};

View file

@ -49,72 +49,52 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 759962244;
PBXWorkspaceStateSaveDate = 759962244;
PBXPerProjectTemplateStateSaveDate = 761175488;
PBXWorkspaceStateSaveDate = 761175488;
};
perUserProjectItems = {
8B292C6B2D4841130077EB56 /* PBXTextBookmark */ = 8B292C6B2D4841130077EB56 /* PBXTextBookmark */;
8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */;
8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */;
8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */;
8B1EBD032D5D3C86000D167E /* PBXTextBookmark */ = 8B1EBD032D5D3C86000D167E /* PBXTextBookmark */;
8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */ = 8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */;
8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */ = 8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */;
8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */ = 8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B292C6B2D4841130077EB56 /* PBXTextBookmark */ = {
8B1EBD032D5D3C86000D167E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* LRConvolve2.cpp */;
name = "LRConvolve2.cpp: 207";
name = "LRConvolve2.cpp: 186";
rLen = 0;
rLoc = 9204;
rLoc = 8645;
rType = 0;
vrLen = 136;
vrLoc = 9100;
vrLen = 258;
vrLoc = 3;
};
8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 66";
rLen = 0;
rLoc = 3102;
rType = 0;
vrLen = 169;
vrLoc = 3306;
};
8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */ = {
8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve2Version.h */;
name = "LRConvolve2Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 185;
vrLoc = 2790;
};
8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve2Version.h */;
name = "LRConvolve2Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 184;
vrLoc = 2790;
vrLen = 0;
vrLoc = 0;
};
8BA05A660720730100365D66 /* LRConvolve2.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {984, 4716}}";
sepNavSelRange = "{9484, 425}";
sepNavVisRange = "{9134, 1392}";
sepNavWindowFrame = "{{409, 50}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {984, 4392}}";
sepNavSelRange = "{8880, 576}";
sepNavVisRange = "{8303, 1738}";
sepNavWindowFrame = "{{666, 50}, {1031, 828}}";
};
};
8BA05A690720730100365D66 /* LRConvolve2Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1152}}";
sepNavIntBoundsRect = "{{0, 0}, {554, 1116}}";
sepNavSelRange = "{2920, 0}";
sepNavVisRange = "{2790, 184}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 45}, {1031, 828}}";
};
};
@ -125,12 +105,32 @@
sepNavVisRange = "{0, 1336}";
};
};
8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 63";
rLen = 0;
rLoc = 2984;
rType = 0;
vrLen = 256;
vrLoc = 3274;
};
8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 63";
rLen = 0;
rLoc = 2984;
rType = 0;
vrLen = 186;
vrLoc = 3274;
};
8BC6025B073B072D006C4272 /* LRConvolve2.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2178}}";
sepNavSelRange = "{4831, 19}";
sepNavVisRange = "{3578, 1409}";
sepNavWindowFrame = "{{409, 38}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {795, 2484}}";
sepNavSelRange = "{2984, 0}";
sepNavVisRange = "{3274, 186}";
sepNavWindowFrame = "{{7, 50}, {1031, 828}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BB92D47F3AA0077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>LRConvolve2Version.h</string>
<string>LRConvolve2.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -348,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BBA2D47F3AA0077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>LRConvolve2Version.h</string>
<string>LRConvolve2.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B54B0E52D4C21B500A70B04</string>
<string>8BAB9AA02D5E9EAB0059C6F4</string>
<key>history</key>
<array>
<string>8B292C6B2D4841130077EB56</string>
<string>8B54B0E32D4C21B500A70B04</string>
<string>8B54B0E42D4C21B500A70B04</string>
<string>8B508DBD2D5ABC1500D53971</string>
<string>8B1EBD032D5D3C86000D167E</string>
<string>8BAB9A6B2D5E99370059C6F4</string>
</array>
</dict>
<key>SplitCount</key>
@ -373,7 +373,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@ -398,7 +398,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -452,7 +452,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
<string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B54B0E62D4C21B500A70B04</string>
<string>8BAB9AA12D5E9EAB0059C6F4</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B54B0E72D4C21B500A70B04</string>
<string>8BAB9AA22D5E9EAB0059C6F4</string>
<string>8B292BB92D47F3AA0077EB56</string>
<string>8B54B0E82D4C21B500A70B04</string>
<string>8BAB9AA32D5E9EAB0059C6F4</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -637,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>759964085.64274299</real>
<real>761175723.47224796</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -654,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B54B0E92D4C21B500A70B04</string>
<string>8BAB9AA42D5E9EAB0059C6F4</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/LRConvolve2/LRConvolve2.xcodeproj</string>
</array>
<key>WindowString</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

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,248 @@
/*
* File: LRConvolve3.cpp
*
* Version: 1.0
*
* Created: 2/10/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.
*
*/
/*=============================================================================
LRConvolve3.cpp
=============================================================================*/
#include "LRConvolve3.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(LRConvolve3)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::LRConvolve3
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LRConvolve3::LRConvolve3(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::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 LRConvolve3::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// LRConvolve3::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____LRConvolve3EffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::LRConvolve3Kernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirSample = 0.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus LRConvolve3::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 smooth = pow(GetParameter( kParam_A ),4)*(0.5/overallscale);
double channel = GetParameter( kParam_B );
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;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier/modulate)*modulate;
if (carrier < 0.0) carrier = -sqrt(carrier/modulate)*modulate;
inputSampleL = inputSampleR = carrier;
//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 @@
_LRConvolve3Entry

View file

@ -0,0 +1,122 @@
/*
* File: LRConvolve3.h
*
* Version: 1.0
*
* Created: 2/10/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 "LRConvolve3Version.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __LRConvolve3_h__
#define __LRConvolve3_h__
#pragma mark ____LRConvolve3 Parameters
// parameters
static const float kDefaultValue_ParamA = 0.0;
static const float kDefaultValue_ParamB = 0.0;
static CFStringRef kParameterAName = CFSTR("Smooth");
static CFStringRef kParameterBName = CFSTR("Channel");
enum {
kParam_A =0,
kParam_B =1,
//Add your parameters here...
kNumberOfParameters=2
};
#pragma mark ____LRConvolve3
class LRConvolve3 : public AUEffectBase
{
public:
LRConvolve3(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~LRConvolve3 () { 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 kLRConvolve3Version; }
private:
double iirSample;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,141 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* LRConvolve3 */;
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 = 761175778;
PBXWorkspaceStateSaveDate = 761175778;
};
perUserProjectItems = {
8BAB9ACF2D5EA08D0059C6F4 /* PBXTextBookmark */ = 8BAB9ACF2D5EA08D0059C6F4 /* PBXTextBookmark */;
8BAB9AD02D5EA08D0059C6F4 /* PBXTextBookmark */ = 8BAB9AD02D5EA08D0059C6F4 /* PBXTextBookmark */;
8BAB9AD12D5EA08D0059C6F4 /* PBXTextBookmark */ = 8BAB9AD12D5EA08D0059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* LRConvolve3.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {956, 4662}}";
sepNavSelRange = "{9607, 0}";
sepNavVisRange = "{9003, 1493}";
sepNavWindowFrame = "{{719, 44}, {1003, 834}}";
};
};
8BA05A690720730100365D66 /* LRConvolve3Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {975, 1350}}";
sepNavSelRange = "{2920, 0}";
sepNavVisRange = "{2790, 184}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BAB9ACF2D5EA08D0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve3.h */;
name = "LRConvolve3.h: 67";
rLen = 0;
rLoc = 3133;
rType = 0;
vrLen = 182;
vrLoc = 4143;
};
8BAB9AD02D5EA08D0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve3Version.h */;
name = "LRConvolve3Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 184;
vrLoc = 2790;
};
8BAB9AD12D5EA08D0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve3Version.h */;
name = "LRConvolve3Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 184;
vrLoc = 2790;
};
8BC6025B073B072D006C4272 /* LRConvolve3.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2196}}";
sepNavSelRange = "{3133, 0}";
sepNavVisRange = "{3576, 1442}";
sepNavWindowFrame = "{{670, 44}, {1003, 834}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* LRConvolve3 */ = {
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 /* LRConvolve3.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* LRConvolve3.r */; };
8BA05A6B0720730100365D66 /* LRConvolve3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* LRConvolve3.cpp */; };
8BA05A6E0720730100365D66 /* LRConvolve3Version.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* LRConvolve3Version.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 /* LRConvolve3.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* LRConvolve3.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 /* LRConvolve3.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = LRConvolve3.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* LRConvolve3.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = LRConvolve3.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* LRConvolve3.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = LRConvolve3.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* LRConvolve3Version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LRConvolve3Version.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 /* LRConvolve3.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LRConvolve3.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* LRConvolve3.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LRConvolve3.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 /* LRConvolve3 */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = LRConvolve3;
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 /* LRConvolve3.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* LRConvolve3.h */,
8BA05A660720730100365D66 /* LRConvolve3.cpp */,
8BA05A670720730100365D66 /* LRConvolve3.exp */,
8BA05A680720730100365D66 /* LRConvolve3.r */,
8BA05A690720730100365D66 /* LRConvolve3Version.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 /* LRConvolve3Version.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 /* LRConvolve3.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 /* LRConvolve3 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "LRConvolve3" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = LRConvolve3;
productInstallPath = "$(HOME)/Library/Bundles";
productName = LRConvolve3;
productReference = 8D01CCD20486CAD60068D4B7 /* LRConvolve3.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 "LRConvolve3" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* LRConvolve3 */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* LRConvolve3 */,
);
};
/* 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 /* LRConvolve3.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* LRConvolve3.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 = LRConvolve3.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 = LRConvolve3;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = LRConvolve3.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 = LRConvolve3;
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 "LRConvolve3" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "LRConvolve3" */ = {
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: LRConvolve3Version.h
*
* Version: 1.0
*
* Created: 2/10/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 __LRConvolve3Version_h__
#define __LRConvolve3Version_h__
#ifdef DEBUG
#define kLRConvolve3Version 0xFFFFFFFF
#else
#define kLRConvolve3Version 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define LRConvolve3_COMP_MANF 'Dthr'
#define LRConvolve3_COMP_SUBTYPE 'lrcx'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

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

@ -62,6 +62,7 @@ RingModulator::RingModulator(AudioUnit component)
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);
@ -119,7 +120,14 @@ ComponentResult RingModulator::GetParameterInfo(AudioUnitScope inScope,
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamC;
break;
default:
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;
}
@ -217,7 +225,8 @@ OSStatus RingModulator::ProcessBufferLists(AudioUnitRenderActionFlags & ioActio
incLA = incLB; incLB = pow(GetParameter( kParam_A ),5)/overallscale;
incRA = incRB; incRB = pow(GetParameter( kParam_B ),5)/overallscale;
double wet = pow(GetParameter( kParam_C ),2);
double soar = 0.3-(GetParameter( kParam_C )*0.3);
double wet = pow(GetParameter( kParam_D ),2);
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
@ -239,31 +248,31 @@ OSStatus RingModulator::ProcessBufferLists(AudioUnitRenderActionFlags & ioActio
double sinResultR = sin(sinePosR);
double out = 0.0;
double snM = fabs(sinResultL);
double snM = fabs(sinResultL)+(soar*soar);
double inM = fabs(inputSampleL);
if (inM < snM) {
inM = fabs(sinResultL);
snM = fabs(inputSampleL);
snM = fabs(inputSampleL)+(soar*soar);
}
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleL > 0.0 && sinResultL > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleL < 0.0 && sinResultL > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL > 0.0 && sinResultL < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleL < 0.0 && sinResultL < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleL = out;
out = 0.0;
snM = fabs(sinResultR);
snM = fabs(sinResultR)+(soar*soar);
inM = fabs(inputSampleR);
if (inM < snM) {
inM = fabs(sinResultR);
snM = fabs(inputSampleR);
snM = fabs(inputSampleR)+(soar*soar);
}
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSampleR > 0.0 && sinResultR > 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
if (inputSampleR < 0.0 && sinResultR > 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR > 0.0 && sinResultR < 0.0) out = fmin((-sqrt(inM/snM)*snM)+soar,0.0);
if (inputSampleR < 0.0 && sinResultR < 0.0) out = fmax((sqrt(inM/snM)*snM)-soar,0.0);
inputSampleR = out;
if (wet != 1.0) {

View file

@ -57,17 +57,20 @@
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.5;
static const float kDefaultValue_ParamC = 0.0;
static const float kDefaultValue_ParamD = 0.0;
static CFStringRef kParameterAName = CFSTR("Freq");
static CFStringRef kParameterBName = CFSTR("Freq");
static CFStringRef kParameterCName = CFSTR("Dry/Wet");
static CFStringRef kParameterCName = CFSTR("Soar");
static CFStringRef kParameterDName = CFSTR("Dry/Wet");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=3
kNumberOfParameters=4
};
#pragma mark ____RingModulator
@ -120,6 +123,7 @@ public:
double incLB;
double incRA;
double incRB;
uint32_t fpdL;
uint32_t fpdR;
};

View file

@ -51,28 +51,27 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 760406079;
PBXWorkspaceStateSaveDate = 760406079;
PBXPerProjectTemplateStateSaveDate = 761176342;
PBXWorkspaceStateSaveDate = 761176342;
};
perUserProjectItems = {
8B8127252D529DBE00B26D63 /* PBXTextBookmark */ = 8B8127252D529DBE00B26D63 /* PBXTextBookmark */;
8B1EBD462D5D4A85000D167E /* PBXTextBookmark */ = 8B1EBD462D5D4A85000D167E /* PBXTextBookmark */;
8B81274D2D52A41F00B26D63 /* PBXTextBookmark */ = 8B81274D2D52A41F00B26D63 /* PBXTextBookmark */;
8B8127872D52AAC600B26D63 /* PBXTextBookmark */ = 8B8127872D52AAC600B26D63 /* PBXTextBookmark */;
8B8128442D52E39600B26D63 /* PBXTextBookmark */ = 8B8128442D52E39600B26D63 /* PBXTextBookmark */;
8B8128452D52E39600B26D63 /* PBXTextBookmark */ = 8B8128452D52E39600B26D63 /* PBXTextBookmark */;
8BAB9B092D5EA7740059C6F4 /* PBXTextBookmark */ = 8BAB9B092D5EA7740059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B8127252D529DBE00B26D63 /* PBXTextBookmark */ = {
8B1EBD462D5D4A85000D167E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* RingModulatorVersion.h */;
name = "RingModulatorVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 38;
vrLen = 0;
vrLoc = 0;
};
8B81272A2D529DBE00B26D63 /* AcousticBass.cpp */ = {
@ -97,42 +96,22 @@
fRef = 8BC6025B073B072D006C4272 /* RingModulator.h */;
name = "RingModulator.h: 191";
rLen = 0;
rLoc = 5088;
rLoc = 5203;
rType = 0;
vrLen = 0;
vrLoc = 5226;
};
8B8128442D52E39600B26D63 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* RingModulator.cpp */;
name = "RingModulator.cpp: 221";
rLen = 0;
rLoc = 9877;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8B8128452D52E39600B26D63 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* RingModulatorVersion.h */;
name = "RingModulatorVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8BA05A660720730100365D66 /* RingModulator.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 5274}}";
sepNavSelRange = "{10145, 0}";
sepNavVisRange = "{9314, 1448}";
sepNavWindowFrame = "{{409, 44}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {984, 5868}}";
sepNavSelRange = "{11062, 1122}";
sepNavVisRange = "{10898, 1543}";
sepNavWindowFrame = "{{642, 30}, {1031, 828}}";
};
};
8BA05A690720730100365D66 /* RingModulatorVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1098}}";
sepNavIntBoundsRect = "{{0, 0}, {554, 1098}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{409, 50}, {1031, 828}}";
@ -145,12 +124,22 @@
sepNavVisRange = "{0, 1336}";
};
};
8BAB9B092D5EA7740059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* RingModulatorVersion.h */;
name = "RingModulatorVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8BC6025B073B072D006C4272 /* RingModulator.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2340}}";
sepNavSelRange = "{4993, 96}";
sepNavVisRange = "{3981, 1245}";
sepNavWindowFrame = "{{651, 26}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {1146, 2646}}";
sepNavSelRange = "{5203, 0}";
sepNavVisRange = "{4094, 1241}";
sepNavWindowFrame = "{{409, 50}, {1031, 828}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
<string>614 238 810 487 0 0 1440 878 </string>
<string>807 223 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -352,13 +352,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B8128452D52E39600B26D63</string>
<string>8BAB9B092D5EA7740059C6F4</string>
<key>history</key>
<array>
<string>8B81274D2D52A41F00B26D63</string>
<string>8B8127872D52AAC600B26D63</string>
<string>8B8128442D52E39600B26D63</string>
<string>8B8127252D529DBE00B26D63</string>
<string>8B1EBD462D5D4A85000D167E</string>
</array>
</dict>
<key>SplitCount</key>
@ -372,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {603, 13}}</string>
<string>{{0, 0}, {603, 0}}</string>
<key>RubberWindowFrame</key>
<string>614 238 810 487 0 0 1440 878 </string>
<string>807 223 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>13pt</string>
<string>0pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>428pt</string>
<string>441pt</string>
<key>Tabs</key>
<array>
<dict>
@ -397,9 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 401}}</string>
<string>{{10, 27}, {603, 414}}</string>
<key>RubberWindowFrame</key>
<string>614 238 810 487 0 0 1440 878 </string>
<string>807 223 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -453,7 +452,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 345}}</string>
<string>{{10, 27}, {603, 414}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -481,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B8128462D52E39600B26D63</string>
<string>8BAB9AE22D5EA11D0059C6F4</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B8128472D52E39600B26D63</string>
<string>8BAB9AE32D5EA11D0059C6F4</string>
<string>8B292B8B2D47F3170077EB56</string>
<string>8B8128482D52E39600B26D63</string>
<string>8BAB9AE42D5EA11D0059C6F4</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -658,7 +657,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>760406934.79372394</real>
<real>761177972.04804504</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -675,11 +674,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B8128492D52E39600B26D63</string>
<string>8BAB9B0A2D5EA7740059C6F4</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/RingModulator/RingModulator.xcodeproj</string>
</array>
<key>WindowString</key>
<string>614 238 810 487 0 0 1440 878 </string>
<string>807 223 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -61,6 +61,7 @@ RingModulatorMono::RingModulatorMono(AudioUnit component)
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
SetParameter(kParam_C, kDefaultValue_ParamC );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
@ -111,7 +112,14 @@ ComponentResult RingModulatorMono::GetParameterInfo(AudioUnitScope inScope,
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamB;
break;
default:
case kParam_C:
AUBase::FillInParameterName (outParameterInfo, kParameterCName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamC;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
@ -188,7 +196,8 @@ void RingModulatorMono::RingModulatorMonoKernel::Process( const Float32 *inSou
overallscale *= GetSampleRate();
incA = incB; incB = pow(GetParameter( kParam_A ),5)/overallscale;
double wet = pow(GetParameter( kParam_B ),2);
double soar = 0.3-(GetParameter( kParam_B )*0.3);
double wet = pow(GetParameter( kParam_C ),2);
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
@ -202,17 +211,17 @@ void RingModulatorMono::RingModulatorMonoKernel::Process( const Float32 *inSou
if (sinePos > 6.283185307179586) sinePos -= 6.283185307179586;
double sinResult = sin(sinePos);
double out = 0.0;
double snM = fabs(sinResult);
double snM = fabs(sinResult)+(soar*soar);
double inM = fabs(inputSample);
if (inM < snM) {
inM = fabs(sinResult);
snM = fabs(inputSample);
snM = fabs(inputSample)+(soar*soar);
}
if (inputSample > 0.0 && sinResult > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSample < 0.0 && sinResult > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSample > 0.0 && sinResult < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+0.0575,0.0);
if (inputSample < 0.0 && sinResult < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-0.0575,0.0);
if (inputSample > 0.0 && sinResult > 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-soar,0.0);
if (inputSample < 0.0 && sinResult > 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+soar,0.0);
if (inputSample > 0.0 && sinResult < 0.0) out = fmin((-sqrt((fabs(inM)/snM))*snM)+soar,0.0);
if (inputSample < 0.0 && sinResult < 0.0) out = fmax((sqrt((fabs(inM)/snM))*snM)-soar,0.0);
inputSample = out;
if (wet !=1.0) {

View file

@ -56,15 +56,18 @@
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.0;
static const float kDefaultValue_ParamC = 0.0;
static CFStringRef kParameterAName = CFSTR("Freq");
static CFStringRef kParameterBName = CFSTR("Dry/Wet");
static CFStringRef kParameterBName = CFSTR("Soar");
static CFStringRef kParameterCName = CFSTR("Dry/Wet");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
//Add your parameters here...
kNumberOfParameters=2
kNumberOfParameters=3
};
#pragma mark ____RingModulatorMono

View file

@ -49,19 +49,39 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 760392978;
PBXWorkspaceStateSaveDate = 760392978;
PBXPerProjectTemplateStateSaveDate = 761087276;
PBXWorkspaceStateSaveDate = 761087276;
};
perUserProjectItems = {
8B1EBD342D5D46D4000D167E /* PBXTextBookmark */ = 8B1EBD342D5D46D4000D167E /* PBXTextBookmark */;
8B1EBD352D5D46D4000D167E /* PBXTextBookmark */ = 8B1EBD352D5D46D4000D167E /* PBXTextBookmark */;
8B8127312D529E5400B26D63 /* PlistBookmark */ = 8B8127312D529E5400B26D63 /* PlistBookmark */;
8B81275A2D52A49300B26D63 /* PBXTextBookmark */ = 8B81275A2D52A49300B26D63 /* PBXTextBookmark */;
8B8127F22D52C7DB00B26D63 /* PBXTextBookmark */ = 8B8127F22D52C7DB00B26D63 /* PBXTextBookmark */;
8B8127F32D52C7DB00B26D63 /* PBXTextBookmark */ = 8B8127F32D52C7DB00B26D63 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B1EBD342D5D46D4000D167E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* RingModulatorMono.cpp */;
name = "RingModulatorMono.cpp: 202";
rLen = 0;
rLoc = 9329;
rType = 0;
vrLen = 190;
vrLoc = 9714;
};
8B1EBD352D5D46D4000D167E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* RingModulatorMono.cpp */;
name = "RingModulatorMono.cpp: 202";
rLen = 0;
rLoc = 9329;
rType = 0;
vrLen = 190;
vrLoc = 9714;
};
8B8127312D529E5400B26D63 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
@ -79,36 +99,16 @@
fRef = 8BC6025B073B072D006C4272 /* RingModulatorMono.h */;
name = "RingModulatorMono.h: 204";
rLen = 0;
rLoc = 5271;
rLoc = 5384;
rType = 0;
vrLen = 274;
vrLoc = 7631;
};
8B8127F22D52C7DB00B26D63 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* RingModulatorMono.cpp */;
name = "RingModulatorMono.cpp: 192";
rLen = 0;
rLoc = 8859;
rType = 0;
vrLen = 310;
vrLoc = 9833;
};
8B8127F32D52C7DB00B26D63 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* RingModulatorMono.cpp */;
name = "RingModulatorMono.cpp: 193";
rLen = 0;
rLoc = 8859;
rType = 0;
vrLen = 352;
vrLoc = 9603;
vrLen = 0;
vrLoc = 5397;
};
8BA05A660720730100365D66 /* RingModulatorMono.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {930, 4320}}";
sepNavSelRange = "{8859, 0}";
sepNavVisRange = "{9603, 352}";
sepNavIntBoundsRect = "{{0, 0}, {912, 4500}}";
sepNavSelRange = "{9329, 0}";
sepNavVisRange = "{9714, 190}";
sepNavWindowFrame = "{{8, 44}, {1003, 834}}";
};
};
@ -122,9 +122,9 @@
};
8BC6025B073B072D006C4272 /* RingModulatorMono.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 2322}}";
sepNavSelRange = "{3160, 0}";
sepNavVisRange = "{2855, 1302}";
sepNavIntBoundsRect = "{{0, 0}, {1146, 2880}}";
sepNavSelRange = "{3273, 0}";
sepNavVisRange = "{4385, 1125}";
sepNavWindowFrame = "{{15, 38}, {859, 840}}";
};
};

View file

@ -326,7 +326,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
<string>312 191 841 654 0 0 1440 878 </string>
<string>126 -14 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -354,12 +354,12 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B8127F32D52C7DB00B26D63</string>
<string>8B1EBD352D5D46D4000D167E</string>
<key>history</key>
<array>
<string>8B8127312D529E5400B26D63</string>
<string>8B81275A2D52A49300B26D63</string>
<string>8B8127F22D52C7DB00B26D63</string>
<string>8B1EBD342D5D46D4000D167E</string>
</array>
</dict>
<key>SplitCount</key>
@ -373,18 +373,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {531, 188}}</string>
<string>{{0, 0}, {531, 173}}</string>
<key>RubberWindowFrame</key>
<string>312 191 841 654 0 0 1440 878 </string>
<string>126 -14 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>188pt</string>
<string>173pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>420pt</string>
<string>435pt</string>
<key>Tabs</key>
<array>
<dict>
@ -398,9 +398,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 393}}</string>
<key>RubberWindowFrame</key>
<string>312 191 841 654 0 0 1440 878 </string>
<string>{{10, 27}, {531, 408}}</string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -454,7 +452,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 365}}</string>
<string>{{10, 27}, {531, 408}}</string>
<key>RubberWindowFrame</key>
<string>126 -14 841 654 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -482,11 +482,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B8127F42D52C7DB00B26D63</string>
<string>8B1EBD2D2D5D466D000D167E</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B8127F52D52C7DB00B26D63</string>
<string>8B1EBD2E2D5D466D000D167E</string>
<string>8BD7274A1D46E5A5000176F0</string>
<string>8B8127F62D52C7DB00B26D63</string>
<string>8B1EBD2F2D5D466D000D167E</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -659,7 +659,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>760399835.08549702</real>
<real>761087700.84336805</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -676,10 +676,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B1EBD362D5D46D4000D167E</string>
<string>/Users/christopherjohnson/Desktop/RingModulatorMono/RingModulatorMono.xcodeproj</string>
</array>
<key>WindowString</key>
<string>312 191 841 654 0 0 1440 878 </string>
<string>126 -14 841 654 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

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,238 @@
/*
* File: SquareRoot.cpp
*
* Version: 1.0
*
* Created: 2/10/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.
*
*/
/*=============================================================================
SquareRoot.cpp
=============================================================================*/
#include "SquareRoot.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(SquareRoot)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::SquareRoot
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SquareRoot::SquareRoot(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
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SquareRoot::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SquareRoot::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;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SquareRoot::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SquareRoot::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// SquareRoot::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult SquareRoot::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____SquareRootEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::SquareRootKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void SquareRoot::SquareRootKernel::Reset()
{
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SquareRoot::SquareRootKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void SquareRoot::SquareRootKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
double in = GetParameter( kParam_A )*2.0; in *= in;
double soar = 0.3-(GetParameter( kParam_B )*0.3);
double out = GetParameter( kParam_C )*2.0; out *= out;
double wet = GetParameter( kParam_D );
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
double drySample = inputSample;
if (in !=1.0) {
inputSample *= in;
}
double temp = fabs(inputSample)+(soar*soar);
if (inputSample > 0.0) inputSample = fmax((sqrt(1.0/temp)*temp)-soar,0.0);
if (inputSample < 0.0) inputSample = fmin((-sqrt(1.0/temp)*temp)+soar,0.0);
if (out !=1.0) {
inputSample *= out;
}
if (wet !=1.0) {
inputSample = (inputSample * wet) + (drySample * (1.0-wet));
}
//begin 32 bit floating point dither
int expon; frexpf((float)inputSample, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSample;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_SquareRootEntry

View file

@ -0,0 +1,143 @@
/*
* File: SquareRoot.h
*
* Version: 1.0
*
* Created: 2/10/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 "SquareRootVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __SquareRoot_h__
#define __SquareRoot_h__
#pragma mark ____SquareRoot Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.0;
static const float kDefaultValue_ParamC = 0.5;
static const float kDefaultValue_ParamD = 1.0;
static CFStringRef kParameterAName = CFSTR("In");
static CFStringRef kParameterBName = CFSTR("Soar");
static CFStringRef kParameterCName = CFSTR("Out");
static CFStringRef kParameterDName = CFSTR("Dry/Wet");
enum {
kParam_A =0,
kParam_B =1,
kParam_C =2,
kParam_D =3,
//Add your parameters here...
kNumberOfParameters=4
};
#pragma mark ____SquareRoot
class SquareRoot : public AUEffectBase
{
public:
SquareRoot(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~SquareRoot () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new SquareRootKernel(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 kSquareRootVersion; }
protected:
class SquareRootKernel : public AUKernelBase // most of the real work happens here
{
public:
SquareRootKernel(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:
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,159 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* SquareRoot */;
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 = 761169635;
PBXWorkspaceStateSaveDate = 761169635;
};
perUserProjectItems = {
8B508E022D5BFCB100D53971 /* PlistBookmark */ = 8B508E022D5BFCB100D53971 /* PlistBookmark */;
8BAB9A052D5E8C890059C6F4 /* PBXTextBookmark */ = 8BAB9A052D5E8C890059C6F4 /* PBXTextBookmark */;
8BAB9A062D5E8C890059C6F4 /* PBXTextBookmark */ = 8BAB9A062D5E8C890059C6F4 /* PBXTextBookmark */;
8BAB9A072D5E8C890059C6F4 /* PBXTextBookmark */ = 8BAB9A072D5E8C890059C6F4 /* PBXTextBookmark */;
8BAB9A082D5E8C890059C6F4 /* PBXTextBookmark */ = 8BAB9A082D5E8C890059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B508E022D5BFCB100D53971 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/SquareRoot/Info.plist;
rLen = 0;
rLoc = 9223372036854775808;
};
8BA05A660720730100365D66 /* SquareRoot.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {996, 4608}}";
sepNavSelRange = "{9635, 304}";
sepNavVisRange = "{8932, 1359}";
sepNavWindowFrame = "{{668, 61}, {1043, 811}}";
};
};
8BA05A690720730100365D66 /* SquareRootVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1116}}";
sepNavSelRange = "{2910, 0}";
sepNavVisRange = "{2692, 275}";
sepNavWindowFrame = "{{15, 39}, {1003, 834}}";
};
};
8BAB9A052D5E8C890059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* SquareRoot.cpp */;
name = "SquareRoot.cpp: 205";
rLen = 0;
rLoc = 9472;
rType = 0;
vrLen = 254;
vrLoc = 9685;
};
8BAB9A062D5E8C890059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* SquareRootVersion.h */;
name = "SquareRootVersion.h: 54";
rLen = 0;
rLoc = 2910;
rType = 0;
vrLen = 275;
vrLoc = 2692;
};
8BAB9A072D5E8C890059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SquareRoot.h */;
name = "SquareRoot.h: 68";
rLen = 14;
rLoc = 3240;
rType = 0;
vrLen = 120;
vrLoc = 3233;
};
8BAB9A082D5E8C890059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SquareRoot.h */;
name = "SquareRoot.h: 68";
rLen = 14;
rLoc = 3240;
rType = 0;
vrLen = 120;
vrLoc = 3233;
};
8BC6025B073B072D006C4272 /* SquareRoot.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 2916}}";
sepNavSelRange = "{3240, 14}";
sepNavVisRange = "{3233, 120}";
sepNavWindowFrame = "{{728, 67}, {1043, 811}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* SquareRoot */ = {
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 /* SquareRoot.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* SquareRoot.r */; };
8BA05A6B0720730100365D66 /* SquareRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* SquareRoot.cpp */; };
8BA05A6E0720730100365D66 /* SquareRootVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* SquareRootVersion.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 /* SquareRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* SquareRoot.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 /* SquareRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SquareRoot.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* SquareRoot.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = SquareRoot.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* SquareRoot.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = SquareRoot.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* SquareRootVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SquareRootVersion.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 /* SquareRoot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SquareRoot.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* SquareRoot.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SquareRoot.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 /* SquareRoot */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = SquareRoot;
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 /* SquareRoot.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* SquareRoot.h */,
8BA05A660720730100365D66 /* SquareRoot.cpp */,
8BA05A670720730100365D66 /* SquareRoot.exp */,
8BA05A680720730100365D66 /* SquareRoot.r */,
8BA05A690720730100365D66 /* SquareRootVersion.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 /* SquareRootVersion.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 /* SquareRoot.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 /* SquareRoot */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "SquareRoot" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
8D01CCCF0486CAD60068D4B7 /* Rez */,
);
buildRules = (
);
dependencies = (
);
name = SquareRoot;
productInstallPath = "$(HOME)/Library/Bundles";
productName = SquareRoot;
productReference = 8D01CCD20486CAD60068D4B7 /* SquareRoot.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 "SquareRoot" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 089C166AFE841209C02AAC07 /* SquareRoot */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* SquareRoot */,
);
};
/* 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 /* SquareRoot.r in Rez */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BA05A6B0720730100365D66 /* SquareRoot.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 = SquareRoot.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 = SquareRoot;
WRAPPER_EXTENSION = component;
};
name = Debug;
};
3E4BA245089833B7007656EC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
x86_64,
);
EXPORTED_SYMBOLS_FILE = SquareRoot.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 = SquareRoot;
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 "SquareRoot" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "SquareRoot" */ = {
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: SquareRootVersion.h
*
* Version: 1.0
*
* Created: 2/10/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 __SquareRootVersion_h__
#define __SquareRootVersion_h__
#ifdef DEBUG
#define kSquareRootVersion 0xFFFFFFFF
#else
#define kSquareRootVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define SquareRoot_COMP_MANF 'Dthr'
#define SquareRoot_COMP_SUBTYPE 'sqrt'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#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

@ -60,6 +60,7 @@ SweetWide::SweetWide(AudioUnit component)
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
@ -103,7 +104,14 @@ ComponentResult SweetWide::GetParameterInfo(AudioUnitScope inScope,
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamA;
break;
default:
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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
@ -192,7 +200,8 @@ OSStatus SweetWide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
Float32 * outputR = (Float32*)(outBuffer.mBuffers[1].mData);
UInt32 nSampleFrames = inFramesToProcess;
double blend = -(GetParameter( kParam_A )-0.5);
double soar = 0.3-(GetParameter( kParam_A )*0.3);
double blend = -(GetParameter( kParam_B )-0.5);
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
@ -202,12 +211,12 @@ OSStatus SweetWide::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
double outL = 0.0;
double outR = 0.0;
if (inputSampleL > 0.0) outL = sqrt(inputSampleL*fabs(inputSampleR));
if (inputSampleL < 0.0) outL = -sqrt(-inputSampleL*fabs(inputSampleR));
if (inputSampleR > 0.0) outR = sqrt(inputSampleR*fabs(inputSampleL));
if (inputSampleR < 0.0) outR = -sqrt(-inputSampleR*fabs(inputSampleL));
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0) outL = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0) outL = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleR > 0.0) outR = fmax((sqrt(inL/inR)*inR)-soar,0.0);
if (inputSampleR < 0.0) outR = fmin((-sqrt(inL/inR)*inR)+soar,0.0);
inputSampleL = (outL * blend) + (inputSampleL * (1.0-blend));
inputSampleR = (outR * blend) + (inputSampleR * (1.0-blend));

View file

@ -54,14 +54,17 @@
#pragma mark ____SweetWide Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamA = 0.0;
static const float kDefaultValue_ParamB = 0.5;
static CFStringRef kParameterAName = CFSTR("Un/Wide");
static CFStringRef kParameterAName = CFSTR("Soar");
static CFStringRef kParameterBName = CFSTR("Un/Wide");
enum {
kParam_A = 0,
kParam_B = 1,
//Add your parameters here...
kNumberOfParameters=1
kNumberOfParameters=2
};
#pragma mark ____SweetWide
@ -107,9 +110,9 @@ public:
/*! @method Version */
virtual ComponentResult Version() { return kSweetWideVersion; }
private:
uint32_t fpdL;
uint32_t fpdR;
private:
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View file

@ -49,18 +49,29 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 759956727;
PBXWorkspaceStateSaveDate = 759956727;
PBXPerProjectTemplateStateSaveDate = 761171128;
PBXWorkspaceStateSaveDate = 761171128;
};
perUserProjectItems = {
8B508CD02D5AAA4200D53971 /* PBXTextBookmark */ = 8B508CD02D5AAA4200D53971 /* PBXTextBookmark */;
8B54B0842D4C1A0900A70B04 /* PBXTextBookmark */ = 8B54B0842D4C1A0900A70B04 /* PBXTextBookmark */;
8B54B0852D4C1A0900A70B04 /* PBXTextBookmark */ = 8B54B0852D4C1A0900A70B04 /* PBXTextBookmark */;
8B54B0862D4C1A0900A70B04 /* PBXTextBookmark */ = 8B54B0862D4C1A0900A70B04 /* PBXTextBookmark */;
8BAB9A3B2D5E98D90059C6F4 /* PBXTextBookmark */ = 8BAB9A3B2D5E98D90059C6F4 /* PBXTextBookmark */;
8BAB9A3C2D5E98D90059C6F4 /* PBXTextBookmark */ = 8BAB9A3C2D5E98D90059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B508CD02D5AAA4200D53971 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SweetWide.h */;
name = "SweetWide.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 31;
vrLoc = 4716;
};
8B54B0842D4C1A0900A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* SweetWideVersion.h */;
@ -71,39 +82,19 @@
vrLen = 181;
vrLoc = 2780;
};
8B54B0852D4C1A0900A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SweetWide.h */;
name = "SweetWide.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 42;
vrLoc = 0;
};
8B54B0862D4C1A0900A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* SweetWide.h */;
name = "SweetWide.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 51;
vrLoc = 4716;
};
8BA05A660720730100365D66 /* SweetWide.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {984, 4428}}";
sepNavSelRange = "{8842, 479}";
sepNavVisRange = "{8332, 1559}";
sepNavWindowFrame = "{{666, 50}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {1056, 4356}}";
sepNavSelRange = "{9312, 553}";
sepNavVisRange = "{8811, 1639}";
sepNavWindowFrame = "{{589, 50}, {1031, 828}}";
};
};
8BA05A690720730100365D66 /* SweetWideVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1152}}";
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2906, 0}";
sepNavVisRange = "{2780, 181}";
sepNavVisRange = "{2675, 294}";
sepNavWindowFrame = "{{15, 45}, {1031, 828}}";
};
};
@ -114,12 +105,32 @@
sepNavVisRange = "{0, 1336}";
};
};
8BAB9A3B2D5E98D90059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* SweetWide.cpp */;
name = "SweetWide.cpp: 215";
rLen = 0;
rLoc = 9452;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8BAB9A3C2D5E98D90059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* SweetWideVersion.h */;
name = "SweetWideVersion.h: 54";
rLen = 0;
rLoc = 2906;
rType = 0;
vrLen = 294;
vrLoc = 2675;
};
8BC6025B073B072D006C4272 /* SweetWide.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2124}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{4716, 51}";
sepNavWindowFrame = "{{15, 45}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {1146, 2178}}";
sepNavSelRange = "{4860, 0}";
sepNavVisRange = "{1901, 1254}";
sepNavWindowFrame = "{{595, 36}, {1031, 828}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
<string>620 267 810 487 0 0 1440 878 </string>
<string>591 283 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BB02D47F3A80077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>SweetWide.h</string>
<string>SweetWideVersion.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -348,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BB12D47F3A80077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>SweetWide.h</string>
<string>SweetWideVersion.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B54B0862D4C1A0900A70B04</string>
<string>8BAB9A3C2D5E98D90059C6F4</string>
<key>history</key>
<array>
<string>8B508CD02D5AAA4200D53971</string>
<string>8BAB9A3B2D5E98D90059C6F4</string>
<string>8B54B0842D4C1A0900A70B04</string>
<string>8B54B0852D4C1A0900A70B04</string>
</array>
</dict>
<key>SplitCount</key>
@ -370,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {603, 102}}</string>
<string>{{0, 0}, {603, 290}}</string>
<key>RubberWindowFrame</key>
<string>620 267 810 487 0 0 1440 878 </string>
<string>591 283 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>102pt</string>
<string>290pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>339pt</string>
<string>151pt</string>
<key>Tabs</key>
<array>
<dict>
@ -395,9 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 312}}</string>
<string>{{10, 27}, {603, 124}}</string>
<key>RubberWindowFrame</key>
<string>620 267 810 487 0 0 1440 878 </string>
<string>591 283 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -451,7 +452,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 297}}</string>
<string>{{10, 27}, {603, 328}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -479,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B54B0612D4C04FA00A70B04</string>
<string>8BAB9A3D2D5E98D90059C6F4</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B54B0622D4C04FA00A70B04</string>
<string>8BAB9A3E2D5E98D90059C6F4</string>
<string>8B292BB02D47F3A80077EB56</string>
<string>8B54B0632D4C04FA00A70B04</string>
<string>8BAB9A3F2D5E98D90059C6F4</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -636,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>759962121.43538105</real>
<real>761174233.87212205</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -653,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B54B0872D4C1A0900A70B04</string>
<string>8BAB9A402D5E98D90059C6F4</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/SweetWide/SweetWide.xcodeproj</string>
</array>
<key>WindowString</key>
<string>620 267 810 487 0 0 1440 878 </string>
<string>591 283 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -0,0 +1,306 @@
/*
* File: Elliptical.cpp
*
* Version: 1.0
*
* Created: 2/13/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.
*
*/
/*=============================================================================
Elliptical.cpp
=============================================================================*/
#include "Elliptical.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, Elliptical)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::Elliptical
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Elliptical::Elliptical(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::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 Elliptical::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// Elliptical::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____EllipticalEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::EllipticalKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult Elliptical::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirA = 0.0;
iirB = 0.0;
iirC = 0.0;
iirD = 0.0;
iirE = 0.0;
iirF = 0.0;
iirG = 0.0;
iirH = 0.0;
fpFlip = true;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Elliptical::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus Elliptical::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 rangescale = 0.1 / overallscale;
double cutoff = pow(GetParameter( kParam_A ),3);
double slope = pow(GetParameter( kParam_B ),3) * 6.0;
double newA = cutoff * rangescale;
double newB = newA; //other part of interleaved IIR is the same
double fpOld = 0.618033988749894848204586; //golden ratio!
double newC = cutoff * rangescale; //first extra pole is the same
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newD = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newE = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newF = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newG = cutoff * rangescale;
cutoff = (cutoff * fpOld) + (0.00001 * (1.0-fpOld));
double newH = cutoff * rangescale;
//converge toward the unvarying fixed cutoff value
double polesC = slope; if (slope > 1.0) polesC = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesD = slope; if (slope > 1.0) polesD = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesE = slope; if (slope > 1.0) polesE = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesF = slope; if (slope > 1.0) polesF = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesG = slope; if (slope > 1.0) polesG = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
double polesH = slope; if (slope > 1.0) polesH = 1.0; slope -= 1.0; if (slope < 0.0) slope = 0.0;
//each one will either be 0.0, the fractional slope value, or 1
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;
double mid = inputSampleL + inputSampleR;
double side = inputSampleL - inputSampleR;
//assign mid and side.Between these sections, you can do mid/side processing
double temp = side;
double correction;
if (fpFlip) {
iirA = (iirA * (1.0 - newA)) + (temp * newA); temp -= iirA; correction = iirA;
} else {
iirB = (iirB * (1.0 - newB)) + (temp * newB); temp -= iirB; correction = iirB;
}
iirC = (iirC * (1.0 - newC)) + (temp * newC); temp -= iirC;
iirD = (iirD * (1.0 - newD)) + (temp * newD); temp -= iirD;
iirE = (iirE * (1.0 - newE)) + (temp * newE); temp -= iirE;
iirF = (iirF * (1.0 - newF)) + (temp * newF); temp -= iirF;
iirG = (iirG * (1.0 - newG)) + (temp * newG); temp -= iirG;
iirH = (iirH * (1.0 - newH)) + (temp * newH); temp -= iirH;
//set up all the iir filters in case they are used
if (polesC == 1.0) correction += iirC; if (polesC > 0.0 && polesC < 1.0) correction += (iirC * polesC);
if (polesD == 1.0) correction += iirD; if (polesD > 0.0 && polesD < 1.0) correction += (iirD * polesD);
if (polesE == 1.0) correction += iirE; if (polesE > 0.0 && polesE < 1.0) correction += (iirE * polesE);
if (polesF == 1.0) correction += iirF; if (polesF > 0.0 && polesF < 1.0) correction += (iirF * polesF);
if (polesG == 1.0) correction += iirG; if (polesG > 0.0 && polesG < 1.0) correction += (iirG * polesG);
if (polesH == 1.0) correction += iirH; if (polesH > 0.0 && polesH < 1.0) correction += (iirH * polesH);
//each of these are added directly if they're fully engaged,
//multiplied by 0-1 if they are the interpolated one, or skipped if they are beyond the interpolated one.
//the purpose is to do all the math at the floating point exponent nearest to the tiny value in use.
//also, it's formatted that way to easily substitute the next variable: this could be written as a loop
//with everything an array value. However, this makes just as much sense for this few poles.
side -= correction;
fpFlip = !fpFlip;
inputSampleL = (mid+side)/2.0;
inputSampleR = (mid-side)/2.0;
//unassign mid and side
//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 @@
_EllipticalEntry
_EllipticalFactory

View file

@ -0,0 +1,132 @@
/*
* File: Elliptical.h
*
* Version: 1.0
*
* Created: 2/13/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 "EllipticalVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __Elliptical_h__
#define __Elliptical_h__
#pragma mark ____Elliptical Parameters
// parameters
static const float kDefaultValue_ParamA = 0.5;
static const float kDefaultValue_ParamB = 0.5;
static CFStringRef kParameterAName = CFSTR("Cutoff");
static CFStringRef kParameterBName = CFSTR("Slope");
//Alter the name if desired, but using the plugin name is a start
enum {
kParam_A =0,
kParam_B =1,
//Add your parameters here...
kNumberOfParameters=2
};
#pragma mark ____Elliptical
class Elliptical : public AUEffectBase
{
public:
Elliptical(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~Elliptical () { 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 kEllipticalVersion; }
private:
double iirA;
double iirB; //first stage is the flipping one, for lowest slope. It is always engaged, and is the highest one
double iirC; //we introduce the second pole at the same frequency, to become a pseudo-Capacitor behavior
double iirD;
double iirE;
double iirF; //our slope control will have a pow() on it so that the high orders are way to the right side
double iirG;
double iirH; //seven poles max, and the final pole is always at 20hz directly.
bool fpFlip;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: Elliptical.r
*
* Version: 1.0
*
* Created: 2/13/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 "EllipticalVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_Elliptical 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Elliptical~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_Elliptical
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE Elliptical_COMP_SUBTYPE
#define COMP_MANUF Elliptical_COMP_MANF
#define VERSION kEllipticalVersion
#define NAME "Airwindows: Elliptical"
#define DESCRIPTION "Elliptical AU"
#define ENTRY_POINT "EllipticalEntry"
#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 /* Elliptical */;
breakpoints = (
);
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 = 761178492;
PBXWorkspaceStateSaveDate = 761178492;
};
perUserProjectItems = {
8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */ = 8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */;
8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */ = 8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* Elliptical.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1206, 5688}}";
sepNavSelRange = "{10992, 2094}";
sepNavVisRange = "{10198, 2333}";
sepNavWindowFrame = "{{601, 66}, {1253, 812}}";
};
};
8BA05A690720730100365D66 /* EllipticalVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {948, 1188}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 53}";
sepNavWindowFrame = "{{15, 62}, {1043, 811}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BAB9B3D2D5EAB2E0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* EllipticalVersion.h */;
name = "EllipticalVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 53;
vrLoc = 0;
};
8BAB9B3E2D5EAB2E0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* EllipticalVersion.h */;
name = "EllipticalVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 53;
vrLoc = 0;
};
8BC6025B073B072D006C4272 /* Elliptical.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2376}}";
sepNavSelRange = "{4917, 476}";
sepNavVisRange = "{2820, 1210}";
sepNavWindowFrame = "{{397, 38}, {1043, 811}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* Elliptical */ = {
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 */
8B0CC9EA2D60916D001C05AC /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9622D60916D001C05AC /* CAExtAudioFile.h */; };
8B0CC9EB2D60916D001C05AC /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9632D60916D001C05AC /* CACFMachPort.h */; };
8B0CC9EC2D60916D001C05AC /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9642D60916D001C05AC /* CABool.h */; };
8B0CC9ED2D60916D001C05AC /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9652D60916D001C05AC /* CAComponent.cpp */; };
8B0CC9EE2D60916D001C05AC /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9662D60916D001C05AC /* CADebugger.h */; };
8B0CC9EF2D60916D001C05AC /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9672D60916D001C05AC /* CACFNumber.cpp */; };
8B0CC9F02D60916D001C05AC /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9682D60916D001C05AC /* CAGuard.h */; };
8B0CC9F12D60916D001C05AC /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9692D60916D001C05AC /* CAAtomic.h */; };
8B0CC9F22D60916D001C05AC /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96A2D60916D001C05AC /* CAStreamBasicDescription.h */; };
8B0CC9F32D60916D001C05AC /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96B2D60916D001C05AC /* CACFObject.h */; };
8B0CC9F42D60916D001C05AC /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96C2D60916D001C05AC /* CAStreamRangedDescription.h */; };
8B0CC9F52D60916D001C05AC /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96D2D60916D001C05AC /* CATokenMap.h */; };
8B0CC9F62D60916D001C05AC /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96E2D60916D001C05AC /* CAComponent.h */; };
8B0CC9F72D60916D001C05AC /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC96F2D60916D001C05AC /* CAAudioBufferList.h */; };
8B0CC9F82D60916D001C05AC /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9702D60916D001C05AC /* CAAudioUnit.h */; };
8B0CC9F92D60916D001C05AC /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9712D60916D001C05AC /* CAAUParameter.h */; };
8B0CC9FA2D60916D001C05AC /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9722D60916D001C05AC /* CAException.h */; };
8B0CC9FB2D60916D001C05AC /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9732D60916D001C05AC /* CAAUProcessor.cpp */; };
8B0CC9FC2D60916D001C05AC /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9742D60916D001C05AC /* CAAUProcessor.h */; };
8B0CC9FD2D60916D001C05AC /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9752D60916D001C05AC /* CAProcess.h */; };
8B0CC9FE2D60916D001C05AC /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9762D60916D001C05AC /* CACFDictionary.h */; };
8B0CC9FF2D60916D001C05AC /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9772D60916D001C05AC /* CAPThread.h */; };
8B0CCA002D60916D001C05AC /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9782D60916D001C05AC /* CAAUParameter.cpp */; };
8B0CCA012D60916D001C05AC /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9792D60916D001C05AC /* CAAudioTimeStamp.h */; };
8B0CCA022D60916D001C05AC /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC97A2D60916D001C05AC /* CAFilePathUtils.cpp */; };
8B0CCA032D60916D001C05AC /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC97B2D60916D001C05AC /* CAAudioValueRange.h */; };
8B0CCA042D60916D001C05AC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC97C2D60916D001C05AC /* CAVectorUnitTypes.h */; };
8B0CCA052D60916D001C05AC /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC97D2D60916D001C05AC /* CAAudioChannelLayoutObject.cpp */; };
8B0CCA062D60916D001C05AC /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC97E2D60916D001C05AC /* CAGuard.cpp */; };
8B0CCA072D60916D001C05AC /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC97F2D60916D001C05AC /* CACFNumber.h */; };
8B0CCA082D60916D001C05AC /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9802D60916D001C05AC /* CACFDistributedNotification.cpp */; };
8B0CCA092D60916D001C05AC /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9812D60916D001C05AC /* CACFString.h */; };
8B0CCA0A2D60916D001C05AC /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9822D60916D001C05AC /* CAAUMIDIMapManager.cpp */; };
8B0CCA0B2D60916D001C05AC /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9832D60916D001C05AC /* CAComponentDescription.cpp */; };
8B0CCA0C2D60916D001C05AC /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9842D60916D001C05AC /* CAHostTimeBase.h */; };
8B0CCA0D2D60916D001C05AC /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9852D60916D001C05AC /* CADebugMacros.cpp */; };
8B0CCA0E2D60916D001C05AC /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9862D60916D001C05AC /* CAAudioFileFormats.h */; };
8B0CCA0F2D60916D001C05AC /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9872D60916D001C05AC /* CAAUMIDIMapManager.h */; };
8B0CCA102D60916D001C05AC /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9882D60916D001C05AC /* CACFDictionary.cpp */; };
8B0CCA112D60916D001C05AC /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9892D60916D001C05AC /* CAMutex.h */; };
8B0CCA122D60916D001C05AC /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC98A2D60916D001C05AC /* CACFString.cpp */; };
8B0CCA132D60916D001C05AC /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC98B2D60916D001C05AC /* CASettingsStorage.h */; };
8B0CCA142D60916D001C05AC /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC98C2D60916D001C05AC /* CADebugPrintf.h */; };
8B0CCA152D60916D001C05AC /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC98D2D60916D001C05AC /* CAXException.cpp */; };
8B0CCA162D60916D001C05AC /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC98E2D60916D001C05AC /* CAAUMIDIMap.h */; };
8B0CCA172D60916D001C05AC /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC98F2D60916D001C05AC /* AUParamInfo.h */; };
8B0CCA182D60916D001C05AC /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9902D60916D001C05AC /* CABitOperations.h */; };
8B0CCA192D60916D001C05AC /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9912D60916D001C05AC /* CACFPreferences.cpp */; };
8B0CCA1A2D60916D001C05AC /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9922D60916D001C05AC /* CABundleLocker.h */; };
8B0CCA1B2D60916D001C05AC /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9932D60916D001C05AC /* CAPropertyAddress.h */; };
8B0CCA1C2D60916D001C05AC /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9942D60916D001C05AC /* CAXException.h */; };
8B0CCA1D2D60916D001C05AC /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9952D60916D001C05AC /* CAAudioChannelLayout.cpp */; };
8B0CCA1E2D60916D001C05AC /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9962D60916D001C05AC /* CAThreadSafeList.h */; };
8B0CCA1F2D60916D001C05AC /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9972D60916D001C05AC /* CAAudioUnitOutputCapturer.h */; };
8B0CCA202D60916D001C05AC /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9982D60916D001C05AC /* AUParamInfo.cpp */; };
8B0CCA212D60916D001C05AC /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9992D60916D001C05AC /* CASharedLibrary.cpp */; };
8B0CCA222D60916D001C05AC /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC99A2D60916D001C05AC /* CAAUMIDIMap.cpp */; };
8B0CCA232D60916D001C05AC /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC99B2D60916D001C05AC /* CALogMacros.h */; };
8B0CCA242D60916D001C05AC /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC99C2D60916D001C05AC /* CACFMessagePort.cpp */; };
8B0CCA252D60916D001C05AC /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC99D2D60916D001C05AC /* CARingBuffer.h */; };
8B0CCA262D60916D001C05AC /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC99E2D60916D001C05AC /* AUOutputBL.cpp */; };
8B0CCA272D60916D001C05AC /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC99F2D60916D001C05AC /* CABufferList.h */; };
8B0CCA282D60916D001C05AC /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A02D60916D001C05AC /* CASharedLibrary.h */; };
8B0CCA292D60916D001C05AC /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A12D60916D001C05AC /* CACFData.h */; };
8B0CCA2A2D60916D001C05AC /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9A22D60916D001C05AC /* CAStreamRangedDescription.cpp */; };
8B0CCA2B2D60916D001C05AC /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9A32D60916D001C05AC /* CAPThread.cpp */; };
8B0CCA2C2D60916D001C05AC /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A42D60916D001C05AC /* CAAutoDisposer.h */; };
8B0CCA2D2D60916D001C05AC /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A52D60916D001C05AC /* CACFPreferences.h */; };
8B0CCA2E2D60916D001C05AC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9A62D60916D001C05AC /* CAVectorUnit.cpp */; };
8B0CCA2F2D60916D001C05AC /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A72D60916D001C05AC /* CAComponentDescription.h */; };
8B0CCA302D60916D001C05AC /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A82D60916D001C05AC /* CADebugMacros.h */; };
8B0CCA312D60916D001C05AC /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9A92D60916D001C05AC /* AUOutputBL.h */; };
8B0CCA322D60916D001C05AC /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9AA2D60916D001C05AC /* CADebugPrintf.cpp */; };
8B0CCA332D60916D001C05AC /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9AB2D60916D001C05AC /* CARingBuffer.cpp */; };
8B0CCA342D60916D001C05AC /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9AC2D60916D001C05AC /* CACFPlugIn.h */; };
8B0CCA352D60916D001C05AC /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9AD2D60916D001C05AC /* CASettingsStorage.cpp */; };
8B0CCA362D60916D001C05AC /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9AE2D60916D001C05AC /* CAMixMap.h */; };
8B0CCA372D60916D001C05AC /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9AF2D60916D001C05AC /* CACFDistributedNotification.h */; };
8B0CCA382D60916D001C05AC /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9B02D60916D001C05AC /* CAFilePathUtils.h */; };
8B0CCA392D60916D001C05AC /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9B12D60916D001C05AC /* CATink.h */; };
8B0CCA3A2D60916D001C05AC /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B22D60916D001C05AC /* CAStreamBasicDescription.cpp */; };
8B0CCA3B2D60916D001C05AC /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9B32D60916D001C05AC /* CAAudioChannelLayout.h */; };
8B0CCA3C2D60916D001C05AC /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B42D60916D001C05AC /* CAProcess.cpp */; };
8B0CCA3D2D60916D001C05AC /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B52D60916D001C05AC /* CAHostTimeBase.cpp */; };
8B0CCA3E2D60916D001C05AC /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B62D60916D001C05AC /* CAPersistence.cpp */; };
8B0CCA3F2D60916D001C05AC /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B72D60916D001C05AC /* CAAudioBufferList.cpp */; };
8B0CCA402D60916D001C05AC /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9B82D60916D001C05AC /* CAAudioTimeStamp.cpp */; };
8B0CCA412D60916D001C05AC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9B92D60916D001C05AC /* CAVectorUnit.h */; };
8B0CCA422D60916D001C05AC /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9BA2D60916D001C05AC /* CAByteOrder.h */; };
8B0CCA432D60916D001C05AC /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9BB2D60916D001C05AC /* CACFArray.h */; };
8B0CCA442D60916D001C05AC /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9BC2D60916D001C05AC /* CAAtomicStack.h */; };
8B0CCA452D60916D001C05AC /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9BD2D60916D001C05AC /* CAReferenceCounted.h */; };
8B0CCA462D60916D001C05AC /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9BE2D60916D001C05AC /* CACFMachPort.cpp */; };
8B0CCA472D60916D001C05AC /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9BF2D60916D001C05AC /* CABufferList.cpp */; };
8B0CCA482D60916D001C05AC /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C02D60916D001C05AC /* CAMutex.cpp */; };
8B0CCA492D60916D001C05AC /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C12D60916D001C05AC /* CADebugger.cpp */; };
8B0CCA4A2D60916D001C05AC /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C22D60916D001C05AC /* CABundleLocker.cpp */; };
8B0CCA4B2D60916D001C05AC /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C32D60916D001C05AC /* CAAudioFileFormats.cpp */; };
8B0CCA4C2D60916D001C05AC /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9C42D60916D001C05AC /* CAMath.h */; };
8B0CCA4D2D60916D001C05AC /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C52D60916D001C05AC /* CACFArray.cpp */; };
8B0CCA4E2D60916D001C05AC /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9C62D60916D001C05AC /* CACFMessagePort.h */; };
8B0CCA4F2D60916D001C05AC /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C72D60916D001C05AC /* CAAudioValueRange.cpp */; };
8B0CCA502D60916D001C05AC /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9C82D60916D001C05AC /* CAAudioUnit.cpp */; };
8B0CCA512D60916D001C05AC /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9CC2D60916D001C05AC /* AUViewLocalizedStringKeys.h */; };
8B0CCA522D60916D001C05AC /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9CE2D60916D001C05AC /* ComponentBase.cpp */; };
8B0CCA532D60916D001C05AC /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9CF2D60916D001C05AC /* AUScopeElement.cpp */; };
8B0CCA542D60916D001C05AC /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D02D60916D001C05AC /* ComponentBase.h */; };
8B0CCA552D60916D001C05AC /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9D12D60916D001C05AC /* AUBase.cpp */; };
8B0CCA562D60916D001C05AC /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D22D60916D001C05AC /* AUInputElement.h */; };
8B0CCA572D60916D001C05AC /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D32D60916D001C05AC /* AUBase.h */; };
8B0CCA582D60916D001C05AC /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D42D60916D001C05AC /* AUPlugInDispatch.h */; };
8B0CCA592D60916D001C05AC /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D52D60916D001C05AC /* AUDispatch.h */; };
8B0CCA5A2D60916D001C05AC /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9D62D60916D001C05AC /* AUOutputElement.cpp */; };
8B0CCA5C2D60916D001C05AC /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9D82D60916D001C05AC /* AUPlugInDispatch.cpp */; };
8B0CCA5D2D60916D001C05AC /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9D92D60916D001C05AC /* AUOutputElement.h */; };
8B0CCA5E2D60916D001C05AC /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9DA2D60916D001C05AC /* AUDispatch.cpp */; };
8B0CCA5F2D60916D001C05AC /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9DB2D60916D001C05AC /* AUScopeElement.h */; };
8B0CCA602D60916D001C05AC /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9DC2D60916D001C05AC /* AUInputElement.cpp */; };
8B0CCA612D60916D001C05AC /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9DE2D60916D001C05AC /* AUEffectBase.cpp */; };
8B0CCA622D60916D001C05AC /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9DF2D60916D001C05AC /* AUEffectBase.h */; };
8B0CCA632D60916D001C05AC /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E12D60916D001C05AC /* AUTimestampGenerator.h */; };
8B0CCA642D60916D001C05AC /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9E22D60916D001C05AC /* AUBaseHelper.cpp */; };
8B0CCA652D60916D001C05AC /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E32D60916D001C05AC /* AUSilentTimeout.h */; };
8B0CCA662D60916D001C05AC /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E42D60916D001C05AC /* AUInputFormatConverter.h */; };
8B0CCA672D60916D001C05AC /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9E52D60916D001C05AC /* AUTimestampGenerator.cpp */; };
8B0CCA682D60916D001C05AC /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B0CC9E62D60916D001C05AC /* AUBuffer.cpp */; };
8B0CCA692D60916D001C05AC /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E72D60916D001C05AC /* AUMIDIDefs.h */; };
8B0CCA6A2D60916D001C05AC /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E82D60916D001C05AC /* AUBuffer.h */; };
8B0CCA6B2D60916D001C05AC /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0CC9E92D60916D001C05AC /* AUBaseHelper.h */; };
8BA05A6B0720730100365D66 /* Elliptical.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Elliptical.cpp */; };
8BA05A6E0720730100365D66 /* EllipticalVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* EllipticalVersion.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 /* Elliptical.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Elliptical.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
8B0CC9622D60916D001C05AC /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
8B0CC9632D60916D001C05AC /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
8B0CC9642D60916D001C05AC /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
8B0CC9652D60916D001C05AC /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
8B0CC9662D60916D001C05AC /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
8B0CC9672D60916D001C05AC /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
8B0CC9682D60916D001C05AC /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
8B0CC9692D60916D001C05AC /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
8B0CC96A2D60916D001C05AC /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8B0CC96B2D60916D001C05AC /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
8B0CC96C2D60916D001C05AC /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
8B0CC96D2D60916D001C05AC /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
8B0CC96E2D60916D001C05AC /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
8B0CC96F2D60916D001C05AC /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
8B0CC9702D60916D001C05AC /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
8B0CC9712D60916D001C05AC /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8B0CC9722D60916D001C05AC /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
8B0CC9732D60916D001C05AC /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
8B0CC9742D60916D001C05AC /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
8B0CC9752D60916D001C05AC /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
8B0CC9762D60916D001C05AC /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
8B0CC9772D60916D001C05AC /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
8B0CC9782D60916D001C05AC /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8B0CC9792D60916D001C05AC /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
8B0CC97A2D60916D001C05AC /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
8B0CC97B2D60916D001C05AC /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
8B0CC97C2D60916D001C05AC /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
8B0CC97D2D60916D001C05AC /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
8B0CC97E2D60916D001C05AC /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
8B0CC97F2D60916D001C05AC /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
8B0CC9802D60916D001C05AC /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
8B0CC9812D60916D001C05AC /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
8B0CC9822D60916D001C05AC /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
8B0CC9832D60916D001C05AC /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
8B0CC9842D60916D001C05AC /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
8B0CC9852D60916D001C05AC /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
8B0CC9862D60916D001C05AC /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
8B0CC9872D60916D001C05AC /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
8B0CC9882D60916D001C05AC /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
8B0CC9892D60916D001C05AC /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8B0CC98A2D60916D001C05AC /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
8B0CC98B2D60916D001C05AC /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
8B0CC98C2D60916D001C05AC /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
8B0CC98D2D60916D001C05AC /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
8B0CC98E2D60916D001C05AC /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
8B0CC98F2D60916D001C05AC /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
8B0CC9902D60916D001C05AC /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
8B0CC9912D60916D001C05AC /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
8B0CC9922D60916D001C05AC /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
8B0CC9932D60916D001C05AC /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
8B0CC9942D60916D001C05AC /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
8B0CC9952D60916D001C05AC /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8B0CC9962D60916D001C05AC /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
8B0CC9972D60916D001C05AC /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
8B0CC9982D60916D001C05AC /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
8B0CC9992D60916D001C05AC /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
8B0CC99A2D60916D001C05AC /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
8B0CC99B2D60916D001C05AC /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
8B0CC99C2D60916D001C05AC /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
8B0CC99D2D60916D001C05AC /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
8B0CC99E2D60916D001C05AC /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
8B0CC99F2D60916D001C05AC /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
8B0CC9A02D60916D001C05AC /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
8B0CC9A12D60916D001C05AC /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
8B0CC9A22D60916D001C05AC /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
8B0CC9A32D60916D001C05AC /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
8B0CC9A42D60916D001C05AC /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
8B0CC9A52D60916D001C05AC /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
8B0CC9A62D60916D001C05AC /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
8B0CC9A72D60916D001C05AC /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
8B0CC9A82D60916D001C05AC /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
8B0CC9A92D60916D001C05AC /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
8B0CC9AA2D60916D001C05AC /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
8B0CC9AB2D60916D001C05AC /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
8B0CC9AC2D60916D001C05AC /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
8B0CC9AD2D60916D001C05AC /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
8B0CC9AE2D60916D001C05AC /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
8B0CC9AF2D60916D001C05AC /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
8B0CC9B02D60916D001C05AC /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
8B0CC9B12D60916D001C05AC /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
8B0CC9B22D60916D001C05AC /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8B0CC9B32D60916D001C05AC /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8B0CC9B42D60916D001C05AC /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
8B0CC9B52D60916D001C05AC /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
8B0CC9B62D60916D001C05AC /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
8B0CC9B72D60916D001C05AC /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
8B0CC9B82D60916D001C05AC /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
8B0CC9B92D60916D001C05AC /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
8B0CC9BA2D60916D001C05AC /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
8B0CC9BB2D60916D001C05AC /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
8B0CC9BC2D60916D001C05AC /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
8B0CC9BD2D60916D001C05AC /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
8B0CC9BE2D60916D001C05AC /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
8B0CC9BF2D60916D001C05AC /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
8B0CC9C02D60916D001C05AC /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8B0CC9C12D60916D001C05AC /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
8B0CC9C22D60916D001C05AC /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
8B0CC9C32D60916D001C05AC /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
8B0CC9C42D60916D001C05AC /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
8B0CC9C52D60916D001C05AC /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
8B0CC9C62D60916D001C05AC /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
8B0CC9C72D60916D001C05AC /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
8B0CC9C82D60916D001C05AC /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
8B0CC9CC2D60916D001C05AC /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
8B0CC9CE2D60916D001C05AC /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8B0CC9CF2D60916D001C05AC /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8B0CC9D02D60916D001C05AC /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8B0CC9D12D60916D001C05AC /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8B0CC9D22D60916D001C05AC /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8B0CC9D32D60916D001C05AC /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8B0CC9D42D60916D001C05AC /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
8B0CC9D52D60916D001C05AC /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8B0CC9D62D60916D001C05AC /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8B0CC9D72D60916D001C05AC /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8B0CC9D82D60916D001C05AC /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
8B0CC9D92D60916D001C05AC /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8B0CC9DA2D60916D001C05AC /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8B0CC9DB2D60916D001C05AC /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8B0CC9DC2D60916D001C05AC /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8B0CC9DE2D60916D001C05AC /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8B0CC9DF2D60916D001C05AC /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8B0CC9E12D60916D001C05AC /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8B0CC9E22D60916D001C05AC /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
8B0CC9E32D60916D001C05AC /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8B0CC9E42D60916D001C05AC /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8B0CC9E52D60916D001C05AC /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
8B0CC9E62D60916D001C05AC /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8B0CC9E72D60916D001C05AC /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
8B0CC9E82D60916D001C05AC /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8B0CC9E92D60916D001C05AC /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
8B0CCA6C2D6091EF001C05AC /* 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 /* Elliptical.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Elliptical.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* Elliptical.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Elliptical.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* Elliptical.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Elliptical.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* EllipticalVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = EllipticalVersion.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 /* Elliptical.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Elliptical.h; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* Elliptical.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Elliptical.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 /* Elliptical */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = Elliptical;
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 = (
8B0CC9602D60916D001C05AC /* CA_SDK */,
8BA05A56072072A900365D66 /* AU Source */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* Elliptical.component */,
);
name = Products;
sourceTree = "<group>";
};
8B0CC9602D60916D001C05AC /* CA_SDK */ = {
isa = PBXGroup;
children = (
8B0CC9612D60916D001C05AC /* PublicUtility */,
8B0CC9C92D60916D001C05AC /* AudioUnits */,
);
name = CA_SDK;
path = ../../../../CA_SDK;
sourceTree = "<group>";
};
8B0CC9612D60916D001C05AC /* PublicUtility */ = {
isa = PBXGroup;
children = (
8B0CC9622D60916D001C05AC /* CAExtAudioFile.h */,
8B0CC9632D60916D001C05AC /* CACFMachPort.h */,
8B0CC9642D60916D001C05AC /* CABool.h */,
8B0CC9652D60916D001C05AC /* CAComponent.cpp */,
8B0CC9662D60916D001C05AC /* CADebugger.h */,
8B0CC9672D60916D001C05AC /* CACFNumber.cpp */,
8B0CC9682D60916D001C05AC /* CAGuard.h */,
8B0CC9692D60916D001C05AC /* CAAtomic.h */,
8B0CC96A2D60916D001C05AC /* CAStreamBasicDescription.h */,
8B0CC96B2D60916D001C05AC /* CACFObject.h */,
8B0CC96C2D60916D001C05AC /* CAStreamRangedDescription.h */,
8B0CC96D2D60916D001C05AC /* CATokenMap.h */,
8B0CC96E2D60916D001C05AC /* CAComponent.h */,
8B0CC96F2D60916D001C05AC /* CAAudioBufferList.h */,
8B0CC9702D60916D001C05AC /* CAAudioUnit.h */,
8B0CC9712D60916D001C05AC /* CAAUParameter.h */,
8B0CC9722D60916D001C05AC /* CAException.h */,
8B0CC9732D60916D001C05AC /* CAAUProcessor.cpp */,
8B0CC9742D60916D001C05AC /* CAAUProcessor.h */,
8B0CC9752D60916D001C05AC /* CAProcess.h */,
8B0CC9762D60916D001C05AC /* CACFDictionary.h */,
8B0CC9772D60916D001C05AC /* CAPThread.h */,
8B0CC9782D60916D001C05AC /* CAAUParameter.cpp */,
8B0CC9792D60916D001C05AC /* CAAudioTimeStamp.h */,
8B0CC97A2D60916D001C05AC /* CAFilePathUtils.cpp */,
8B0CC97B2D60916D001C05AC /* CAAudioValueRange.h */,
8B0CC97C2D60916D001C05AC /* CAVectorUnitTypes.h */,
8B0CC97D2D60916D001C05AC /* CAAudioChannelLayoutObject.cpp */,
8B0CC97E2D60916D001C05AC /* CAGuard.cpp */,
8B0CC97F2D60916D001C05AC /* CACFNumber.h */,
8B0CC9802D60916D001C05AC /* CACFDistributedNotification.cpp */,
8B0CC9812D60916D001C05AC /* CACFString.h */,
8B0CC9822D60916D001C05AC /* CAAUMIDIMapManager.cpp */,
8B0CC9832D60916D001C05AC /* CAComponentDescription.cpp */,
8B0CC9842D60916D001C05AC /* CAHostTimeBase.h */,
8B0CC9852D60916D001C05AC /* CADebugMacros.cpp */,
8B0CC9862D60916D001C05AC /* CAAudioFileFormats.h */,
8B0CC9872D60916D001C05AC /* CAAUMIDIMapManager.h */,
8B0CC9882D60916D001C05AC /* CACFDictionary.cpp */,
8B0CC9892D60916D001C05AC /* CAMutex.h */,
8B0CC98A2D60916D001C05AC /* CACFString.cpp */,
8B0CC98B2D60916D001C05AC /* CASettingsStorage.h */,
8B0CC98C2D60916D001C05AC /* CADebugPrintf.h */,
8B0CC98D2D60916D001C05AC /* CAXException.cpp */,
8B0CC98E2D60916D001C05AC /* CAAUMIDIMap.h */,
8B0CC98F2D60916D001C05AC /* AUParamInfo.h */,
8B0CC9902D60916D001C05AC /* CABitOperations.h */,
8B0CC9912D60916D001C05AC /* CACFPreferences.cpp */,
8B0CC9922D60916D001C05AC /* CABundleLocker.h */,
8B0CC9932D60916D001C05AC /* CAPropertyAddress.h */,
8B0CC9942D60916D001C05AC /* CAXException.h */,
8B0CC9952D60916D001C05AC /* CAAudioChannelLayout.cpp */,
8B0CC9962D60916D001C05AC /* CAThreadSafeList.h */,
8B0CC9972D60916D001C05AC /* CAAudioUnitOutputCapturer.h */,
8B0CC9982D60916D001C05AC /* AUParamInfo.cpp */,
8B0CC9992D60916D001C05AC /* CASharedLibrary.cpp */,
8B0CC99A2D60916D001C05AC /* CAAUMIDIMap.cpp */,
8B0CC99B2D60916D001C05AC /* CALogMacros.h */,
8B0CC99C2D60916D001C05AC /* CACFMessagePort.cpp */,
8B0CC99D2D60916D001C05AC /* CARingBuffer.h */,
8B0CC99E2D60916D001C05AC /* AUOutputBL.cpp */,
8B0CC99F2D60916D001C05AC /* CABufferList.h */,
8B0CC9A02D60916D001C05AC /* CASharedLibrary.h */,
8B0CC9A12D60916D001C05AC /* CACFData.h */,
8B0CC9A22D60916D001C05AC /* CAStreamRangedDescription.cpp */,
8B0CC9A32D60916D001C05AC /* CAPThread.cpp */,
8B0CC9A42D60916D001C05AC /* CAAutoDisposer.h */,
8B0CC9A52D60916D001C05AC /* CACFPreferences.h */,
8B0CC9A62D60916D001C05AC /* CAVectorUnit.cpp */,
8B0CC9A72D60916D001C05AC /* CAComponentDescription.h */,
8B0CC9A82D60916D001C05AC /* CADebugMacros.h */,
8B0CC9A92D60916D001C05AC /* AUOutputBL.h */,
8B0CC9AA2D60916D001C05AC /* CADebugPrintf.cpp */,
8B0CC9AB2D60916D001C05AC /* CARingBuffer.cpp */,
8B0CC9AC2D60916D001C05AC /* CACFPlugIn.h */,
8B0CC9AD2D60916D001C05AC /* CASettingsStorage.cpp */,
8B0CC9AE2D60916D001C05AC /* CAMixMap.h */,
8B0CC9AF2D60916D001C05AC /* CACFDistributedNotification.h */,
8B0CC9B02D60916D001C05AC /* CAFilePathUtils.h */,
8B0CC9B12D60916D001C05AC /* CATink.h */,
8B0CC9B22D60916D001C05AC /* CAStreamBasicDescription.cpp */,
8B0CC9B32D60916D001C05AC /* CAAudioChannelLayout.h */,
8B0CC9B42D60916D001C05AC /* CAProcess.cpp */,
8B0CC9B52D60916D001C05AC /* CAHostTimeBase.cpp */,
8B0CC9B62D60916D001C05AC /* CAPersistence.cpp */,
8B0CC9B72D60916D001C05AC /* CAAudioBufferList.cpp */,
8B0CC9B82D60916D001C05AC /* CAAudioTimeStamp.cpp */,
8B0CC9B92D60916D001C05AC /* CAVectorUnit.h */,
8B0CC9BA2D60916D001C05AC /* CAByteOrder.h */,
8B0CC9BB2D60916D001C05AC /* CACFArray.h */,
8B0CC9BC2D60916D001C05AC /* CAAtomicStack.h */,
8B0CC9BD2D60916D001C05AC /* CAReferenceCounted.h */,
8B0CC9BE2D60916D001C05AC /* CACFMachPort.cpp */,
8B0CC9BF2D60916D001C05AC /* CABufferList.cpp */,
8B0CC9C02D60916D001C05AC /* CAMutex.cpp */,
8B0CC9C12D60916D001C05AC /* CADebugger.cpp */,
8B0CC9C22D60916D001C05AC /* CABundleLocker.cpp */,
8B0CC9C32D60916D001C05AC /* CAAudioFileFormats.cpp */,
8B0CC9C42D60916D001C05AC /* CAMath.h */,
8B0CC9C52D60916D001C05AC /* CACFArray.cpp */,
8B0CC9C62D60916D001C05AC /* CACFMessagePort.h */,
8B0CC9C72D60916D001C05AC /* CAAudioValueRange.cpp */,
8B0CC9C82D60916D001C05AC /* CAAudioUnit.cpp */,
);
path = PublicUtility;
sourceTree = "<group>";
};
8B0CC9C92D60916D001C05AC /* AudioUnits */ = {
isa = PBXGroup;
children = (
8B0CC9CA2D60916D001C05AC /* AUPublic */,
);
path = AudioUnits;
sourceTree = "<group>";
};
8B0CC9CA2D60916D001C05AC /* AUPublic */ = {
isa = PBXGroup;
children = (
8B0CC9CB2D60916D001C05AC /* AUViewBase */,
8B0CC9CD2D60916D001C05AC /* AUBase */,
8B0CC9DD2D60916D001C05AC /* OtherBases */,
8B0CC9E02D60916D001C05AC /* Utility */,
);
path = AUPublic;
sourceTree = "<group>";
};
8B0CC9CB2D60916D001C05AC /* AUViewBase */ = {
isa = PBXGroup;
children = (
8B0CC9CC2D60916D001C05AC /* AUViewLocalizedStringKeys.h */,
);
path = AUViewBase;
sourceTree = "<group>";
};
8B0CC9CD2D60916D001C05AC /* AUBase */ = {
isa = PBXGroup;
children = (
8B0CC9CE2D60916D001C05AC /* ComponentBase.cpp */,
8B0CC9CF2D60916D001C05AC /* AUScopeElement.cpp */,
8B0CC9D02D60916D001C05AC /* ComponentBase.h */,
8B0CC9D12D60916D001C05AC /* AUBase.cpp */,
8B0CC9D22D60916D001C05AC /* AUInputElement.h */,
8B0CC9D32D60916D001C05AC /* AUBase.h */,
8B0CC9D42D60916D001C05AC /* AUPlugInDispatch.h */,
8B0CC9D52D60916D001C05AC /* AUDispatch.h */,
8B0CC9D62D60916D001C05AC /* AUOutputElement.cpp */,
8B0CC9D72D60916D001C05AC /* AUResources.r */,
8B0CC9D82D60916D001C05AC /* AUPlugInDispatch.cpp */,
8B0CC9D92D60916D001C05AC /* AUOutputElement.h */,
8B0CC9DA2D60916D001C05AC /* AUDispatch.cpp */,
8B0CC9DB2D60916D001C05AC /* AUScopeElement.h */,
8B0CC9DC2D60916D001C05AC /* AUInputElement.cpp */,
);
path = AUBase;
sourceTree = "<group>";
};
8B0CC9DD2D60916D001C05AC /* OtherBases */ = {
isa = PBXGroup;
children = (
8B0CC9DE2D60916D001C05AC /* AUEffectBase.cpp */,
8B0CC9DF2D60916D001C05AC /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8B0CC9E02D60916D001C05AC /* Utility */ = {
isa = PBXGroup;
children = (
8B0CC9E12D60916D001C05AC /* AUTimestampGenerator.h */,
8B0CC9E22D60916D001C05AC /* AUBaseHelper.cpp */,
8B0CC9E32D60916D001C05AC /* AUSilentTimeout.h */,
8B0CC9E42D60916D001C05AC /* AUInputFormatConverter.h */,
8B0CC9E52D60916D001C05AC /* AUTimestampGenerator.cpp */,
8B0CC9E62D60916D001C05AC /* AUBuffer.cpp */,
8B0CC9E72D60916D001C05AC /* AUMIDIDefs.h */,
8B0CC9E82D60916D001C05AC /* AUBuffer.h */,
8B0CC9E92D60916D001C05AC /* AUBaseHelper.h */,
);
path = Utility;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* Elliptical.h */,
8BA05A660720730100365D66 /* Elliptical.cpp */,
8BA05A670720730100365D66 /* Elliptical.exp */,
8BA05A680720730100365D66 /* Elliptical.r */,
8BA05A690720730100365D66 /* EllipticalVersion.h */,
);
name = "AU Source";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8B0CCA1A2D60916D001C05AC /* CABundleLocker.h in Headers */,
8B0CCA3B2D60916D001C05AC /* CAAudioChannelLayout.h in Headers */,
8B0CCA312D60916D001C05AC /* AUOutputBL.h in Headers */,
8B0CCA0C2D60916D001C05AC /* CAHostTimeBase.h in Headers */,
8B0CCA542D60916D001C05AC /* ComponentBase.h in Headers */,
8B0CCA442D60916D001C05AC /* CAAtomicStack.h in Headers */,
8B0CCA012D60916D001C05AC /* CAAudioTimeStamp.h in Headers */,
8B0CCA1E2D60916D001C05AC /* CAThreadSafeList.h in Headers */,
8B0CC9F92D60916D001C05AC /* CAAUParameter.h in Headers */,
8B0CCA6B2D60916D001C05AC /* AUBaseHelper.h in Headers */,
8B0CCA632D60916D001C05AC /* AUTimestampGenerator.h in Headers */,
8B0CCA142D60916D001C05AC /* CADebugPrintf.h in Headers */,
8B0CCA4E2D60916D001C05AC /* CACFMessagePort.h in Headers */,
8B0CC9FC2D60916D001C05AC /* CAAUProcessor.h in Headers */,
8B0CC9F82D60916D001C05AC /* CAAudioUnit.h in Headers */,
8B0CCA512D60916D001C05AC /* AUViewLocalizedStringKeys.h in Headers */,
8B0CCA372D60916D001C05AC /* CACFDistributedNotification.h in Headers */,
8B0CC9F62D60916D001C05AC /* CAComponent.h in Headers */,
8B0CCA042D60916D001C05AC /* CAVectorUnitTypes.h in Headers */,
8BA05A6E0720730100365D66 /* EllipticalVersion.h in Headers */,
8B0CCA382D60916D001C05AC /* CAFilePathUtils.h in Headers */,
8B0CC9FA2D60916D001C05AC /* CAException.h in Headers */,
8B0CC9F12D60916D001C05AC /* CAAtomic.h in Headers */,
8B0CC9F02D60916D001C05AC /* CAGuard.h in Headers */,
8B0CCA562D60916D001C05AC /* AUInputElement.h in Headers */,
8B0CCA2D2D60916D001C05AC /* CACFPreferences.h in Headers */,
8B0CCA422D60916D001C05AC /* CAByteOrder.h in Headers */,
8B0CCA252D60916D001C05AC /* CARingBuffer.h in Headers */,
8B0CC9EC2D60916D001C05AC /* CABool.h in Headers */,
8B0CCA112D60916D001C05AC /* CAMutex.h in Headers */,
8B0CCA572D60916D001C05AC /* AUBase.h in Headers */,
8BC6025C073B072D006C4272 /* Elliptical.h in Headers */,
8B0CCA092D60916D001C05AC /* CACFString.h in Headers */,
8B0CCA282D60916D001C05AC /* CASharedLibrary.h in Headers */,
8B0CC9F52D60916D001C05AC /* CATokenMap.h in Headers */,
8B0CC9EA2D60916D001C05AC /* CAExtAudioFile.h in Headers */,
8B0CC9FF2D60916D001C05AC /* CAPThread.h in Headers */,
8B0CCA1B2D60916D001C05AC /* CAPropertyAddress.h in Headers */,
8B0CCA452D60916D001C05AC /* CAReferenceCounted.h in Headers */,
8B0CCA6A2D60916D001C05AC /* AUBuffer.h in Headers */,
8B0CCA4C2D60916D001C05AC /* CAMath.h in Headers */,
8B0CCA2C2D60916D001C05AC /* CAAutoDisposer.h in Headers */,
8B0CC9F32D60916D001C05AC /* CACFObject.h in Headers */,
8B0CCA132D60916D001C05AC /* CASettingsStorage.h in Headers */,
8B0CCA1C2D60916D001C05AC /* CAXException.h in Headers */,
8B0CCA392D60916D001C05AC /* CATink.h in Headers */,
8B0CCA662D60916D001C05AC /* AUInputFormatConverter.h in Headers */,
8B0CCA412D60916D001C05AC /* CAVectorUnit.h in Headers */,
8B0CC9FD2D60916D001C05AC /* CAProcess.h in Headers */,
8B0CCA032D60916D001C05AC /* CAAudioValueRange.h in Headers */,
8B0CCA182D60916D001C05AC /* CABitOperations.h in Headers */,
8B0CCA0E2D60916D001C05AC /* CAAudioFileFormats.h in Headers */,
8B0CCA072D60916D001C05AC /* CACFNumber.h in Headers */,
8B0CCA1F2D60916D001C05AC /* CAAudioUnitOutputCapturer.h in Headers */,
8B0CCA302D60916D001C05AC /* CADebugMacros.h in Headers */,
8B0CCA692D60916D001C05AC /* AUMIDIDefs.h in Headers */,
8B0CCA292D60916D001C05AC /* CACFData.h in Headers */,
8B0CC9F22D60916D001C05AC /* CAStreamBasicDescription.h in Headers */,
8B0CCA582D60916D001C05AC /* AUPlugInDispatch.h in Headers */,
8B0CC9F42D60916D001C05AC /* CAStreamRangedDescription.h in Headers */,
8B0CCA342D60916D001C05AC /* CACFPlugIn.h in Headers */,
8B0CC9F72D60916D001C05AC /* CAAudioBufferList.h in Headers */,
8B0CCA0F2D60916D001C05AC /* CAAUMIDIMapManager.h in Headers */,
8B0CCA622D60916D001C05AC /* AUEffectBase.h in Headers */,
8B0CC9FE2D60916D001C05AC /* CACFDictionary.h in Headers */,
8B0CCA5F2D60916D001C05AC /* AUScopeElement.h in Headers */,
8B0CCA2F2D60916D001C05AC /* CAComponentDescription.h in Headers */,
8B0CCA652D60916D001C05AC /* AUSilentTimeout.h in Headers */,
8B0CCA272D60916D001C05AC /* CABufferList.h in Headers */,
8B0CCA592D60916D001C05AC /* AUDispatch.h in Headers */,
8B0CCA5D2D60916D001C05AC /* AUOutputElement.h in Headers */,
8B0CCA232D60916D001C05AC /* CALogMacros.h in Headers */,
8B0CCA172D60916D001C05AC /* AUParamInfo.h in Headers */,
8B0CCA362D60916D001C05AC /* CAMixMap.h in Headers */,
8B0CCA432D60916D001C05AC /* CACFArray.h in Headers */,
8B0CC9EB2D60916D001C05AC /* CACFMachPort.h in Headers */,
8B0CCA162D60916D001C05AC /* CAAUMIDIMap.h in Headers */,
8B0CC9EE2D60916D001C05AC /* CADebugger.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* Elliptical */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Elliptical" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Elliptical;
productInstallPath = "$(HOME)/Library/Bundles";
productName = Elliptical;
productReference = 8D01CCD20486CAD60068D4B7 /* Elliptical.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 "Elliptical" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
en,
fr,
de,
ja,
Base,
);
mainGroup = 089C166AFE841209C02AAC07 /* Elliptical */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* Elliptical */,
);
};
/* 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 = (
8B0CCA262D60916D001C05AC /* AUOutputBL.cpp in Sources */,
8B0CCA4B2D60916D001C05AC /* CAAudioFileFormats.cpp in Sources */,
8B0CCA3D2D60916D001C05AC /* CAHostTimeBase.cpp in Sources */,
8B0CCA152D60916D001C05AC /* CAXException.cpp in Sources */,
8B0CCA3F2D60916D001C05AC /* CAAudioBufferList.cpp in Sources */,
8B0CCA022D60916D001C05AC /* CAFilePathUtils.cpp in Sources */,
8B0CCA002D60916D001C05AC /* CAAUParameter.cpp in Sources */,
8B0CCA222D60916D001C05AC /* CAAUMIDIMap.cpp in Sources */,
8B0CCA4F2D60916D001C05AC /* CAAudioValueRange.cpp in Sources */,
8B0CCA5E2D60916D001C05AC /* AUDispatch.cpp in Sources */,
8B0CCA192D60916D001C05AC /* CACFPreferences.cpp in Sources */,
8B0CCA5C2D60916D001C05AC /* AUPlugInDispatch.cpp in Sources */,
8B0CC9FB2D60916D001C05AC /* CAAUProcessor.cpp in Sources */,
8B0CCA102D60916D001C05AC /* CACFDictionary.cpp in Sources */,
8B0CCA642D60916D001C05AC /* AUBaseHelper.cpp in Sources */,
8B0CCA492D60916D001C05AC /* CADebugger.cpp in Sources */,
8B0CCA1D2D60916D001C05AC /* CAAudioChannelLayout.cpp in Sources */,
8B0CCA202D60916D001C05AC /* AUParamInfo.cpp in Sources */,
8B0CCA3E2D60916D001C05AC /* CAPersistence.cpp in Sources */,
8B0CCA322D60916D001C05AC /* CADebugPrintf.cpp in Sources */,
8B0CCA672D60916D001C05AC /* AUTimestampGenerator.cpp in Sources */,
8B0CCA3A2D60916D001C05AC /* CAStreamBasicDescription.cpp in Sources */,
8B0CCA0A2D60916D001C05AC /* CAAUMIDIMapManager.cpp in Sources */,
8B0CCA352D60916D001C05AC /* CASettingsStorage.cpp in Sources */,
8B0CCA5A2D60916D001C05AC /* AUOutputElement.cpp in Sources */,
8B0CCA062D60916D001C05AC /* CAGuard.cpp in Sources */,
8BA05A6B0720730100365D66 /* Elliptical.cpp in Sources */,
8B0CCA482D60916D001C05AC /* CAMutex.cpp in Sources */,
8B0CCA612D60916D001C05AC /* AUEffectBase.cpp in Sources */,
8B0CCA462D60916D001C05AC /* CACFMachPort.cpp in Sources */,
8B0CCA552D60916D001C05AC /* AUBase.cpp in Sources */,
8B0CCA212D60916D001C05AC /* CASharedLibrary.cpp in Sources */,
8B0CCA082D60916D001C05AC /* CACFDistributedNotification.cpp in Sources */,
8B0CCA0B2D60916D001C05AC /* CAComponentDescription.cpp in Sources */,
8B0CCA122D60916D001C05AC /* CACFString.cpp in Sources */,
8B0CCA522D60916D001C05AC /* ComponentBase.cpp in Sources */,
8B0CCA332D60916D001C05AC /* CARingBuffer.cpp in Sources */,
8B0CCA532D60916D001C05AC /* AUScopeElement.cpp in Sources */,
8B0CCA502D60916D001C05AC /* CAAudioUnit.cpp in Sources */,
8B0CCA4D2D60916D001C05AC /* CACFArray.cpp in Sources */,
8B0CCA4A2D60916D001C05AC /* CABundleLocker.cpp in Sources */,
8B0CCA3C2D60916D001C05AC /* CAProcess.cpp in Sources */,
8B0CCA2A2D60916D001C05AC /* CAStreamRangedDescription.cpp in Sources */,
8B0CCA2B2D60916D001C05AC /* CAPThread.cpp in Sources */,
8B0CC9ED2D60916D001C05AC /* CAComponent.cpp in Sources */,
8B0CCA052D60916D001C05AC /* CAAudioChannelLayoutObject.cpp in Sources */,
8B0CCA402D60916D001C05AC /* CAAudioTimeStamp.cpp in Sources */,
8B0CCA472D60916D001C05AC /* CABufferList.cpp in Sources */,
8B0CCA242D60916D001C05AC /* CACFMessagePort.cpp in Sources */,
8B0CCA2E2D60916D001C05AC /* CAVectorUnit.cpp in Sources */,
8B0CCA602D60916D001C05AC /* AUInputElement.cpp in Sources */,
8B0CCA682D60916D001C05AC /* AUBuffer.cpp in Sources */,
8B0CCA0D2D60916D001C05AC /* CADebugMacros.cpp in Sources */,
8B0CC9EF2D60916D001C05AC /* CACFNumber.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8B0CCA6C2D6091EF001C05AC /* 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 = Elliptical.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 = Elliptical;
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 = Elliptical.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 = Elliptical;
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 "Elliptical" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Elliptical" */ = {
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 = "Elliptical.component"
BlueprintName = "Elliptical"
ReferencedContainer = "container:Elliptical.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 = "Elliptical.component"
BlueprintName = "Elliptical"
ReferencedContainer = "container:Elliptical.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>Elliptical.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,58 @@
/*
* File: EllipticalVersion.h
*
* Version: 1.0
*
* Created: 2/13/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 __EllipticalVersion_h__
#define __EllipticalVersion_h__
#ifdef DEBUG
#define kEllipticalVersion 0xFFFFFFFF
#else
#define kEllipticalVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define Elliptical_COMP_MANF 'Dthr'
#define Elliptical_COMP_SUBTYPE 'elli'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AudioComponents</key>
<array>
<dict>
<key>description</key>
<string>${PRODUCT_NAME:identifier} AU</string>
<key>factoryFunction</key>
<string>${PRODUCT_NAME:identifier}Factory</string>
<key>manufacturer</key>
<string>Dthr</string>
<key>name</key>
<string>Airwindows: ${PRODUCT_NAME:identifier}</string>
<key>subtype</key>
<string>elli</string>
<key>type</key>
<string>aufx</string>
<key>version</key>
<integer>65536</integer>
</dict>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>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>

Binary file not shown.

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>3</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>ProjectName</key>
<string>${EXECUTABLE_NAME}</string>
<key>SourceVersion</key>
<string>590000</string>
</dict>
</plist>

View file

@ -60,8 +60,7 @@ LRConvolve2::LRConvolve2(AudioUnit component)
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
@ -103,13 +102,6 @@ ComponentResult LRConvolve2::GetParameterInfo(AudioUnitScope inScope,
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;
default:
result = kAudioUnitErr_InvalidParameter;
@ -181,7 +173,6 @@ ComponentResult LRConvolve2::Initialize()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve2::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirSample = 0.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
@ -200,12 +191,8 @@ OSStatus LRConvolve2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionF
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 smooth = pow(GetParameter( kParam_A ),4)*(0.5/overallscale);
double channel = GetParameter( kParam_B );
double soar = 0.3-(GetParameter( kParam_A )*0.3);
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
@ -213,18 +200,16 @@ OSStatus LRConvolve2::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionF
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier*modulate);
if (carrier < 0.0) carrier = -sqrt(-carrier*modulate);
inputSampleL = inputSampleR = carrier;
//blame Jannik Asfaig (BoyXx76) for this (and me) :D
double out = 0.0;
double inL = fabs(inputSampleL)+(soar*soar);
double inR = fabs(inputSampleR)+(soar*soar);
if (inputSampleL > 0.0 && inputSampleR > 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
if (inputSampleL < 0.0 && inputSampleR > 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL > 0.0 && inputSampleR < 0.0) out = fmin((-sqrt(inR/inL)*inL)+soar,0.0);
if (inputSampleL < 0.0 && inputSampleR < 0.0) out = fmax((sqrt(inR/inL)*inL)-soar,0.0);
inputSampleL = inputSampleR = out;
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;

View file

@ -55,15 +55,12 @@
// parameters
static const float kDefaultValue_ParamA = 0.0;
static const float kDefaultValue_ParamB = 0.0;
static CFStringRef kParameterAName = CFSTR("Smooth");
static CFStringRef kParameterBName = CFSTR("Channel");
static CFStringRef kParameterAName = CFSTR("Soar");
enum {
kParam_A =0,
kParam_B =1,
kNumberOfParameters=2
kNumberOfParameters=1
};
#pragma mark ____LRConvolve2
@ -110,7 +107,6 @@ public:
virtual ComponentResult Version() { return kLRConvolve2Version; }
private:
double iirSample;
uint32_t fpdL;
uint32_t fpdR;
};

View file

@ -49,72 +49,52 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 759962244;
PBXWorkspaceStateSaveDate = 759962244;
PBXPerProjectTemplateStateSaveDate = 761175488;
PBXWorkspaceStateSaveDate = 761175488;
};
perUserProjectItems = {
8B292C6B2D4841130077EB56 /* PBXTextBookmark */ = 8B292C6B2D4841130077EB56 /* PBXTextBookmark */;
8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */;
8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */;
8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */ = 8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */;
8B1EBD032D5D3C86000D167E /* PBXTextBookmark */ = 8B1EBD032D5D3C86000D167E /* PBXTextBookmark */;
8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */ = 8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */;
8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */ = 8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */;
8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */ = 8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B292C6B2D4841130077EB56 /* PBXTextBookmark */ = {
8B1EBD032D5D3C86000D167E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* LRConvolve2.cpp */;
name = "LRConvolve2.cpp: 207";
name = "LRConvolve2.cpp: 186";
rLen = 0;
rLoc = 9204;
rLoc = 8645;
rType = 0;
vrLen = 136;
vrLoc = 9100;
vrLen = 258;
vrLoc = 3;
};
8B54B0E32D4C21B500A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 66";
rLen = 0;
rLoc = 3102;
rType = 0;
vrLen = 169;
vrLoc = 3306;
};
8B54B0E42D4C21B500A70B04 /* PBXTextBookmark */ = {
8B508DBD2D5ABC1500D53971 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve2Version.h */;
name = "LRConvolve2Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 185;
vrLoc = 2790;
};
8B54B0E52D4C21B500A70B04 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* LRConvolve2Version.h */;
name = "LRConvolve2Version.h: 54";
rLen = 0;
rLoc = 2920;
rType = 0;
vrLen = 184;
vrLoc = 2790;
vrLen = 0;
vrLoc = 0;
};
8BA05A660720730100365D66 /* LRConvolve2.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {984, 4716}}";
sepNavSelRange = "{9484, 425}";
sepNavVisRange = "{9134, 1392}";
sepNavWindowFrame = "{{409, 50}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {984, 4392}}";
sepNavSelRange = "{8880, 576}";
sepNavVisRange = "{8303, 1738}";
sepNavWindowFrame = "{{666, 50}, {1031, 828}}";
};
};
8BA05A690720730100365D66 /* LRConvolve2Version.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1152}}";
sepNavIntBoundsRect = "{{0, 0}, {554, 1116}}";
sepNavSelRange = "{2920, 0}";
sepNavVisRange = "{2790, 184}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{15, 45}, {1031, 828}}";
};
};
@ -125,12 +105,32 @@
sepNavVisRange = "{0, 1336}";
};
};
8BAB9A6B2D5E99370059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 63";
rLen = 0;
rLoc = 2984;
rType = 0;
vrLen = 256;
vrLoc = 3274;
};
8BAB9AA02D5E9EAB0059C6F4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* LRConvolve2.h */;
name = "LRConvolve2.h: 63";
rLen = 0;
rLoc = 2984;
rType = 0;
vrLen = 186;
vrLoc = 3274;
};
8BC6025B073B072D006C4272 /* LRConvolve2.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 2178}}";
sepNavSelRange = "{4831, 19}";
sepNavVisRange = "{3578, 1409}";
sepNavWindowFrame = "{{409, 38}, {1031, 828}}";
sepNavIntBoundsRect = "{{0, 0}, {795, 2484}}";
sepNavSelRange = "{2984, 0}";
sepNavVisRange = "{3274, 186}";
sepNavWindowFrame = "{{7, 50}, {1031, 828}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -324,7 +324,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BB92D47F3AA0077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>LRConvolve2Version.h</string>
<string>LRConvolve2.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -348,16 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8B292BBA2D47F3AA0077EB56</string>
<key>PBXProjectModuleLabel</key>
<string>LRConvolve2Version.h</string>
<string>LRConvolve2.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B54B0E52D4C21B500A70B04</string>
<string>8BAB9AA02D5E9EAB0059C6F4</string>
<key>history</key>
<array>
<string>8B292C6B2D4841130077EB56</string>
<string>8B54B0E32D4C21B500A70B04</string>
<string>8B54B0E42D4C21B500A70B04</string>
<string>8B508DBD2D5ABC1500D53971</string>
<string>8B1EBD032D5D3C86000D167E</string>
<string>8BAB9A6B2D5E99370059C6F4</string>
</array>
</dict>
<key>SplitCount</key>
@ -373,7 +373,7 @@
<key>Frame</key>
<string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@ -398,7 +398,7 @@
<key>Frame</key>
<string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -452,7 +452,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
<string>{{10, 27}, {603, 345}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -480,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B54B0E62D4C21B500A70B04</string>
<string>8BAB9AA12D5E9EAB0059C6F4</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B54B0E72D4C21B500A70B04</string>
<string>8BAB9AA22D5E9EAB0059C6F4</string>
<string>8B292BB92D47F3AA0077EB56</string>
<string>8B54B0E82D4C21B500A70B04</string>
<string>8BAB9AA32D5E9EAB0059C6F4</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -637,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>759964085.64274299</real>
<real>761175723.47224796</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -654,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B54B0E92D4C21B500A70B04</string>
<string>8BAB9AA42D5E9EAB0059C6F4</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/LRConvolve2/LRConvolve2.xcodeproj</string>
</array>
<key>WindowString</key>
<string>634 339 810 487 0 0 1440 878 </string>
<string>673 356 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AudioComponents</key>
<array>
<dict>
<key>description</key>
<string>${PRODUCT_NAME:identifier} AU</string>
<key>factoryFunction</key>
<string>${PRODUCT_NAME:identifier}Factory</string>
<key>manufacturer</key>
<string>Dthr</string>
<key>name</key>
<string>Airwindows: ${PRODUCT_NAME:identifier}</string>
<key>subtype</key>
<string>lrcx</string>
<key>type</key>
<string>aufx</string>
<key>version</key>
<integer>65536</integer>
</dict>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>Dthr</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,248 @@
/*
* File: LRConvolve3.cpp
*
* Version: 1.0
*
* Created: 2/10/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.
*
*/
/*=============================================================================
LRConvolve3.cpp
=============================================================================*/
#include "LRConvolve3.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, LRConvolve3)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::LRConvolve3
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LRConvolve3::LRConvolve3(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_A, kDefaultValue_ParamA );
SetParameter(kParam_B, kDefaultValue_ParamB );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::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;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::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 LRConvolve3::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// LRConvolve3::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____LRConvolve3EffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::LRConvolve3Kernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult LRConvolve3::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
iirSample = 0.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LRConvolve3::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus LRConvolve3::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 smooth = pow(GetParameter( kParam_A ),4)*(0.5/overallscale);
double channel = GetParameter( kParam_B );
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;
double carrier = inputSampleL;
double modulate = fabs(inputSampleR);
if (channel > 0.5) {
carrier = inputSampleR;
modulate = fabs(inputSampleL);
}
if (iirSample < modulate) iirSample = modulate;
modulate = (iirSample*smooth)+(modulate*(1.0-smooth));
if (carrier > 0.0) carrier = sqrt(carrier/modulate)*modulate;
if (carrier < 0.0) carrier = -sqrt(carrier/modulate)*modulate;
inputSampleL = inputSampleR = carrier;
//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;
}

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