mirror of
https://github.com/airwindows/airwindows.git
synced 2026-05-15 14:16:00 -06:00
VerbThic
This commit is contained in:
parent
90d4f81642
commit
824cfc024d
376 changed files with 90216 additions and 7470 deletions
|
|
@ -35,7 +35,7 @@ Lo-Fi: HipCrush, Flutter2, DeRez3, Pockey2, CrunchyGrooveWear, GrooveWear, Pocke
|
|||
|
||||
Noise: Noise, Texturize, TexturizeMS, VoiceOfTheStarship, DarkNoise, ElectroHat, Silhouette, TapeDust
|
||||
|
||||
Reverb: kStation, kGuitarHall2, kCathedral5, VerbTiny, kAlienSpaceship, kCathedral4, kBeyond, VerbSixes, kCosmos, 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
|
||||
Reverb: kStation, kGuitarHall2, kCathedral5, VerbTiny, VerbThic, kAlienSpaceship, kCathedral4, kBeyond, VerbSixes, kCosmos, 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: SquareRoot, Hypersoft, Creature, Huge, NCSeventeen, Tube2, Tube, Spiral2, PurestDrive, Focus, Mojo, Dyno, Spiral, UnBox, Desk4, Righteous4
|
||||
|
||||
|
|
@ -5957,6 +5957,20 @@ Just short of 12 MILLION echoes, even without regen. And they both have regen.
|
|||
|
||||
I'll give you more reverbs based on this technique, but enjoy the new bigger-than-Cosmos space :)
|
||||
|
||||
############ VerbThic is a classic artificial reverb for being opaque and textured.
|
||||
|
||||
Turns out VerbTiny has a sibling! And a secret… but that's for later.
|
||||
|
||||
VerbThic is a special case. It's exactly like VerbTiny in every respect, with one difference that may or may not be obvious (I'm hoping it is, but you never can tell). All my other reverbs, very much including VerbTiny, are meant to sound as far back as possible. The whole reason VerbTiny came out is, I stumbled across a reverb algorithm for a 4x4 Householder matrix that had unusually high peak energy relative to RMS.
|
||||
|
||||
This is not well understood in a world where everything is about making the RMS be louder no matter what, and where peaks are considered 'unheard' and unimportant, but I've been developing a focus on peak energy for years, and especially with my reverbs where I feel the heightened peak energy makes their spaces feel more distant, rather than 'an up front sound effect'.
|
||||
|
||||
So imagine my surprise when I ended up with another algorithm, much like VerbTiny, even a fairly similar room size, except it was the opposite! It produced unusually LOW peak energy. In theory, this would produce a reverb that doesn't sound far away: more like a fog that combines with sounds to thicken them up.
|
||||
|
||||
And so, that's VerbThic. Works the same way as VerbTiny, but meant to do the opposite job, spatially. On top of that, I found a way to re-use variables which cut down the size of the plugin considerably… and which very likely improves its memory use in your DAW, so it got more CPU (or at least memory) efficient. And, in the process of making it sound more up-front, I stumbled over a variation of the TapeHack 'altered sin() equation' concept that was all about taking a saturation effect to an extreme: applying a succession of corrections that were ALWAYS scaled through bit-shifting the exponent, even if that was not the correct amount to use. And I got an interesting-sounding saturation effect that sounds very different from TapeHack and also sounds a lot like nothing at all… I'll be exploring that one more in future. VerbThic is there to add body to sounds while seeming to come from the same depth as the sounds, rather than 'distant'. Consider it an interesting twist to try.
|
||||
|
||||
Oh, the secret of VerbTiny? The CPU optimization also worked for VerbTiny, running a little more efficiently while not affecting the sound (or saved mixes) the slightest amount. So, I've amended the code and re-uploaded it. Go ahead and redownload it as it's changed since last week, purely in terms of how many variables it uses to do the same thing. Have fun!
|
||||
|
||||
############ VerbTiny is a classic artificial reverb that expands reverb shape.
|
||||
|
||||
So, why this much simpler reverb? Instead of the more elaborate ones I'm developing starting with the letter k?
|
||||
|
|
@ -5975,7 +5989,7 @@ Because I'd had another idea: yes, it was gonna be 'VerbTiny' because it could s
|
|||
|
||||
That would mean a wideness control, because it started out seeming kind of narrow (I can't control this, it's part of the algorithm). If there was a dual mono instance, each side would just feed back into the same side, meaning that stereo would stay as VERY wide stereo, at the cost of destroying the normal stereo image the reverb would have. And running two 4x4 reverbs isn't that demanding.
|
||||
|
||||
And then, since the 'normal' stereo reverb was so narrow, that means it had a lot of energy in the mid channel even though it's two stereo channels. So, what if the wideness went from 'normal' to the dual mono one at the center (0.5) and then as you went beyond that, you brought in the original revverb again, but with one channel phase flipped? Then it'd all be side channel energy, against the dual mono.
|
||||
And then, since the 'normal' stereo reverb was so narrow, that means it had a lot of energy in the mid channel even though it's two stereo channels. So, what if the wideness went from 'normal' to the dual mono one at the center (0.5) and then as you went beyond that, you brought in the original reverb again, but with one channel phase flipped? Then it'd all be side channel energy, against the dual mono.
|
||||
|
||||
And so I did.
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ add_airwindows_plugin(BiquadOneHalf)
|
|||
add_airwindows_plugin(BiquadStack)
|
||||
add_airwindows_plugin(BiquadTriple)
|
||||
add_airwindows_plugin(Bite)
|
||||
add_airwindows_plugin(BitDualPan)
|
||||
add_airwindows_plugin(BitGlitter)
|
||||
add_airwindows_plugin(BitShiftGain)
|
||||
add_airwindows_plugin(BitShiftPan)
|
||||
|
|
@ -361,9 +362,11 @@ add_airwindows_plugin(PurestConsole2Channel)
|
|||
add_airwindows_plugin(PurestConsole3Buss)
|
||||
add_airwindows_plugin(PurestConsole3Channel)
|
||||
add_airwindows_plugin(PurestDrive)
|
||||
add_airwindows_plugin(PurestDualPan)
|
||||
add_airwindows_plugin(PurestEcho)
|
||||
add_airwindows_plugin(PurestFade)
|
||||
add_airwindows_plugin(PurestGain)
|
||||
add_airwindows_plugin(PurestSaturation)
|
||||
add_airwindows_plugin(PurestSquish)
|
||||
add_airwindows_plugin(PurestWarm)
|
||||
add_airwindows_plugin(PurestWarm2)
|
||||
|
|
@ -463,6 +466,7 @@ add_airwindows_plugin(VariMu)
|
|||
add_airwindows_plugin(Verbity)
|
||||
add_airwindows_plugin(Verbity2)
|
||||
add_airwindows_plugin(VerbSixes)
|
||||
add_airwindows_plugin(VerbThic)
|
||||
add_airwindows_plugin(VerbTiny)
|
||||
add_airwindows_plugin(Vibrato)
|
||||
add_airwindows_plugin(VinylDither)
|
||||
|
|
|
|||
142
plugins/LinuxVST/src/BitDualPan/BitDualPan.cpp
Executable file
142
plugins/LinuxVST/src/BitDualPan/BitDualPan.cpp
Executable file
|
|
@ -0,0 +1,142 @@
|
|||
/* ========================================
|
||||
* BitDualPan - BitDualPan.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __BitDualPan_H
|
||||
#include "BitDualPan.h"
|
||||
#endif
|
||||
|
||||
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new BitDualPan(audioMaster);}
|
||||
|
||||
BitDualPan::BitDualPan(audioMasterCallback audioMaster) :
|
||||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||
{
|
||||
A = 0.5;
|
||||
B = 0.0;
|
||||
C = 0.5;
|
||||
D = 1.0;
|
||||
|
||||
//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
|
||||
}
|
||||
|
||||
BitDualPan::~BitDualPan() {}
|
||||
VstInt32 BitDualPan::getVendorVersion () {return 1000;}
|
||||
void BitDualPan::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||
void BitDualPan::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 BitDualPan::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 BitDualPan::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 BitDualPan::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 BitDualPan::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 BitDualPan::getParameterName(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: vst_strncpy (text, "L Vol", kVstMaxParamStrLen); break;
|
||||
case kParamB: vst_strncpy (text, "L Pan", kVstMaxParamStrLen); break;
|
||||
case kParamC: vst_strncpy (text, "R Vol", kVstMaxParamStrLen); break;
|
||||
case kParamD: vst_strncpy (text, "R Pan", kVstMaxParamStrLen); break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
} //this is our labels for displaying in the VST host
|
||||
}
|
||||
|
||||
void BitDualPan::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 BitDualPan::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 BitDualPan::canDo(char *text)
|
||||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||
|
||||
bool BitDualPan::getEffectName(char* name) {
|
||||
vst_strncpy(name, "BitDualPan", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
VstPlugCategory BitDualPan::getPlugCategory() {return kPlugCategEffect;}
|
||||
|
||||
bool BitDualPan::getProductString(char* text) {
|
||||
vst_strncpy (text, "airwindows BitDualPan", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
bool BitDualPan::getVendorString(char* text) {
|
||||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||
}
|
||||
66
plugins/LinuxVST/src/BitDualPan/BitDualPan.h
Executable file
66
plugins/LinuxVST/src/BitDualPan/BitDualPan.h
Executable file
|
|
@ -0,0 +1,66 @@
|
|||
/* ========================================
|
||||
* BitDualPan - BitDualPan.h
|
||||
* Created 8/12/11 by SPIAdmin
|
||||
* Copyright (c) Airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __BitDualPan_H
|
||||
#define __BitDualPan_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 = 'bitd'; //Change this to what the AU identity is!
|
||||
|
||||
class BitDualPan :
|
||||
public AudioEffectX
|
||||
{
|
||||
public:
|
||||
BitDualPan(audioMasterCallback audioMaster);
|
||||
~BitDualPan();
|
||||
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;
|
||||
|
||||
//default stuff
|
||||
};
|
||||
|
||||
#endif
|
||||
300
plugins/LinuxVST/src/BitDualPan/BitDualPanProc.cpp
Executable file
300
plugins/LinuxVST/src/BitDualPan/BitDualPanProc.cpp
Executable file
|
|
@ -0,0 +1,300 @@
|
|||
/* ========================================
|
||||
* BitDualPan - BitDualPan.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __BitDualPan_H
|
||||
#include "BitDualPan.h"
|
||||
#endif
|
||||
|
||||
void BitDualPan::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
float* in1 = inputs[0];
|
||||
float* in2 = inputs[1];
|
||||
float* out1 = outputs[0];
|
||||
float* out2 = outputs[1];
|
||||
|
||||
double gainControl = (A*0.5)+0.05; //0.0 to 1.0
|
||||
int gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
int bitshiftL = gainBits - 3;
|
||||
int bitshiftR = gainBits - 3;
|
||||
double panControl = (B*2.0)-1.0; //-1.0 to 1.0
|
||||
double panAttenuation = (1.0-fabs(panControl));
|
||||
int panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double LgainL = 1.0;
|
||||
double LgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: LgainL = 0.0; break;
|
||||
case 16: LgainL = 0.0000152587890625; break;
|
||||
case 15: LgainL = 0.000030517578125; break;
|
||||
case 14: LgainL = 0.00006103515625; break;
|
||||
case 13: LgainL = 0.0001220703125; break;
|
||||
case 12: LgainL = 0.000244140625; break;
|
||||
case 11: LgainL = 0.00048828125; break;
|
||||
case 10: LgainL = 0.0009765625; break;
|
||||
case 9: LgainL = 0.001953125; break;
|
||||
case 8: LgainL = 0.00390625; break;
|
||||
case 7: LgainL = 0.0078125; break;
|
||||
case 6: LgainL = 0.015625; break;
|
||||
case 5: LgainL = 0.03125; break;
|
||||
case 4: LgainL = 0.0625; break;
|
||||
case 3: LgainL = 0.125; break;
|
||||
case 2: LgainL = 0.25; break;
|
||||
case 1: LgainL = 0.5; break;
|
||||
case 0: LgainL = 1.0; break;
|
||||
case -1: LgainL = 2.0; break;
|
||||
case -2: LgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: LgainR = 0.0; break;
|
||||
case 16: LgainR = 0.0000152587890625; break;
|
||||
case 15: LgainR = 0.000030517578125; break;
|
||||
case 14: LgainR = 0.00006103515625; break;
|
||||
case 13: LgainR = 0.0001220703125; break;
|
||||
case 12: LgainR = 0.000244140625; break;
|
||||
case 11: LgainR = 0.00048828125; break;
|
||||
case 10: LgainR = 0.0009765625; break;
|
||||
case 9: LgainR = 0.001953125; break;
|
||||
case 8: LgainR = 0.00390625; break;
|
||||
case 7: LgainR = 0.0078125; break;
|
||||
case 6: LgainR = 0.015625; break;
|
||||
case 5: LgainR = 0.03125; break;
|
||||
case 4: LgainR = 0.0625; break;
|
||||
case 3: LgainR = 0.125; break;
|
||||
case 2: LgainR = 0.25; break;
|
||||
case 1: LgainR = 0.5; break;
|
||||
case 0: LgainR = 1.0; break;
|
||||
case -1: LgainR = 2.0; break;
|
||||
case -2: LgainR = 4.0; break;
|
||||
}
|
||||
|
||||
gainControl = (C*0.5)+0.05; //0.0 to 1.0
|
||||
gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
bitshiftL = gainBits - 3;
|
||||
bitshiftR = gainBits - 3;
|
||||
panControl = (D*2.0)-1.0; //-1.0 to 1.0
|
||||
panAttenuation = (1.0-fabs(panControl));
|
||||
panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double RgainL = 1.0;
|
||||
double RgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: RgainL = 0.0; break;
|
||||
case 16: RgainL = 0.0000152587890625; break;
|
||||
case 15: RgainL = 0.000030517578125; break;
|
||||
case 14: RgainL = 0.00006103515625; break;
|
||||
case 13: RgainL = 0.0001220703125; break;
|
||||
case 12: RgainL = 0.000244140625; break;
|
||||
case 11: RgainL = 0.00048828125; break;
|
||||
case 10: RgainL = 0.0009765625; break;
|
||||
case 9: RgainL = 0.001953125; break;
|
||||
case 8: RgainL = 0.00390625; break;
|
||||
case 7: RgainL = 0.0078125; break;
|
||||
case 6: RgainL = 0.015625; break;
|
||||
case 5: RgainL = 0.03125; break;
|
||||
case 4: RgainL = 0.0625; break;
|
||||
case 3: RgainL = 0.125; break;
|
||||
case 2: RgainL = 0.25; break;
|
||||
case 1: RgainL = 0.5; break;
|
||||
case 0: RgainL = 1.0; break;
|
||||
case -1: RgainL = 2.0; break;
|
||||
case -2: RgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: RgainR = 0.0; break;
|
||||
case 16: RgainR = 0.0000152587890625; break;
|
||||
case 15: RgainR = 0.000030517578125; break;
|
||||
case 14: RgainR = 0.00006103515625; break;
|
||||
case 13: RgainR = 0.0001220703125; break;
|
||||
case 12: RgainR = 0.000244140625; break;
|
||||
case 11: RgainR = 0.00048828125; break;
|
||||
case 10: RgainR = 0.0009765625; break;
|
||||
case 9: RgainR = 0.001953125; break;
|
||||
case 8: RgainR = 0.00390625; break;
|
||||
case 7: RgainR = 0.0078125; break;
|
||||
case 6: RgainR = 0.015625; break;
|
||||
case 5: RgainR = 0.03125; break;
|
||||
case 4: RgainR = 0.0625; break;
|
||||
case 3: RgainR = 0.125; break;
|
||||
case 2: RgainR = 0.25; break;
|
||||
case 1: RgainR = 0.5; break;
|
||||
case 0: RgainR = 1.0; break;
|
||||
case -1: RgainR = 2.0; break;
|
||||
case -2: RgainR = 4.0; break;
|
||||
}
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
double monoL = *in1;
|
||||
double monoR = *in2;
|
||||
|
||||
*out1 = (monoL*LgainL)+(monoR*RgainL);
|
||||
*out2 = (monoL*LgainR)+(monoR*RgainR);
|
||||
|
||||
in1++;
|
||||
in2++;
|
||||
out1++;
|
||||
out2++;
|
||||
}
|
||||
}
|
||||
|
||||
void BitDualPan::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
double* in1 = inputs[0];
|
||||
double* in2 = inputs[1];
|
||||
double* out1 = outputs[0];
|
||||
double* out2 = outputs[1];
|
||||
|
||||
double gainControl = (A*0.5)+0.05; //0.0 to 1.0
|
||||
int gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
int bitshiftL = gainBits - 3;
|
||||
int bitshiftR = gainBits - 3;
|
||||
double panControl = (B*2.0)-1.0; //-1.0 to 1.0
|
||||
double panAttenuation = (1.0-fabs(panControl));
|
||||
int panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double LgainL = 1.0;
|
||||
double LgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: LgainL = 0.0; break;
|
||||
case 16: LgainL = 0.0000152587890625; break;
|
||||
case 15: LgainL = 0.000030517578125; break;
|
||||
case 14: LgainL = 0.00006103515625; break;
|
||||
case 13: LgainL = 0.0001220703125; break;
|
||||
case 12: LgainL = 0.000244140625; break;
|
||||
case 11: LgainL = 0.00048828125; break;
|
||||
case 10: LgainL = 0.0009765625; break;
|
||||
case 9: LgainL = 0.001953125; break;
|
||||
case 8: LgainL = 0.00390625; break;
|
||||
case 7: LgainL = 0.0078125; break;
|
||||
case 6: LgainL = 0.015625; break;
|
||||
case 5: LgainL = 0.03125; break;
|
||||
case 4: LgainL = 0.0625; break;
|
||||
case 3: LgainL = 0.125; break;
|
||||
case 2: LgainL = 0.25; break;
|
||||
case 1: LgainL = 0.5; break;
|
||||
case 0: LgainL = 1.0; break;
|
||||
case -1: LgainL = 2.0; break;
|
||||
case -2: LgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: LgainR = 0.0; break;
|
||||
case 16: LgainR = 0.0000152587890625; break;
|
||||
case 15: LgainR = 0.000030517578125; break;
|
||||
case 14: LgainR = 0.00006103515625; break;
|
||||
case 13: LgainR = 0.0001220703125; break;
|
||||
case 12: LgainR = 0.000244140625; break;
|
||||
case 11: LgainR = 0.00048828125; break;
|
||||
case 10: LgainR = 0.0009765625; break;
|
||||
case 9: LgainR = 0.001953125; break;
|
||||
case 8: LgainR = 0.00390625; break;
|
||||
case 7: LgainR = 0.0078125; break;
|
||||
case 6: LgainR = 0.015625; break;
|
||||
case 5: LgainR = 0.03125; break;
|
||||
case 4: LgainR = 0.0625; break;
|
||||
case 3: LgainR = 0.125; break;
|
||||
case 2: LgainR = 0.25; break;
|
||||
case 1: LgainR = 0.5; break;
|
||||
case 0: LgainR = 1.0; break;
|
||||
case -1: LgainR = 2.0; break;
|
||||
case -2: LgainR = 4.0; break;
|
||||
}
|
||||
|
||||
gainControl = (C*0.5)+0.05; //0.0 to 1.0
|
||||
gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
bitshiftL = gainBits - 3;
|
||||
bitshiftR = gainBits - 3;
|
||||
panControl = (D*2.0)-1.0; //-1.0 to 1.0
|
||||
panAttenuation = (1.0-fabs(panControl));
|
||||
panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double RgainL = 1.0;
|
||||
double RgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: RgainL = 0.0; break;
|
||||
case 16: RgainL = 0.0000152587890625; break;
|
||||
case 15: RgainL = 0.000030517578125; break;
|
||||
case 14: RgainL = 0.00006103515625; break;
|
||||
case 13: RgainL = 0.0001220703125; break;
|
||||
case 12: RgainL = 0.000244140625; break;
|
||||
case 11: RgainL = 0.00048828125; break;
|
||||
case 10: RgainL = 0.0009765625; break;
|
||||
case 9: RgainL = 0.001953125; break;
|
||||
case 8: RgainL = 0.00390625; break;
|
||||
case 7: RgainL = 0.0078125; break;
|
||||
case 6: RgainL = 0.015625; break;
|
||||
case 5: RgainL = 0.03125; break;
|
||||
case 4: RgainL = 0.0625; break;
|
||||
case 3: RgainL = 0.125; break;
|
||||
case 2: RgainL = 0.25; break;
|
||||
case 1: RgainL = 0.5; break;
|
||||
case 0: RgainL = 1.0; break;
|
||||
case -1: RgainL = 2.0; break;
|
||||
case -2: RgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: RgainR = 0.0; break;
|
||||
case 16: RgainR = 0.0000152587890625; break;
|
||||
case 15: RgainR = 0.000030517578125; break;
|
||||
case 14: RgainR = 0.00006103515625; break;
|
||||
case 13: RgainR = 0.0001220703125; break;
|
||||
case 12: RgainR = 0.000244140625; break;
|
||||
case 11: RgainR = 0.00048828125; break;
|
||||
case 10: RgainR = 0.0009765625; break;
|
||||
case 9: RgainR = 0.001953125; break;
|
||||
case 8: RgainR = 0.00390625; break;
|
||||
case 7: RgainR = 0.0078125; break;
|
||||
case 6: RgainR = 0.015625; break;
|
||||
case 5: RgainR = 0.03125; break;
|
||||
case 4: RgainR = 0.0625; break;
|
||||
case 3: RgainR = 0.125; break;
|
||||
case 2: RgainR = 0.25; break;
|
||||
case 1: RgainR = 0.5; break;
|
||||
case 0: RgainR = 1.0; break;
|
||||
case -1: RgainR = 2.0; break;
|
||||
case -2: RgainR = 4.0; break;
|
||||
}
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
double monoL = *in1;
|
||||
double monoR = *in2;
|
||||
|
||||
*out1 = (monoL*LgainL)+(monoR*RgainL);
|
||||
*out2 = (monoL*LgainR)+(monoR*RgainR);
|
||||
|
||||
in1++;
|
||||
in2++;
|
||||
out1++;
|
||||
out2++;
|
||||
}
|
||||
}
|
||||
149
plugins/LinuxVST/src/PurestDualPan/PurestDualPan.cpp
Executable file
149
plugins/LinuxVST/src/PurestDualPan/PurestDualPan.cpp
Executable file
|
|
@ -0,0 +1,149 @@
|
|||
/* ========================================
|
||||
* PurestDualPan - PurestDualPan.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestDualPan_H
|
||||
#include "PurestDualPan.h"
|
||||
#endif
|
||||
|
||||
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new PurestDualPan(audioMaster);}
|
||||
|
||||
PurestDualPan::PurestDualPan(audioMasterCallback audioMaster) :
|
||||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||
{
|
||||
A = 0.5;
|
||||
B = 0.0;
|
||||
C = 0.5;
|
||||
D = 1.0;
|
||||
|
||||
gainLA = gainLB = 0.5;
|
||||
panLA = panLB = 0.0;
|
||||
gainRA = gainRB = 0.5;
|
||||
panRA = panRB = 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
|
||||
}
|
||||
|
||||
PurestDualPan::~PurestDualPan() {}
|
||||
VstInt32 PurestDualPan::getVendorVersion () {return 1000;}
|
||||
void PurestDualPan::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||
void PurestDualPan::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 PurestDualPan::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 PurestDualPan::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 PurestDualPan::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 PurestDualPan::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 PurestDualPan::getParameterName(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: vst_strncpy (text, "L Vol", kVstMaxParamStrLen); break;
|
||||
case kParamB: vst_strncpy (text, "L Pan", kVstMaxParamStrLen); break;
|
||||
case kParamC: vst_strncpy (text, "R Vol", kVstMaxParamStrLen); break;
|
||||
case kParamD: vst_strncpy (text, "R Pan", kVstMaxParamStrLen); break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
} //this is our labels for displaying in the VST host
|
||||
}
|
||||
|
||||
void PurestDualPan::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 PurestDualPan::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 PurestDualPan::canDo(char *text)
|
||||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||
|
||||
bool PurestDualPan::getEffectName(char* name) {
|
||||
vst_strncpy(name, "PurestDualPan", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
VstPlugCategory PurestDualPan::getPlugCategory() {return kPlugCategEffect;}
|
||||
|
||||
bool PurestDualPan::getProductString(char* text) {
|
||||
vst_strncpy (text, "airwindows PurestDualPan", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
bool PurestDualPan::getVendorString(char* text) {
|
||||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||
}
|
||||
73
plugins/LinuxVST/src/PurestDualPan/PurestDualPan.h
Executable file
73
plugins/LinuxVST/src/PurestDualPan/PurestDualPan.h
Executable file
|
|
@ -0,0 +1,73 @@
|
|||
/* ========================================
|
||||
* PurestDualPan - PurestDualPan.h
|
||||
* Created 8/12/11 by SPIAdmin
|
||||
* Copyright (c) Airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestDualPan_H
|
||||
#define __PurestDualPan_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 = 'pdpn'; //Change this to what the AU identity is!
|
||||
|
||||
class PurestDualPan :
|
||||
public AudioEffectX
|
||||
{
|
||||
public:
|
||||
PurestDualPan(audioMasterCallback audioMaster);
|
||||
~PurestDualPan();
|
||||
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;
|
||||
|
||||
double gainLA, gainLB;
|
||||
double gainRA, gainRB;
|
||||
double panLA, panLB;
|
||||
double panRA, panRB;
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
//default stuff
|
||||
};
|
||||
|
||||
#endif
|
||||
124
plugins/LinuxVST/src/PurestDualPan/PurestDualPanProc.cpp
Executable file
124
plugins/LinuxVST/src/PurestDualPan/PurestDualPanProc.cpp
Executable file
|
|
@ -0,0 +1,124 @@
|
|||
/* ========================================
|
||||
* PurestDualPan - PurestDualPan.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestDualPan_H
|
||||
#include "PurestDualPan.h"
|
||||
#endif
|
||||
|
||||
void PurestDualPan::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
float* in1 = inputs[0];
|
||||
float* in2 = inputs[1];
|
||||
float* out1 = outputs[0];
|
||||
float* out2 = outputs[1];
|
||||
|
||||
VstInt32 inFramesToProcess = sampleFrames; //vst doesn't give us this as a separate variable so we'll make it
|
||||
|
||||
gainLA = gainLB; gainLB = A;
|
||||
panLA = panLB; panLB = B;
|
||||
gainRA = gainRB; gainRB = C;
|
||||
panRA = panRB; panRB = D;
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
long double inputSampleL = *in1;
|
||||
long 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 temp = (double)sampleFrames/inFramesToProcess;
|
||||
long double LpanR = ((panLA*temp) + (panLB*(1.0-temp)))*1.57079633;
|
||||
long double LpanL = 1.57079633 - LpanR;
|
||||
LpanR = sin(LpanR); LpanL = sin(LpanL);
|
||||
long double gainL = ((gainLA*temp) + (gainLB*(1.0-temp)))*2.0;
|
||||
gainL = pow(gainL,gainL + 0.618033988749894848204586);
|
||||
long double RpanR = ((panRA*temp) + (panRB*(1.0-temp)))*1.57079633;
|
||||
long double RpanL = 1.57079633 - RpanR;
|
||||
RpanR = sin(RpanR); RpanL = sin(RpanL);
|
||||
long double gainR = ((gainRA*temp) + (gainRB*(1.0-temp)))*2.0;
|
||||
gainR = pow(gainR,gainR + 0.618033988749894848204586);
|
||||
long double LoutL = LpanL*gainL*inputSampleL;
|
||||
long double LoutR = LpanR*gainL*inputSampleL;
|
||||
long double RoutL = RpanL*gainR*inputSampleR;
|
||||
long double RoutR = RpanR*gainR*inputSampleR;
|
||||
inputSampleL = LoutL + RoutL;
|
||||
inputSampleR = LoutR + RoutR;
|
||||
|
||||
//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 PurestDualPan::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
double* in1 = inputs[0];
|
||||
double* in2 = inputs[1];
|
||||
double* out1 = outputs[0];
|
||||
double* out2 = outputs[1];
|
||||
|
||||
VstInt32 inFramesToProcess = sampleFrames; //vst doesn't give us this as a separate variable so we'll make it
|
||||
|
||||
gainLA = gainLB; gainLB = A;
|
||||
panLA = panLB; panLB = B;
|
||||
gainRA = gainRB; gainRB = C;
|
||||
panRA = panRB; panRB = D;
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
long double inputSampleL = *in1;
|
||||
long 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 temp = (double)sampleFrames/inFramesToProcess;
|
||||
long double LpanR = ((panLA*temp) + (panLB*(1.0-temp)))*1.57079633;
|
||||
long double LpanL = 1.57079633 - LpanR;
|
||||
LpanR = sin(LpanR); LpanL = sin(LpanL);
|
||||
long double gainL = ((gainLA*temp) + (gainLB*(1.0-temp)))*2.0;
|
||||
gainL = pow(gainL,gainL + 0.618033988749894848204586);
|
||||
long double RpanR = ((panRA*temp) + (panRB*(1.0-temp)))*1.57079633;
|
||||
long double RpanL = 1.57079633 - RpanR;
|
||||
RpanR = sin(RpanR); RpanL = sin(RpanL);
|
||||
long double gainR = ((gainRA*temp) + (gainRB*(1.0-temp)))*2.0;
|
||||
gainR = pow(gainR,gainR + 0.618033988749894848204586);
|
||||
long double LoutL = LpanL*gainL*inputSampleL;
|
||||
long double LoutR = LpanR*gainL*inputSampleL;
|
||||
long double RoutL = RpanL*gainR*inputSampleR;
|
||||
long double RoutR = RpanR*gainR*inputSampleR;
|
||||
inputSampleL = LoutL + RoutL;
|
||||
inputSampleR = LoutR + RoutR;
|
||||
|
||||
//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++;
|
||||
}
|
||||
}
|
||||
128
plugins/LinuxVST/src/PurestSaturation/PurestSaturation.cpp
Executable file
128
plugins/LinuxVST/src/PurestSaturation/PurestSaturation.cpp
Executable file
|
|
@ -0,0 +1,128 @@
|
|||
/* ========================================
|
||||
* PurestSaturation - PurestSaturation.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestSaturation_H
|
||||
#include "PurestSaturation.h"
|
||||
#endif
|
||||
|
||||
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new PurestSaturation(audioMaster);}
|
||||
|
||||
PurestSaturation::PurestSaturation(audioMasterCallback audioMaster) :
|
||||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||
{
|
||||
A = 0.1;
|
||||
B = 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
|
||||
}
|
||||
|
||||
PurestSaturation::~PurestSaturation() {}
|
||||
VstInt32 PurestSaturation::getVendorVersion () {return 1000;}
|
||||
void PurestSaturation::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||
void PurestSaturation::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 PurestSaturation::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 PurestSaturation::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 PurestSaturation::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 PurestSaturation::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 PurestSaturation::getParameterName(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: vst_strncpy (text, "Input", kVstMaxParamStrLen); break;
|
||||
case kParamB: vst_strncpy (text, "Output", kVstMaxParamStrLen); break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
} //this is our labels for displaying in the VST host
|
||||
}
|
||||
|
||||
void PurestSaturation::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 PurestSaturation::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 PurestSaturation::canDo(char *text)
|
||||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||
|
||||
bool PurestSaturation::getEffectName(char* name) {
|
||||
vst_strncpy(name, "PurestSaturation", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
VstPlugCategory PurestSaturation::getPlugCategory() {return kPlugCategEffect;}
|
||||
|
||||
bool PurestSaturation::getProductString(char* text) {
|
||||
vst_strncpy (text, "airwindows PurestSaturation", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
bool PurestSaturation::getVendorString(char* text) {
|
||||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||
}
|
||||
64
plugins/LinuxVST/src/PurestSaturation/PurestSaturation.h
Executable file
64
plugins/LinuxVST/src/PurestSaturation/PurestSaturation.h
Executable file
|
|
@ -0,0 +1,64 @@
|
|||
/* ========================================
|
||||
* PurestSaturation - PurestSaturation.h
|
||||
* Created 8/12/11 by SPIAdmin
|
||||
* Copyright (c) Airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestSaturation_H
|
||||
#define __PurestSaturation_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 = 'pusa'; //Change this to what the AU identity is!
|
||||
|
||||
class PurestSaturation :
|
||||
public AudioEffectX
|
||||
{
|
||||
public:
|
||||
PurestSaturation(audioMasterCallback audioMaster);
|
||||
~PurestSaturation();
|
||||
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;
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
//default stuff
|
||||
};
|
||||
|
||||
#endif
|
||||
142
plugins/LinuxVST/src/PurestSaturation/PurestSaturationProc.cpp
Executable file
142
plugins/LinuxVST/src/PurestSaturation/PurestSaturationProc.cpp
Executable file
|
|
@ -0,0 +1,142 @@
|
|||
/* ========================================
|
||||
* PurestSaturation - PurestSaturation.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __PurestSaturation_H
|
||||
#include "PurestSaturation.h"
|
||||
#endif
|
||||
|
||||
void PurestSaturation::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
float* in1 = inputs[0];
|
||||
float* in2 = inputs[1];
|
||||
float* out1 = outputs[0];
|
||||
float* out2 = outputs[1];
|
||||
|
||||
long double inputGain = A*10.0;
|
||||
long double outputGain = B;
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
long double inputSampleL = *in1;
|
||||
long double inputSampleR = *in2;
|
||||
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
|
||||
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
|
||||
|
||||
if (inputGain != 1.0) {
|
||||
inputSampleL *= inputGain;
|
||||
inputSampleR *= inputGain;
|
||||
}
|
||||
|
||||
inputSampleL = fmin(fmax(inputSampleL,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSampleL * inputSampleL;
|
||||
long double temp = inputSampleL * X;
|
||||
inputSampleL -= (temp*0.125); temp *= X;
|
||||
inputSampleL += (temp*0.0078125); temp *= X;
|
||||
inputSampleL -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleL += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleL -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
inputSampleR = fmin(fmax(inputSampleR,-2.032610446872596),2.032610446872596);
|
||||
X = inputSampleR * inputSampleR;
|
||||
temp = inputSampleR * X;
|
||||
inputSampleR -= (temp*0.125); temp *= X;
|
||||
inputSampleR += (temp*0.0078125); temp *= X;
|
||||
inputSampleR -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleR += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleR -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
if (outputGain < 1.0) {
|
||||
inputSampleL *= outputGain;
|
||||
inputSampleR *= outputGain;
|
||||
}
|
||||
|
||||
//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 PurestSaturation::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||
{
|
||||
double* in1 = inputs[0];
|
||||
double* in2 = inputs[1];
|
||||
double* out1 = outputs[0];
|
||||
double* out2 = outputs[1];
|
||||
|
||||
long double inputGain = A*10.0;
|
||||
long double outputGain = B;
|
||||
|
||||
while (--sampleFrames >= 0)
|
||||
{
|
||||
long double inputSampleL = *in1;
|
||||
long double inputSampleR = *in2;
|
||||
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
|
||||
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
|
||||
|
||||
if (inputGain != 1.0) {
|
||||
inputSampleL *= inputGain;
|
||||
inputSampleR *= inputGain;
|
||||
}
|
||||
|
||||
inputSampleL = fmin(fmax(inputSampleL,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSampleL * inputSampleL;
|
||||
long double temp = inputSampleL * X;
|
||||
inputSampleL -= (temp*0.125); temp *= X;
|
||||
inputSampleL += (temp*0.0078125); temp *= X;
|
||||
inputSampleL -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleL += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleL -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
inputSampleR = fmin(fmax(inputSampleR,-2.032610446872596),2.032610446872596);
|
||||
X = inputSampleR * inputSampleR;
|
||||
temp = inputSampleR * X;
|
||||
inputSampleR -= (temp*0.125); temp *= X;
|
||||
inputSampleR += (temp*0.0078125); temp *= X;
|
||||
inputSampleR -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleR += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleR -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
if (outputGain < 1.0) {
|
||||
inputSampleL *= outputGain;
|
||||
inputSampleR *= outputGain;
|
||||
}
|
||||
|
||||
//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++;
|
||||
}
|
||||
}
|
||||
201
plugins/LinuxVST/src/VerbThic/VerbThic.cpp
Executable file
201
plugins/LinuxVST/src/VerbThic/VerbThic.cpp
Executable file
|
|
@ -0,0 +1,201 @@
|
|||
/* ========================================
|
||||
* VerbThic - VerbThic.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __VerbThic_H
|
||||
#include "VerbThic.h"
|
||||
#endif
|
||||
|
||||
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new VerbThic(audioMaster);}
|
||||
|
||||
VerbThic::VerbThic(audioMasterCallback audioMaster) :
|
||||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||
{
|
||||
A = 0.5;
|
||||
B = 1.0;
|
||||
C = 1.0;
|
||||
D = 0.0;
|
||||
E = 1.0;
|
||||
|
||||
for(int x = 0; x < d4A+2; x++) {a4AL[x] = 0.0; a4AR[x] = 0.0;}
|
||||
for(int x = 0; x < d4B+2; x++) {a4BL[x] = 0.0; a4BR[x] = 0.0;}
|
||||
for(int x = 0; x < d4C+2; x++) {a4CL[x] = 0.0; a4CR[x] = 0.0;}
|
||||
for(int x = 0; x < d4D+2; x++) {a4DL[x] = 0.0; a4DR[x] = 0.0;}
|
||||
for(int x = 0; x < d4E+2; x++) {a4EL[x] = 0.0; a4ER[x] = 0.0;}
|
||||
for(int x = 0; x < d4F+2; x++) {a4FL[x] = 0.0; a4FR[x] = 0.0;}
|
||||
for(int x = 0; x < d4G+2; x++) {a4GL[x] = 0.0; a4GR[x] = 0.0;}
|
||||
for(int x = 0; x < d4H+2; x++) {a4HL[x] = 0.0; a4HR[x] = 0.0;}
|
||||
for(int x = 0; x < d4I+2; x++) {a4IL[x] = 0.0; a4IR[x] = 0.0;}
|
||||
for(int x = 0; x < d4J+2; x++) {a4JL[x] = 0.0; a4JR[x] = 0.0;}
|
||||
for(int x = 0; x < d4K+2; x++) {a4KL[x] = 0.0; a4KR[x] = 0.0;}
|
||||
for(int x = 0; x < d4L+2; x++) {a4LL[x] = 0.0; a4LR[x] = 0.0;}
|
||||
for(int x = 0; x < d4M+2; x++) {a4ML[x] = 0.0; a4MR[x] = 0.0;}
|
||||
for(int x = 0; x < d4N+2; x++) {a4NL[x] = 0.0; a4NR[x] = 0.0;}
|
||||
for(int x = 0; x < d4O+2; x++) {a4OL[x] = 0.0; a4OR[x] = 0.0;}
|
||||
for(int x = 0; x < d4P+2; x++) {a4PL[x] = 0.0; a4PR[x] = 0.0;}
|
||||
c4AL = c4BL = c4CL = c4DL = c4EL = c4FL = c4GL = c4HL = 1;
|
||||
c4IL = c4JL = c4KL = c4LL = c4ML = c4NL = c4OL = c4PL = 1;
|
||||
c4AR = c4BR = c4CR = c4DR = c4ER = c4FR = c4GR = c4HR = 1;
|
||||
c4IR = c4JR = c4KR = c4LR = c4MR = c4NR = c4OR = c4PR = 1;
|
||||
f4AL = f4BL = f4CL = f4DL = 0.0;
|
||||
f4DR = f4HR = f4LR = f4PR = 0.0;
|
||||
|
||||
for(int x = 0; x < d4A+2; x++) {b4AL[x] = 0.0; b4AR[x] = 0.0;}
|
||||
for(int x = 0; x < d4B+2; x++) {b4BL[x] = 0.0; b4BR[x] = 0.0;}
|
||||
for(int x = 0; x < d4C+2; x++) {b4CL[x] = 0.0; b4CR[x] = 0.0;}
|
||||
for(int x = 0; x < d4D+2; x++) {b4DL[x] = 0.0; b4DR[x] = 0.0;}
|
||||
for(int x = 0; x < d4E+2; x++) {b4EL[x] = 0.0; b4ER[x] = 0.0;}
|
||||
for(int x = 0; x < d4F+2; x++) {b4FL[x] = 0.0; b4FR[x] = 0.0;}
|
||||
for(int x = 0; x < d4G+2; x++) {b4GL[x] = 0.0; b4GR[x] = 0.0;}
|
||||
for(int x = 0; x < d4H+2; x++) {b4HL[x] = 0.0; b4HR[x] = 0.0;}
|
||||
for(int x = 0; x < d4I+2; x++) {b4IL[x] = 0.0; b4IR[x] = 0.0;}
|
||||
for(int x = 0; x < d4J+2; x++) {b4JL[x] = 0.0; b4JR[x] = 0.0;}
|
||||
for(int x = 0; x < d4K+2; x++) {b4KL[x] = 0.0; b4KR[x] = 0.0;}
|
||||
for(int x = 0; x < d4L+2; x++) {b4LL[x] = 0.0; b4LR[x] = 0.0;}
|
||||
for(int x = 0; x < d4M+2; x++) {b4ML[x] = 0.0; b4MR[x] = 0.0;}
|
||||
for(int x = 0; x < d4N+2; x++) {b4NL[x] = 0.0; b4NR[x] = 0.0;}
|
||||
for(int x = 0; x < d4O+2; x++) {b4OL[x] = 0.0; b4OR[x] = 0.0;}
|
||||
for(int x = 0; x < d4P+2; x++) {b4PL[x] = 0.0; b4PR[x] = 0.0;}
|
||||
g4AL = g4BL = g4CL = g4DL = 0.0;
|
||||
g4DR = g4HR = g4LR = g4PR = 0.0;
|
||||
|
||||
for (int x = 0; x < bez_total; x++) {
|
||||
bez[x] = 0.0;
|
||||
bezF[x] = 0.0;
|
||||
}
|
||||
bez[bez_cycle] = 1.0;
|
||||
bezF[bez_cycle] = 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
|
||||
}
|
||||
|
||||
VerbThic::~VerbThic() {}
|
||||
VstInt32 VerbThic::getVendorVersion () {return 1000;}
|
||||
void VerbThic::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||
void VerbThic::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 VerbThic::getChunk (void** data, bool isPreset)
|
||||
{
|
||||
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
|
||||
chunkData[0] = A;
|
||||
chunkData[1] = B;
|
||||
chunkData[2] = C;
|
||||
chunkData[3] = D;
|
||||
chunkData[4] = E;
|
||||
/* 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 VerbThic::setChunk (void* data, VstInt32 byteSize, bool isPreset)
|
||||
{
|
||||
float *chunkData = (float *)data;
|
||||
A = pinParameter(chunkData[0]);
|
||||
B = pinParameter(chunkData[1]);
|
||||
C = pinParameter(chunkData[2]);
|
||||
D = pinParameter(chunkData[3]);
|
||||
E = pinParameter(chunkData[4]);
|
||||
/* 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 VerbThic::setParameter(VstInt32 index, float value) {
|
||||
switch (index) {
|
||||
case kParamA: A = value; break;
|
||||
case kParamB: B = value; break;
|
||||
case kParamC: C = value; break;
|
||||
case kParamD: D = value; break;
|
||||
case kParamE: E = value; break;
|
||||
default: throw; // unknown parameter, shouldn't happen!
|
||||
}
|
||||
}
|
||||
|
||||
float VerbThic::getParameter(VstInt32 index) {
|
||||
switch (index) {
|
||||
case kParamA: return A; break;
|
||||
case kParamB: return B; break;
|
||||
case kParamC: return C; break;
|
||||
case kParamD: return D; break;
|
||||
case kParamE: return E; break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
} return 0.0; //we only need to update the relevant name, this is simple to manage
|
||||
}
|
||||
|
||||
void VerbThic::getParameterName(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: vst_strncpy (text, "Replace", kVstMaxParamStrLen); break;
|
||||
case kParamB: vst_strncpy (text, "Derez", kVstMaxParamStrLen); break;
|
||||
case kParamC: vst_strncpy (text, "Filter", kVstMaxParamStrLen); break;
|
||||
case kParamD: vst_strncpy (text, "Wider", kVstMaxParamStrLen); break;
|
||||
case kParamE: 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 VerbThic::getParameterDisplay(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
|
||||
case kParamB: float2string (B, text, kVstMaxParamStrLen); break;
|
||||
case kParamC: float2string (C, text, kVstMaxParamStrLen); break;
|
||||
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
|
||||
case kParamE: float2string (E, text, kVstMaxParamStrLen); break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
} //this displays the values and handles 'popups' where it's discrete choices
|
||||
}
|
||||
|
||||
void VerbThic::getParameterLabel(VstInt32 index, char *text) {
|
||||
switch (index) {
|
||||
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||
case kParamE: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||
default: break; // unknown parameter, shouldn't happen!
|
||||
}
|
||||
}
|
||||
|
||||
VstInt32 VerbThic::canDo(char *text)
|
||||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||
|
||||
bool VerbThic::getEffectName(char* name) {
|
||||
vst_strncpy(name, "VerbThic", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
VstPlugCategory VerbThic::getPlugCategory() {return kPlugCategEffect;}
|
||||
|
||||
bool VerbThic::getProductString(char* text) {
|
||||
vst_strncpy (text, "airwindows VerbThic", kVstMaxProductStrLen); return true;
|
||||
}
|
||||
|
||||
bool VerbThic::getVendorString(char* text) {
|
||||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||
}
|
||||
165
plugins/LinuxVST/src/VerbThic/VerbThic.h
Executable file
165
plugins/LinuxVST/src/VerbThic/VerbThic.h
Executable file
|
|
@ -0,0 +1,165 @@
|
|||
/* ========================================
|
||||
* VerbThic - VerbThic.h
|
||||
* Created 8/12/11 by SPIAdmin
|
||||
* Copyright (c) Airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __VerbThic_H
|
||||
#define __VerbThic_H
|
||||
|
||||
#ifndef __audioeffect__
|
||||
#include "audioeffectx.h"
|
||||
#endif
|
||||
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <math.h>
|
||||
|
||||
enum {
|
||||
kParamA =0,
|
||||
kParamB =1,
|
||||
kParamC =2,
|
||||
kParamD =3,
|
||||
kParamE =4,
|
||||
kNumParameters = 5
|
||||
}; //
|
||||
|
||||
const int kNumPrograms = 0;
|
||||
const int kNumInputs = 2;
|
||||
const int kNumOutputs = 2;
|
||||
const unsigned long kUniqueId = 'vthc'; //Change this to what the AU identity is!
|
||||
|
||||
const int d4A = 1439; const int d4B = 3; const int d4C = 259; const int d4D = 578;
|
||||
const int d4E = 1562; const int d4F = 1152; const int d4G = 189; const int d4H = 3;
|
||||
const int d4I = 9; const int d4J = 101; const int d4K = 34; const int d4L = 638;
|
||||
const int d4M = 719; const int d4N = 1154; const int d4O = 38; const int d4P = 530; //1 to 108 ms, 358 seat club
|
||||
#define FOURBYFOUR true // 358seat14393259x4 on 2025-11-09 VerbThic
|
||||
|
||||
class VerbThic :
|
||||
public AudioEffectX
|
||||
{
|
||||
public:
|
||||
VerbThic(audioMasterCallback audioMaster);
|
||||
~VerbThic();
|
||||
virtual bool getEffectName(char* name); // The plug-in name
|
||||
virtual VstPlugCategory getPlugCategory(); // The general category for the plug-in
|
||||
virtual bool getProductString(char* text); // This is a unique plug-in string provided by Steinberg
|
||||
virtual bool getVendorString(char* text); // Vendor info
|
||||
virtual VstInt32 getVendorVersion(); // Version number
|
||||
virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);
|
||||
virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames);
|
||||
virtual void getProgramName(char *name); // read the name from the host
|
||||
virtual void setProgramName(char *name); // changes the name of the preset displayed in the host
|
||||
virtual VstInt32 getChunk (void** data, bool isPreset);
|
||||
virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset);
|
||||
virtual float getParameter(VstInt32 index); // get the parameter value at the specified index
|
||||
virtual void setParameter(VstInt32 index, float value); // set the parameter at index to value
|
||||
virtual void getParameterLabel(VstInt32 index, char *text); // label for the parameter (eg dB)
|
||||
virtual void getParameterName(VstInt32 index, char *text); // name of the parameter
|
||||
virtual void getParameterDisplay(VstInt32 index, char *text); // text description of the current value
|
||||
virtual VstInt32 canDo(char *text);
|
||||
private:
|
||||
char _programName[kVstMaxProgNameLen + 1];
|
||||
std::set< std::string > _canDo;
|
||||
|
||||
float A;
|
||||
float B;
|
||||
float C;
|
||||
float D;
|
||||
float E;
|
||||
|
||||
double a4AL[d4A+5];
|
||||
double a4BL[d4B+5];
|
||||
double a4CL[d4C+5];
|
||||
double a4DL[d4D+5];
|
||||
double a4EL[d4E+5];
|
||||
double a4FL[d4F+5];
|
||||
double a4GL[d4G+5];
|
||||
double a4HL[d4H+5];
|
||||
double a4IL[d4I+5];
|
||||
double a4JL[d4J+5];
|
||||
double a4KL[d4K+5];
|
||||
double a4LL[d4L+5];
|
||||
double a4ML[d4M+5];
|
||||
double a4NL[d4N+5];
|
||||
double a4OL[d4O+5];
|
||||
double a4PL[d4P+5];
|
||||
double a4AR[d4A+5];
|
||||
double a4BR[d4B+5];
|
||||
double a4CR[d4C+5];
|
||||
double a4DR[d4D+5];
|
||||
double a4ER[d4E+5];
|
||||
double a4FR[d4F+5];
|
||||
double a4GR[d4G+5];
|
||||
double a4HR[d4H+5];
|
||||
double a4IR[d4I+5];
|
||||
double a4JR[d4J+5];
|
||||
double a4KR[d4K+5];
|
||||
double a4LR[d4L+5];
|
||||
double a4MR[d4M+5];
|
||||
double a4NR[d4N+5];
|
||||
double a4OR[d4O+5];
|
||||
double a4PR[d4P+5];
|
||||
int c4AL,c4BL,c4CL,c4DL,c4EL,c4FL,c4GL,c4HL;
|
||||
int c4IL,c4JL,c4KL,c4LL,c4ML,c4NL,c4OL,c4PL;
|
||||
int c4AR,c4BR,c4CR,c4DR,c4ER,c4FR,c4GR,c4HR;
|
||||
int c4IR,c4JR,c4KR,c4LR,c4MR,c4NR,c4OR,c4PR;
|
||||
double f4AL,f4BL,f4CL,f4DL,f4DR,f4HR,f4LR,f4PR;
|
||||
//base stereo reverb
|
||||
double b4AL[d4A+5];
|
||||
double b4BL[d4B+5];
|
||||
double b4CL[d4C+5];
|
||||
double b4DL[d4D+5];
|
||||
double b4EL[d4E+5];
|
||||
double b4FL[d4F+5];
|
||||
double b4GL[d4G+5];
|
||||
double b4HL[d4H+5];
|
||||
double b4IL[d4I+5];
|
||||
double b4JL[d4J+5];
|
||||
double b4KL[d4K+5];
|
||||
double b4LL[d4L+5];
|
||||
double b4ML[d4M+5];
|
||||
double b4NL[d4N+5];
|
||||
double b4OL[d4O+5];
|
||||
double b4PL[d4P+5];
|
||||
double b4AR[d4A+5];
|
||||
double b4BR[d4B+5];
|
||||
double b4CR[d4C+5];
|
||||
double b4DR[d4D+5];
|
||||
double b4ER[d4E+5];
|
||||
double b4FR[d4F+5];
|
||||
double b4GR[d4G+5];
|
||||
double b4HR[d4H+5];
|
||||
double b4IR[d4I+5];
|
||||
double b4JR[d4J+5];
|
||||
double b4KR[d4K+5];
|
||||
double b4LR[d4L+5];
|
||||
double b4MR[d4M+5];
|
||||
double b4NR[d4N+5];
|
||||
double b4OR[d4O+5];
|
||||
double b4PR[d4P+5];
|
||||
double g4AL,g4BL,g4CL,g4DL,g4DR,g4HR,g4LR,g4PR;
|
||||
//changed letter is the dual mono, with rearranged grid
|
||||
|
||||
enum {
|
||||
bez_AL,
|
||||
bez_AR,
|
||||
bez_BL,
|
||||
bez_BR,
|
||||
bez_CL,
|
||||
bez_CR,
|
||||
bez_SampL,
|
||||
bez_SampR,
|
||||
bez_cycle,
|
||||
bez_total
|
||||
}; //the new undersampling. bez signifies the bezier curve reconstruction
|
||||
double bez[bez_total];
|
||||
|
||||
double bezF[bez_total];
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
//default stuff
|
||||
};
|
||||
|
||||
#endif
|
||||
718
plugins/LinuxVST/src/VerbThic/VerbThicProc.cpp
Executable file
718
plugins/LinuxVST/src/VerbThic/VerbThicProc.cpp
Executable file
|
|
@ -0,0 +1,718 @@
|
|||
/* ========================================
|
||||
* VerbThic - VerbThic.h
|
||||
* Copyright (c) airwindows, Airwindows uses the MIT license
|
||||
* ======================================== */
|
||||
|
||||
#ifndef __VerbThic_H
|
||||
#include "VerbThic.h"
|
||||
#endif
|
||||
|
||||
void VerbThic::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 reg4n = 0.03125+((1.0-pow(1.0-A,2.0))*0.03125);
|
||||
double attenuate = 1.0 - (1.0-pow(1.0-A,2.0));
|
||||
double derez = pow(B,2.0);
|
||||
derez = fmin(fmax(derez/overallscale,0.0001),1.0);
|
||||
int bezFraction = (int)(1.0/derez);
|
||||
double bezTrim = (double)bezFraction/(bezFraction+1.0);
|
||||
derez = 1.0 / bezFraction;
|
||||
bezTrim = 1.0-(derez*bezTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double derezFreq = pow(C,2.0);
|
||||
derezFreq = fmin(fmax(derezFreq/overallscale,0.0001),1.0);
|
||||
int bezFreqFraction = (int)(1.0/derezFreq);
|
||||
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
|
||||
derezFreq = 1.0 / bezFreqFraction;
|
||||
bezFreqTrim = 1.0-(derezFreq*bezFreqTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double wider = D*2.0;
|
||||
double wet = E;
|
||||
|
||||
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;
|
||||
|
||||
bez[bez_cycle] += derez;
|
||||
bez[bez_SampL] += (inputSampleL*attenuate*derez);
|
||||
bez[bez_SampR] += (inputSampleR*attenuate*derez);
|
||||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
//couldn't re-do the arrays perfectly, so instead
|
||||
//we keep exactly the same cross-matrix,
|
||||
//but we flip the sides we're using for initial reverb.
|
||||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
|
||||
inputSampleL = fmin(fmax(inputSampleL,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSampleL * inputSampleL;
|
||||
long double temp = inputSampleL * X;
|
||||
inputSampleL -= (temp*0.125); temp *= X;
|
||||
inputSampleL += (temp*0.0078125); temp *= X;
|
||||
inputSampleL -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleL += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleL -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
inputSampleR = fmin(fmax(inputSampleR,-2.032610446872596),2.032610446872596);
|
||||
X = inputSampleR * inputSampleR;
|
||||
temp = inputSampleR * X;
|
||||
inputSampleR -= (temp*0.125); temp *= X;
|
||||
inputSampleR += (temp*0.0078125); temp *= X;
|
||||
inputSampleR -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleR += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleR -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
bez[bez_BL] = bez[bez_AL];
|
||||
bez[bez_AL] = inputSampleL;
|
||||
bez[bez_SampL] = 0.0;
|
||||
|
||||
bez[bez_CR] = bez[bez_BR];
|
||||
bez[bez_BR] = bez[bez_AR];
|
||||
bez[bez_AR] = inputSampleR;
|
||||
bez[bez_SampR] = 0.0;
|
||||
}
|
||||
double X = bez[bez_cycle]*bezTrim;
|
||||
double CBL = (bez[bez_CL]*(1.0-X))+(bez[bez_BL]*X);
|
||||
double CBR = (bez[bez_CR]*(1.0-X))+(bez[bez_BR]*X);
|
||||
double BAL = (bez[bez_BL]*(1.0-X))+(bez[bez_AL]*X);
|
||||
double BAR = (bez[bez_BR]*(1.0-X))+(bez[bez_AR]*X);
|
||||
inputSampleL = (bez[bez_BL]+(CBL*(1.0-X))+(BAL*X))*-0.25;
|
||||
inputSampleR = (bez[bez_BR]+(CBR*(1.0-X))+(BAR*X))*-0.25;
|
||||
|
||||
bezF[bez_cycle] += derezFreq;
|
||||
bezF[bez_SampL] += (inputSampleL * derezFreq);
|
||||
bezF[bez_SampR] += (inputSampleR * derezFreq);
|
||||
if (bezF[bez_cycle] > 1.0) { //hit the end point and we do a filter sample
|
||||
bezF[bez_cycle] = 0.0;
|
||||
bezF[bez_CL] = bezF[bez_BL];
|
||||
bezF[bez_BL] = bezF[bez_AL];
|
||||
bezF[bez_AL] = bezF[bez_SampL];
|
||||
bezF[bez_SampL] = 0.0;
|
||||
bezF[bez_CR] = bezF[bez_BR];
|
||||
bezF[bez_BR] = bezF[bez_AR];
|
||||
bezF[bez_AR] = bezF[bez_SampR];
|
||||
bezF[bez_SampR] = 0.0;
|
||||
}
|
||||
X = bezF[bez_cycle]*bezFreqTrim;
|
||||
double CBLfreq = (bezF[bez_CL]*(1.0-X))+(bezF[bez_BL]*X);
|
||||
double BALfreq = (bezF[bez_BL]*(1.0-X))+(bezF[bez_AL]*X);
|
||||
inputSampleL = (bezF[bez_BL]+(CBLfreq*(1.0-X))+(BALfreq*X))*0.5;
|
||||
double CBRfreq = (bezF[bez_CR]*(1.0-X))+(bezF[bez_BR]*X);
|
||||
double BARfreq = (bezF[bez_BR]*(1.0-X))+(bezF[bez_AR]*X);
|
||||
inputSampleR = (bezF[bez_BR]+(CBRfreq*(1.0-X))+(BARfreq*X))*0.5;
|
||||
//filtering the reverb separately, after making it
|
||||
|
||||
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 VerbThic::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 reg4n = 0.03125+((1.0-pow(1.0-A,2.0))*0.03125);
|
||||
double attenuate = 1.0 - (1.0-pow(1.0-A,2.0));
|
||||
double derez = pow(B,2.0);
|
||||
derez = fmin(fmax(derez/overallscale,0.0001),1.0);
|
||||
int bezFraction = (int)(1.0/derez);
|
||||
double bezTrim = (double)bezFraction/(bezFraction+1.0);
|
||||
derez = 1.0 / bezFraction;
|
||||
bezTrim = 1.0-(derez*bezTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double derezFreq = pow(C,2.0);
|
||||
derezFreq = fmin(fmax(derezFreq/overallscale,0.0001),1.0);
|
||||
int bezFreqFraction = (int)(1.0/derezFreq);
|
||||
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
|
||||
derezFreq = 1.0 / bezFreqFraction;
|
||||
bezFreqTrim = 1.0-(derezFreq*bezFreqTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double wider = D*2.0;
|
||||
double wet = E;
|
||||
|
||||
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;
|
||||
|
||||
bez[bez_cycle] += derez;
|
||||
bez[bez_SampL] += (inputSampleL*attenuate*derez);
|
||||
bez[bez_SampR] += (inputSampleR*attenuate*derez);
|
||||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
//couldn't re-do the arrays perfectly, so instead
|
||||
//we keep exactly the same cross-matrix,
|
||||
//but we flip the sides we're using for initial reverb.
|
||||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
|
||||
inputSampleL = fmin(fmax(inputSampleL,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSampleL * inputSampleL;
|
||||
long double temp = inputSampleL * X;
|
||||
inputSampleL -= (temp*0.125); temp *= X;
|
||||
inputSampleL += (temp*0.0078125); temp *= X;
|
||||
inputSampleL -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleL += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleL -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
inputSampleR = fmin(fmax(inputSampleR,-2.032610446872596),2.032610446872596);
|
||||
X = inputSampleR * inputSampleR;
|
||||
temp = inputSampleR * X;
|
||||
inputSampleR -= (temp*0.125); temp *= X;
|
||||
inputSampleR += (temp*0.0078125); temp *= X;
|
||||
inputSampleR -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleR += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleR -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
bez[bez_BL] = bez[bez_AL];
|
||||
bez[bez_AL] = inputSampleL;
|
||||
bez[bez_SampL] = 0.0;
|
||||
|
||||
bez[bez_CR] = bez[bez_BR];
|
||||
bez[bez_BR] = bez[bez_AR];
|
||||
bez[bez_AR] = inputSampleR;
|
||||
bez[bez_SampR] = 0.0;
|
||||
}
|
||||
double X = bez[bez_cycle]*bezTrim;
|
||||
double CBL = (bez[bez_CL]*(1.0-X))+(bez[bez_BL]*X);
|
||||
double CBR = (bez[bez_CR]*(1.0-X))+(bez[bez_BR]*X);
|
||||
double BAL = (bez[bez_BL]*(1.0-X))+(bez[bez_AL]*X);
|
||||
double BAR = (bez[bez_BR]*(1.0-X))+(bez[bez_AR]*X);
|
||||
inputSampleL = (bez[bez_BL]+(CBL*(1.0-X))+(BAL*X))*-0.25;
|
||||
inputSampleR = (bez[bez_BR]+(CBR*(1.0-X))+(BAR*X))*-0.25;
|
||||
|
||||
bezF[bez_cycle] += derezFreq;
|
||||
bezF[bez_SampL] += (inputSampleL * derezFreq);
|
||||
bezF[bez_SampR] += (inputSampleR * derezFreq);
|
||||
if (bezF[bez_cycle] > 1.0) { //hit the end point and we do a filter sample
|
||||
bezF[bez_cycle] = 0.0;
|
||||
bezF[bez_CL] = bezF[bez_BL];
|
||||
bezF[bez_BL] = bezF[bez_AL];
|
||||
bezF[bez_AL] = bezF[bez_SampL];
|
||||
bezF[bez_SampL] = 0.0;
|
||||
bezF[bez_CR] = bezF[bez_BR];
|
||||
bezF[bez_BR] = bezF[bez_AR];
|
||||
bezF[bez_AR] = bezF[bez_SampR];
|
||||
bezF[bez_SampR] = 0.0;
|
||||
}
|
||||
X = bezF[bez_cycle]*bezFreqTrim;
|
||||
double CBLfreq = (bezF[bez_CL]*(1.0-X))+(bezF[bez_BL]*X);
|
||||
double BALfreq = (bezF[bez_BL]*(1.0-X))+(bezF[bez_AL]*X);
|
||||
inputSampleL = (bezF[bez_BL]+(CBLfreq*(1.0-X))+(BALfreq*X))*0.5;
|
||||
double CBRfreq = (bezF[bez_CR]*(1.0-X))+(bezF[bez_BR]*X);
|
||||
double BARfreq = (bezF[bez_BR]*(1.0-X))+(bezF[bez_AR]*X);
|
||||
inputSampleR = (bezF[bez_BR]+(CBRfreq*(1.0-X))+(BARfreq*X))*0.5;
|
||||
//filtering the reverb separately, after making it
|
||||
|
||||
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++;
|
||||
}
|
||||
}
|
||||
|
|
@ -52,298 +52,215 @@ void VerbTiny::processReplacing(float **inputs, float **outputs, VstInt32 sample
|
|||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
a4AL[c4AL] = mainSampleL + (f4AL * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4BL * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4CL * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4DL * reg4n);
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double o4AL = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double o4BL = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double o4CL = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double o4DL = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
|
||||
a4DR[c4DR] = mainSampleR + (f4DR * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4HR * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4LR * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
double o4DR = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
double o4HR = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
double o4LR = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
double o4PR = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
a4EL[c4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
a4FL[c4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
a4GL[c4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
a4HL[c4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
double o4EL = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
double o4FL = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
double o4GL = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
double o4HL = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
|
||||
a4CR[c4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
a4GR[c4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
a4KR[c4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
a4OR[c4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
double o4CR = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
double o4GR = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
double o4KR = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
double o4OR = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
a4IL[c4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
a4JL[c4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
a4KL[c4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
a4LL[c4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
double o4IL = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
double o4JL = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
double o4KL = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
double o4LL = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
|
||||
a4BR[c4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
a4FR[c4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
a4JR[c4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
a4NR[c4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
double o4BR = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
double o4FR = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
double o4JR = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
double o4NR = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
a4ML[c4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
a4NL[c4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
a4OL[c4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
a4PL[c4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
double o4ML = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
double o4NL = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
double o4OL = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
double o4PL = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
a4AR[c4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
a4ER[c4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
a4IR[c4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
a4MR[c4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
double o4AR = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
double o4ER = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
double o4IR = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
double o4MR = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
//-------- four
|
||||
|
||||
f4AL = o4AR - (o4ER + o4IR + o4MR);
|
||||
f4BL = o4ER - (o4AR + o4IR + o4MR);
|
||||
f4CL = o4IR - (o4AR + o4ER + o4MR);
|
||||
f4DL = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
f4DR = o4ML - (o4NL + o4OL + o4PL);
|
||||
f4HR = o4NL - (o4ML + o4OL + o4PL);
|
||||
f4LR = o4OL - (o4ML + o4NL + o4PL);
|
||||
f4PR = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
mainSampleL = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
mainSampleR = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
|
||||
//we still have an untouched inputsample, turn it into dual mono
|
||||
//won't need to redeclare any of the o4 temp variables, just re-use
|
||||
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
b4AL[e4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[e4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[e4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[e4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
e4AL++; if (e4AL < 0 || e4AL > d4A) e4AL = 0;
|
||||
e4BL++; if (e4BL < 0 || e4BL > d4B) e4BL = 0;
|
||||
e4CL++; if (e4CL < 0 || e4CL > d4C) e4CL = 0;
|
||||
e4DL++; if (e4DL < 0 || e4DL > d4D) e4DL = 0;
|
||||
|
||||
o4AL = b4AL[e4AL-((e4AL > d4A)?d4A+1:0)];
|
||||
o4BL = b4BL[e4BL-((e4BL > d4B)?d4B+1:0)];
|
||||
o4CL = b4CL[e4CL-((e4CL > d4C)?d4C+1:0)];
|
||||
o4DL = b4DL[e4DL-((e4DL > d4D)?d4D+1:0)];
|
||||
|
||||
b4DR[e4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[e4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[e4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[e4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
e4DR++; if (e4DR < 0 || e4DR > d4D) e4DR = 0;
|
||||
e4HR++; if (e4HR < 0 || e4HR > d4H) e4HR = 0;
|
||||
e4LR++; if (e4LR < 0 || e4LR > d4L) e4LR = 0;
|
||||
e4PR++; if (e4PR < 0 || e4PR > d4P) e4PR = 0;
|
||||
|
||||
o4DR = b4DR[e4DR-((e4DR > d4D)?d4D+1:0)];
|
||||
o4HR = b4HR[e4HR-((e4HR > d4H)?d4H+1:0)];
|
||||
o4LR = b4LR[e4LR-((e4LR > d4L)?d4L+1:0)];
|
||||
o4PR = b4PR[e4PR-((e4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
b4EL[e4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
b4FL[e4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
b4GL[e4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
b4HL[e4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
|
||||
e4EL++; if (e4EL < 0 || e4EL > d4E) e4EL = 0;
|
||||
e4FL++; if (e4FL < 0 || e4FL > d4F) e4FL = 0;
|
||||
e4GL++; if (e4GL < 0 || e4GL > d4G) e4GL = 0;
|
||||
e4HL++; if (e4HL < 0 || e4HL > d4H) e4HL = 0;
|
||||
|
||||
o4EL = b4EL[e4EL-((e4EL > d4E)?d4E+1:0)];
|
||||
o4FL = b4FL[e4FL-((e4FL > d4F)?d4F+1:0)];
|
||||
o4GL = b4GL[e4GL-((e4GL > d4G)?d4G+1:0)];
|
||||
o4HL = b4HL[e4HL-((e4HL > d4H)?d4H+1:0)];
|
||||
|
||||
b4CR[e4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
b4GR[e4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
b4KR[e4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
b4OR[e4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
e4CR++; if (e4CR < 0 || e4CR > d4C) e4CR = 0;
|
||||
e4GR++; if (e4GR < 0 || e4GR > d4G) e4GR = 0;
|
||||
e4KR++; if (e4KR < 0 || e4KR > d4K) e4KR = 0;
|
||||
e4OR++; if (e4OR < 0 || e4OR > d4O) e4OR = 0;
|
||||
|
||||
o4CR = b4CR[e4CR-((e4CR > d4C)?d4C+1:0)];
|
||||
o4GR = b4GR[e4GR-((e4GR > d4G)?d4G+1:0)];
|
||||
o4KR = b4KR[e4KR-((e4KR > d4K)?d4K+1:0)];
|
||||
o4OR = b4OR[e4OR-((e4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
b4IL[e4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
b4JL[e4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
b4KL[e4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
b4LL[e4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
|
||||
e4IL++; if (e4IL < 0 || e4IL > d4I) e4IL = 0;
|
||||
e4JL++; if (e4JL < 0 || e4JL > d4J) e4JL = 0;
|
||||
e4KL++; if (e4KL < 0 || e4KL > d4K) e4KL = 0;
|
||||
e4LL++; if (e4LL < 0 || e4LL > d4L) e4LL = 0;
|
||||
|
||||
o4IL = b4IL[e4IL-((e4IL > d4I)?d4I+1:0)];
|
||||
o4JL = b4JL[e4JL-((e4JL > d4J)?d4J+1:0)];
|
||||
o4KL = b4KL[e4KL-((e4KL > d4K)?d4K+1:0)];
|
||||
o4LL = b4LL[e4LL-((e4LL > d4L)?d4L+1:0)];
|
||||
|
||||
b4BR[e4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
b4FR[e4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
b4JR[e4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
b4NR[e4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
e4BR++; if (e4BR < 0 || e4BR > d4B) e4BR = 0;
|
||||
e4FR++; if (e4FR < 0 || e4FR > d4F) e4FR = 0;
|
||||
e4JR++; if (e4JR < 0 || e4JR > d4J) e4JR = 0;
|
||||
e4NR++; if (e4NR < 0 || e4NR > d4N) e4NR = 0;
|
||||
|
||||
o4BR = b4BR[e4BR-((e4BR > d4B)?d4B+1:0)];
|
||||
o4FR = b4FR[e4FR-((e4FR > d4F)?d4F+1:0)];
|
||||
o4JR = b4JR[e4JR-((e4JR > d4J)?d4J+1:0)];
|
||||
o4NR = b4NR[e4NR-((e4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
b4ML[e4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
b4NL[e4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
b4OL[e4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
b4PL[e4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
|
||||
e4ML++; if (e4ML < 0 || e4ML > d4M) e4ML = 0;
|
||||
e4NL++; if (e4NL < 0 || e4NL > d4N) e4NL = 0;
|
||||
e4OL++; if (e4OL < 0 || e4OL > d4O) e4OL = 0;
|
||||
e4PL++; if (e4PL < 0 || e4PL > d4P) e4PL = 0;
|
||||
|
||||
o4ML = b4ML[e4ML-((e4ML > d4M)?d4M+1:0)];
|
||||
o4NL = b4NL[e4NL-((e4NL > d4N)?d4N+1:0)];
|
||||
o4OL = b4OL[e4OL-((e4OL > d4O)?d4O+1:0)];
|
||||
o4PL = b4PL[e4PL-((e4PL > d4P)?d4P+1:0)];
|
||||
|
||||
b4AR[e4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
b4ER[e4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
b4IR[e4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
b4MR[e4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
|
||||
e4AR++; if (e4AR < 0 || e4AR > d4A) e4AR = 0;
|
||||
e4ER++; if (e4ER < 0 || e4ER > d4E) e4ER = 0;
|
||||
e4IR++; if (e4IR < 0 || e4IR > d4I) e4IR = 0;
|
||||
e4MR++; if (e4MR < 0 || e4MR > d4M) e4MR = 0;
|
||||
|
||||
o4AR = b4AR[e4AR-((e4AR > d4A)?d4A+1:0)];
|
||||
o4ER = b4ER[e4ER-((e4ER > d4E)?d4E+1:0)];
|
||||
o4IR = b4IR[e4IR-((e4IR > d4I)?d4I+1:0)];
|
||||
o4MR = b4MR[e4MR-((e4MR > d4M)?d4M+1:0)];
|
||||
|
||||
//-------- four
|
||||
|
||||
g4DR = o4AR - (o4ER + o4IR + o4MR);
|
||||
g4HR = o4ER - (o4AR + o4IR + o4MR);
|
||||
g4LR = o4IR - (o4AR + o4ER + o4MR);
|
||||
g4PR = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
g4AL = o4ML - (o4NL + o4OL + o4PL);
|
||||
g4BL = o4NL - (o4ML + o4OL + o4PL);
|
||||
g4CL = o4OL - (o4ML + o4NL + o4PL);
|
||||
g4DL = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
dualmonoSampleR = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
dualmonoSampleL = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
|
|
@ -353,11 +270,11 @@ void VerbTiny::processReplacing(float **inputs, float **outputs, VstInt32 sample
|
|||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleL*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleR*wider) + (mainSampleR*(1.0-wider));
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleL*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleR*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
|
|
@ -468,298 +385,215 @@ void VerbTiny::processDoubleReplacing(double **inputs, double **outputs, VstInt3
|
|||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
a4AL[c4AL] = mainSampleL + (f4AL * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4BL * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4CL * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4DL * reg4n);
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double o4AL = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double o4BL = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double o4CL = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double o4DL = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
|
||||
a4DR[c4DR] = mainSampleR + (f4DR * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4HR * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4LR * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
double o4DR = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
double o4HR = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
double o4LR = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
double o4PR = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
a4EL[c4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
a4FL[c4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
a4GL[c4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
a4HL[c4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
double o4EL = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
double o4FL = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
double o4GL = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
double o4HL = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
|
||||
a4CR[c4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
a4GR[c4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
a4KR[c4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
a4OR[c4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
double o4CR = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
double o4GR = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
double o4KR = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
double o4OR = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
a4IL[c4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
a4JL[c4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
a4KL[c4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
a4LL[c4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
double o4IL = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
double o4JL = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
double o4KL = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
double o4LL = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
|
||||
a4BR[c4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
a4FR[c4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
a4JR[c4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
a4NR[c4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
double o4BR = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
double o4FR = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
double o4JR = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
double o4NR = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
a4ML[c4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
a4NL[c4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
a4OL[c4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
a4PL[c4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
double o4ML = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
double o4NL = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
double o4OL = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
double o4PL = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
a4AR[c4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
a4ER[c4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
a4IR[c4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
a4MR[c4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
double o4AR = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
double o4ER = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
double o4IR = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
double o4MR = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
//-------- four
|
||||
|
||||
f4AL = o4AR - (o4ER + o4IR + o4MR);
|
||||
f4BL = o4ER - (o4AR + o4IR + o4MR);
|
||||
f4CL = o4IR - (o4AR + o4ER + o4MR);
|
||||
f4DL = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
f4DR = o4ML - (o4NL + o4OL + o4PL);
|
||||
f4HR = o4NL - (o4ML + o4OL + o4PL);
|
||||
f4LR = o4OL - (o4ML + o4NL + o4PL);
|
||||
f4PR = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
mainSampleL = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
mainSampleR = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
|
||||
//we still have an untouched inputsample, turn it into dual mono
|
||||
//won't need to redeclare any of the o4 temp variables, just re-use
|
||||
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
b4AL[e4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[e4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[e4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[e4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
e4AL++; if (e4AL < 0 || e4AL > d4A) e4AL = 0;
|
||||
e4BL++; if (e4BL < 0 || e4BL > d4B) e4BL = 0;
|
||||
e4CL++; if (e4CL < 0 || e4CL > d4C) e4CL = 0;
|
||||
e4DL++; if (e4DL < 0 || e4DL > d4D) e4DL = 0;
|
||||
|
||||
o4AL = b4AL[e4AL-((e4AL > d4A)?d4A+1:0)];
|
||||
o4BL = b4BL[e4BL-((e4BL > d4B)?d4B+1:0)];
|
||||
o4CL = b4CL[e4CL-((e4CL > d4C)?d4C+1:0)];
|
||||
o4DL = b4DL[e4DL-((e4DL > d4D)?d4D+1:0)];
|
||||
|
||||
b4DR[e4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[e4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[e4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[e4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
e4DR++; if (e4DR < 0 || e4DR > d4D) e4DR = 0;
|
||||
e4HR++; if (e4HR < 0 || e4HR > d4H) e4HR = 0;
|
||||
e4LR++; if (e4LR < 0 || e4LR > d4L) e4LR = 0;
|
||||
e4PR++; if (e4PR < 0 || e4PR > d4P) e4PR = 0;
|
||||
|
||||
o4DR = b4DR[e4DR-((e4DR > d4D)?d4D+1:0)];
|
||||
o4HR = b4HR[e4HR-((e4HR > d4H)?d4H+1:0)];
|
||||
o4LR = b4LR[e4LR-((e4LR > d4L)?d4L+1:0)];
|
||||
o4PR = b4PR[e4PR-((e4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
b4EL[e4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
b4FL[e4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
b4GL[e4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
b4HL[e4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
|
||||
e4EL++; if (e4EL < 0 || e4EL > d4E) e4EL = 0;
|
||||
e4FL++; if (e4FL < 0 || e4FL > d4F) e4FL = 0;
|
||||
e4GL++; if (e4GL < 0 || e4GL > d4G) e4GL = 0;
|
||||
e4HL++; if (e4HL < 0 || e4HL > d4H) e4HL = 0;
|
||||
|
||||
o4EL = b4EL[e4EL-((e4EL > d4E)?d4E+1:0)];
|
||||
o4FL = b4FL[e4FL-((e4FL > d4F)?d4F+1:0)];
|
||||
o4GL = b4GL[e4GL-((e4GL > d4G)?d4G+1:0)];
|
||||
o4HL = b4HL[e4HL-((e4HL > d4H)?d4H+1:0)];
|
||||
|
||||
b4CR[e4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
b4GR[e4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
b4KR[e4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
b4OR[e4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
e4CR++; if (e4CR < 0 || e4CR > d4C) e4CR = 0;
|
||||
e4GR++; if (e4GR < 0 || e4GR > d4G) e4GR = 0;
|
||||
e4KR++; if (e4KR < 0 || e4KR > d4K) e4KR = 0;
|
||||
e4OR++; if (e4OR < 0 || e4OR > d4O) e4OR = 0;
|
||||
|
||||
o4CR = b4CR[e4CR-((e4CR > d4C)?d4C+1:0)];
|
||||
o4GR = b4GR[e4GR-((e4GR > d4G)?d4G+1:0)];
|
||||
o4KR = b4KR[e4KR-((e4KR > d4K)?d4K+1:0)];
|
||||
o4OR = b4OR[e4OR-((e4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
b4IL[e4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
b4JL[e4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
b4KL[e4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
b4LL[e4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
|
||||
e4IL++; if (e4IL < 0 || e4IL > d4I) e4IL = 0;
|
||||
e4JL++; if (e4JL < 0 || e4JL > d4J) e4JL = 0;
|
||||
e4KL++; if (e4KL < 0 || e4KL > d4K) e4KL = 0;
|
||||
e4LL++; if (e4LL < 0 || e4LL > d4L) e4LL = 0;
|
||||
|
||||
o4IL = b4IL[e4IL-((e4IL > d4I)?d4I+1:0)];
|
||||
o4JL = b4JL[e4JL-((e4JL > d4J)?d4J+1:0)];
|
||||
o4KL = b4KL[e4KL-((e4KL > d4K)?d4K+1:0)];
|
||||
o4LL = b4LL[e4LL-((e4LL > d4L)?d4L+1:0)];
|
||||
|
||||
b4BR[e4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
b4FR[e4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
b4JR[e4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
b4NR[e4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
e4BR++; if (e4BR < 0 || e4BR > d4B) e4BR = 0;
|
||||
e4FR++; if (e4FR < 0 || e4FR > d4F) e4FR = 0;
|
||||
e4JR++; if (e4JR < 0 || e4JR > d4J) e4JR = 0;
|
||||
e4NR++; if (e4NR < 0 || e4NR > d4N) e4NR = 0;
|
||||
|
||||
o4BR = b4BR[e4BR-((e4BR > d4B)?d4B+1:0)];
|
||||
o4FR = b4FR[e4FR-((e4FR > d4F)?d4F+1:0)];
|
||||
o4JR = b4JR[e4JR-((e4JR > d4J)?d4J+1:0)];
|
||||
o4NR = b4NR[e4NR-((e4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
b4ML[e4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
b4NL[e4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
b4OL[e4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
b4PL[e4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
|
||||
e4ML++; if (e4ML < 0 || e4ML > d4M) e4ML = 0;
|
||||
e4NL++; if (e4NL < 0 || e4NL > d4N) e4NL = 0;
|
||||
e4OL++; if (e4OL < 0 || e4OL > d4O) e4OL = 0;
|
||||
e4PL++; if (e4PL < 0 || e4PL > d4P) e4PL = 0;
|
||||
|
||||
o4ML = b4ML[e4ML-((e4ML > d4M)?d4M+1:0)];
|
||||
o4NL = b4NL[e4NL-((e4NL > d4N)?d4N+1:0)];
|
||||
o4OL = b4OL[e4OL-((e4OL > d4O)?d4O+1:0)];
|
||||
o4PL = b4PL[e4PL-((e4PL > d4P)?d4P+1:0)];
|
||||
|
||||
b4AR[e4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
b4ER[e4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
b4IR[e4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
b4MR[e4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
|
||||
e4AR++; if (e4AR < 0 || e4AR > d4A) e4AR = 0;
|
||||
e4ER++; if (e4ER < 0 || e4ER > d4E) e4ER = 0;
|
||||
e4IR++; if (e4IR < 0 || e4IR > d4I) e4IR = 0;
|
||||
e4MR++; if (e4MR < 0 || e4MR > d4M) e4MR = 0;
|
||||
|
||||
o4AR = b4AR[e4AR-((e4AR > d4A)?d4A+1:0)];
|
||||
o4ER = b4ER[e4ER-((e4ER > d4E)?d4E+1:0)];
|
||||
o4IR = b4IR[e4IR-((e4IR > d4I)?d4I+1:0)];
|
||||
o4MR = b4MR[e4MR-((e4MR > d4M)?d4M+1:0)];
|
||||
|
||||
//-------- four
|
||||
|
||||
g4DR = o4AR - (o4ER + o4IR + o4MR);
|
||||
g4HR = o4ER - (o4AR + o4IR + o4MR);
|
||||
g4LR = o4IR - (o4AR + o4ER + o4MR);
|
||||
g4PR = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
g4AL = o4ML - (o4NL + o4OL + o4PL);
|
||||
g4BL = o4NL - (o4ML + o4OL + o4PL);
|
||||
g4CL = o4OL - (o4ML + o4NL + o4PL);
|
||||
g4DL = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
dualmonoSampleR = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
dualmonoSampleL = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
|
|
@ -769,11 +603,11 @@ void VerbTiny::processDoubleReplacing(double **inputs, double **outputs, VstInt3
|
|||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleL*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleR*wider) + (mainSampleR*(1.0-wider));
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleL*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleR*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ kWoodRoom::kWoodRoom(audioMasterCallback audioMaster) :
|
|||
B = 0.5;
|
||||
C = 0.25;
|
||||
D = 0.5;
|
||||
E = 0.5;
|
||||
E = 0.75;
|
||||
F = 0.5;
|
||||
|
||||
for(int x = 0; x < d3A+2; x++) {a3AL[x] = 0.0; a3AR[x] = 0.0;}
|
||||
|
|
|
|||
|
|
@ -184,16 +184,10 @@ private:
|
|||
bez_BR,
|
||||
bez_CL,
|
||||
bez_CR,
|
||||
bez_InL,
|
||||
bez_InR,
|
||||
bez_UnInL,
|
||||
bez_UnInR,
|
||||
bez_SampL,
|
||||
bez_SampR,
|
||||
bez_AvgInSampL,
|
||||
bez_AvgInSampR,
|
||||
bez_AvgOutSampL,
|
||||
bez_AvgOutSampR,
|
||||
bez_IIRL,
|
||||
bez_IIRR,
|
||||
bez_cycle,
|
||||
bez_total
|
||||
}; //the new undersampling. bez signifies the bezier curve reconstruction
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
355
plugins/MacAU/BitDualPan/BitDualPan.cpp
Executable file
355
plugins/MacAU/BitDualPan/BitDualPan.cpp
Executable file
|
|
@ -0,0 +1,355 @@
|
|||
/*
|
||||
* File: BitDualPan.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
BitDualPan.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "BitDualPan.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
COMPONENT_ENTRY(BitDualPan)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::BitDualPan
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
BitDualPan::BitDualPan(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
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::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;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::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 BitDualPan::SupportedNumChannels(const AUChannelInfo ** outInfo)
|
||||
{
|
||||
if (outInfo != NULL)
|
||||
{
|
||||
static AUChannelInfo info;
|
||||
info.inChannels = 2;
|
||||
info.outChannels = 2;
|
||||
*outInfo = &info;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// BitDualPan::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____BitDualPanEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::BitDualPanKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
|
||||
{
|
||||
return noErr;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::ProcessBufferLists
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OSStatus BitDualPan::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 gainControl = (GetParameter( kParam_A )*0.5)+0.05; //0.0 to 1.0
|
||||
int gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
int bitshiftL = gainBits - 3;
|
||||
int bitshiftR = gainBits - 3;
|
||||
double panControl = (GetParameter( kParam_B )*2.0)-1.0; //-1.0 to 1.0
|
||||
double panAttenuation = (1.0-fabs(panControl));
|
||||
int panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double LgainL = 1.0;
|
||||
double LgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: LgainL = 0.0; break;
|
||||
case 16: LgainL = 0.0000152587890625; break;
|
||||
case 15: LgainL = 0.000030517578125; break;
|
||||
case 14: LgainL = 0.00006103515625; break;
|
||||
case 13: LgainL = 0.0001220703125; break;
|
||||
case 12: LgainL = 0.000244140625; break;
|
||||
case 11: LgainL = 0.00048828125; break;
|
||||
case 10: LgainL = 0.0009765625; break;
|
||||
case 9: LgainL = 0.001953125; break;
|
||||
case 8: LgainL = 0.00390625; break;
|
||||
case 7: LgainL = 0.0078125; break;
|
||||
case 6: LgainL = 0.015625; break;
|
||||
case 5: LgainL = 0.03125; break;
|
||||
case 4: LgainL = 0.0625; break;
|
||||
case 3: LgainL = 0.125; break;
|
||||
case 2: LgainL = 0.25; break;
|
||||
case 1: LgainL = 0.5; break;
|
||||
case 0: LgainL = 1.0; break;
|
||||
case -1: LgainL = 2.0; break;
|
||||
case -2: LgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: LgainR = 0.0; break;
|
||||
case 16: LgainR = 0.0000152587890625; break;
|
||||
case 15: LgainR = 0.000030517578125; break;
|
||||
case 14: LgainR = 0.00006103515625; break;
|
||||
case 13: LgainR = 0.0001220703125; break;
|
||||
case 12: LgainR = 0.000244140625; break;
|
||||
case 11: LgainR = 0.00048828125; break;
|
||||
case 10: LgainR = 0.0009765625; break;
|
||||
case 9: LgainR = 0.001953125; break;
|
||||
case 8: LgainR = 0.00390625; break;
|
||||
case 7: LgainR = 0.0078125; break;
|
||||
case 6: LgainR = 0.015625; break;
|
||||
case 5: LgainR = 0.03125; break;
|
||||
case 4: LgainR = 0.0625; break;
|
||||
case 3: LgainR = 0.125; break;
|
||||
case 2: LgainR = 0.25; break;
|
||||
case 1: LgainR = 0.5; break;
|
||||
case 0: LgainR = 1.0; break;
|
||||
case -1: LgainR = 2.0; break;
|
||||
case -2: LgainR = 4.0; break;
|
||||
}
|
||||
|
||||
gainControl = (GetParameter( kParam_C )*0.5)+0.05; //0.0 to 1.0
|
||||
gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
bitshiftL = gainBits - 3;
|
||||
bitshiftR = gainBits - 3;
|
||||
panControl = (GetParameter( kParam_D )*2.0)-1.0; //-1.0 to 1.0
|
||||
panAttenuation = (1.0-fabs(panControl));
|
||||
panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double RgainL = 1.0;
|
||||
double RgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: RgainL = 0.0; break;
|
||||
case 16: RgainL = 0.0000152587890625; break;
|
||||
case 15: RgainL = 0.000030517578125; break;
|
||||
case 14: RgainL = 0.00006103515625; break;
|
||||
case 13: RgainL = 0.0001220703125; break;
|
||||
case 12: RgainL = 0.000244140625; break;
|
||||
case 11: RgainL = 0.00048828125; break;
|
||||
case 10: RgainL = 0.0009765625; break;
|
||||
case 9: RgainL = 0.001953125; break;
|
||||
case 8: RgainL = 0.00390625; break;
|
||||
case 7: RgainL = 0.0078125; break;
|
||||
case 6: RgainL = 0.015625; break;
|
||||
case 5: RgainL = 0.03125; break;
|
||||
case 4: RgainL = 0.0625; break;
|
||||
case 3: RgainL = 0.125; break;
|
||||
case 2: RgainL = 0.25; break;
|
||||
case 1: RgainL = 0.5; break;
|
||||
case 0: RgainL = 1.0; break;
|
||||
case -1: RgainL = 2.0; break;
|
||||
case -2: RgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: RgainR = 0.0; break;
|
||||
case 16: RgainR = 0.0000152587890625; break;
|
||||
case 15: RgainR = 0.000030517578125; break;
|
||||
case 14: RgainR = 0.00006103515625; break;
|
||||
case 13: RgainR = 0.0001220703125; break;
|
||||
case 12: RgainR = 0.000244140625; break;
|
||||
case 11: RgainR = 0.00048828125; break;
|
||||
case 10: RgainR = 0.0009765625; break;
|
||||
case 9: RgainR = 0.001953125; break;
|
||||
case 8: RgainR = 0.00390625; break;
|
||||
case 7: RgainR = 0.0078125; break;
|
||||
case 6: RgainR = 0.015625; break;
|
||||
case 5: RgainR = 0.03125; break;
|
||||
case 4: RgainR = 0.0625; break;
|
||||
case 3: RgainR = 0.125; break;
|
||||
case 2: RgainR = 0.25; break;
|
||||
case 1: RgainR = 0.5; break;
|
||||
case 0: RgainR = 1.0; break;
|
||||
case -1: RgainR = 2.0; break;
|
||||
case -2: RgainR = 4.0; break;
|
||||
}
|
||||
|
||||
while (nSampleFrames-- > 0) {
|
||||
double monoL = *inputL;
|
||||
double monoR = *inputR;
|
||||
|
||||
*outputL = (monoL*LgainL)+(monoR*RgainL);
|
||||
*outputR = (monoL*LgainR)+(monoR*RgainR);
|
||||
|
||||
inputL += 1;
|
||||
inputR += 1;
|
||||
outputL += 1;
|
||||
outputR += 1;
|
||||
}
|
||||
return noErr;
|
||||
}
|
||||
|
||||
1
plugins/MacAU/BitDualPan/BitDualPan.exp
Executable file
1
plugins/MacAU/BitDualPan/BitDualPan.exp
Executable file
|
|
@ -0,0 +1 @@
|
|||
_BitDualPanEntry
|
||||
125
plugins/MacAU/BitDualPan/BitDualPan.h
Executable file
125
plugins/MacAU/BitDualPan/BitDualPan.h
Executable file
|
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* File: BitDualPan.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 "BitDualPanVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __BitDualPan_h__
|
||||
#define __BitDualPan_h__
|
||||
|
||||
|
||||
#pragma mark ____BitDualPan 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("L Vol");
|
||||
static CFStringRef kParameterBName = CFSTR("L Pan");
|
||||
static CFStringRef kParameterCName = CFSTR("R Vol");
|
||||
static CFStringRef kParameterDName = CFSTR("R Pan");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
kParam_C =2,
|
||||
kParam_D =3,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=4
|
||||
};
|
||||
|
||||
#pragma mark ____BitDualPan
|
||||
class BitDualPan : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
BitDualPan(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~BitDualPan () { 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 kBitDualPanVersion; }
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#endif
|
||||
61
plugins/MacAU/BitDualPan/BitDualPan.r
Executable file
61
plugins/MacAU/BitDualPan/BitDualPan.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: BitDualPan.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 "BitDualPanVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_BitDualPan 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BitDualPan~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_BitDualPan
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE BitDualPan_COMP_SUBTYPE
|
||||
#define COMP_MANUF BitDualPan_COMP_MANF
|
||||
|
||||
#define VERSION kBitDualPanVersion
|
||||
#define NAME "Airwindows: BitDualPan"
|
||||
#define DESCRIPTION "BitDualPan AU"
|
||||
#define ENTRY_POINT "BitDualPanEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
1359
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
1359
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
147
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
147
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,147 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 8D01CCC60486CAD60068D4B7 /* BitDualPan */;
|
||||
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 = 785872420;
|
||||
PBXWorkspaceStateSaveDate = 785872420;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B0F89892ECF391400E4B38F /* PBXTextBookmark */ = 8B0F89892ECF391400E4B38F /* PBXTextBookmark */;
|
||||
8B3D20B22ED777C40020B133 /* PBXTextBookmark */ = 8B3D20B22ED777C40020B133 /* PBXTextBookmark */;
|
||||
8B3D20B32ED777C40020B133 /* PBXBookmark */ = 8B3D20B32ED777C40020B133 /* PBXBookmark */;
|
||||
8B3D20B42ED777C40020B133 /* PBXTextBookmark */ = 8B3D20B42ED777C40020B133 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B0F89892ECF391400E4B38F /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* BitDualPan.h */;
|
||||
name = "BitDualPan.h: 120";
|
||||
rLen = 0;
|
||||
rLoc = 5080;
|
||||
rType = 0;
|
||||
vrLen = 18;
|
||||
vrLoc = 5066;
|
||||
};
|
||||
8B3D20B22ED777C40020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* BitDualPan.cpp */;
|
||||
name = "BitDualPan.cpp: 215";
|
||||
rLen = 0;
|
||||
rLoc = 9703;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8B3D20B32ED777C40020B133 /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 8BA05A690720730100365D66 /* BitDualPanVersion.h */;
|
||||
};
|
||||
8B3D20B42ED777C40020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A690720730100365D66 /* BitDualPanVersion.h */;
|
||||
name = "BitDualPanVersion.h: 54";
|
||||
rLen = 0;
|
||||
rLoc = 2914;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8BA05A660720730100365D66 /* BitDualPan.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 6408}}";
|
||||
sepNavSelRange = "{14359, 148}";
|
||||
sepNavVisRange = "{13573, 1017}";
|
||||
sepNavWindowFrame = "{{600, 72}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1098}}";
|
||||
sepNavSelRange = "{2914, 0}";
|
||||
sepNavVisRange = "{0, 0}";
|
||||
sepNavWindowFrame = "{{15, 67}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{0, 1336}";
|
||||
};
|
||||
};
|
||||
8BC6025B073B072D006C4272 /* BitDualPan.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 2250}}";
|
||||
sepNavSelRange = "{5080, 0}";
|
||||
sepNavVisRange = "{2536, 890}";
|
||||
sepNavWindowFrame = "{{854, 47}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* BitDualPan */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
||||
1486
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
1486
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
490
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/project.pbxproj
Executable file
490
plugins/MacAU/BitDualPan/BitDualPan.xcodeproj/project.pbxproj
Executable 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 /* BitDualPan.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* BitDualPan.r */; };
|
||||
8BA05A6B0720730100365D66 /* BitDualPan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* BitDualPan.cpp */; };
|
||||
8BA05A6E0720730100365D66 /* BitDualPanVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* BitDualPanVersion.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 /* BitDualPan.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* BitDualPan.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 /* BitDualPan.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BitDualPan.cpp; sourceTree = "<group>"; };
|
||||
8BA05A670720730100365D66 /* BitDualPan.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = BitDualPan.exp; sourceTree = "<group>"; };
|
||||
8BA05A680720730100365D66 /* BitDualPan.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = BitDualPan.r; sourceTree = "<group>"; };
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BitDualPanVersion.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 /* BitDualPan.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BitDualPan.h; sourceTree = "<group>"; };
|
||||
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D01CCD20486CAD60068D4B7 /* BitDualPan.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BitDualPan.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 /* BitDualPan */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77ADFE841716C02AAC07 /* Source */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||
);
|
||||
name = BitDualPan;
|
||||
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 /* BitDualPan.component */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8BC6025B073B072D006C4272 /* BitDualPan.h */,
|
||||
8BA05A660720730100365D66 /* BitDualPan.cpp */,
|
||||
8BA05A670720730100365D66 /* BitDualPan.exp */,
|
||||
8BA05A680720730100365D66 /* BitDualPan.r */,
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.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 /* BitDualPanVersion.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 /* BitDualPan.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 /* BitDualPan */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "BitDualPan" */;
|
||||
buildPhases = (
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||
8D01CCCF0486CAD60068D4B7 /* Rez */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = BitDualPan;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = BitDualPan;
|
||||
productReference = 8D01CCD20486CAD60068D4B7 /* BitDualPan.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 "BitDualPan" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* BitDualPan */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D01CCC60486CAD60068D4B7 /* BitDualPan */,
|
||||
);
|
||||
};
|
||||
/* 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 /* BitDualPan.r in Rez */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8BA05A6B0720730100365D66 /* BitDualPan.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 = BitDualPan.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 = BitDualPan;
|
||||
WRAPPER_EXTENSION = component;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3E4BA245089833B7007656EC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
EXPORTED_SYMBOLS_FILE = BitDualPan.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 = BitDualPan;
|
||||
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 "BitDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA244089833B7007656EC /* Debug */,
|
||||
3E4BA245089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "BitDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA248089833B7007656EC /* Debug */,
|
||||
3E4BA249089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
||||
58
plugins/MacAU/BitDualPan/BitDualPanVersion.h
Executable file
58
plugins/MacAU/BitDualPan/BitDualPanVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* File: BitDualPanVersion.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 __BitDualPanVersion_h__
|
||||
#define __BitDualPanVersion_h__
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#define kBitDualPanVersion 0xFFFFFFFF
|
||||
#else
|
||||
#define kBitDualPanVersion 0x00010000
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||
#define BitDualPan_COMP_MANF 'Dthr'
|
||||
#define BitDualPan_COMP_SUBTYPE 'bitd'
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#endif
|
||||
|
||||
BIN
plugins/MacAU/BitDualPan/English.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacAU/BitDualPan/English.lproj/InfoPlist.strings
Executable file
Binary file not shown.
28
plugins/MacAU/BitDualPan/Info.plist
Executable file
28
plugins/MacAU/BitDualPan/Info.plist
Executable 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>
|
||||
5
plugins/MacAU/BitDualPan/StarterAU_Prefix.pch
Executable file
5
plugins/MacAU/BitDualPan/StarterAU_Prefix.pch
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
//
|
||||
// Prefix header for all source files of the '«PROJECTNAMEASIDENTIFIER»' target in the '«PROJECTNAMEASIDENTIFIER»' project.
|
||||
//
|
||||
|
||||
#include <CoreServices/CoreServices.h>
|
||||
16
plugins/MacAU/BitDualPan/version.plist
Executable file
16
plugins/MacAU/BitDualPan/version.plist
Executable 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>
|
||||
BIN
plugins/MacAU/PurestDualPan/English.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacAU/PurestDualPan/English.lproj/InfoPlist.strings
Executable file
Binary file not shown.
28
plugins/MacAU/PurestDualPan/Info.plist
Executable file
28
plugins/MacAU/PurestDualPan/Info.plist
Executable 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>
|
||||
273
plugins/MacAU/PurestDualPan/PurestDualPan.cpp
Executable file
273
plugins/MacAU/PurestDualPan/PurestDualPan.cpp
Executable file
|
|
@ -0,0 +1,273 @@
|
|||
/*
|
||||
* File: PurestDualPan.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
PurestDualPan.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "PurestDualPan.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
COMPONENT_ENTRY(PurestDualPan)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::PurestDualPan
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
PurestDualPan::PurestDualPan(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
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::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;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::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 PurestDualPan::SupportedNumChannels(const AUChannelInfo ** outInfo)
|
||||
{
|
||||
if (outInfo != NULL)
|
||||
{
|
||||
static AUChannelInfo info;
|
||||
info.inChannels = 2;
|
||||
info.outChannels = 2;
|
||||
*outInfo = &info;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// PurestDualPan::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____PurestDualPanEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::PurestDualPanKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
|
||||
{
|
||||
gainLA = gainLB = 0.5;
|
||||
panLA = panLB = 0.0;
|
||||
gainRA = gainRB = 0.5;
|
||||
panRA = panRB = 1.0;
|
||||
|
||||
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
|
||||
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
|
||||
return noErr;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::ProcessBufferLists
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OSStatus PurestDualPan::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;
|
||||
|
||||
gainLA = gainLB; gainLB = GetParameter( kParam_A );
|
||||
panLA = panLB; panLB = GetParameter( kParam_B );
|
||||
gainRA = gainRB; gainRB = GetParameter( kParam_C );
|
||||
panRA = panRB; panRB = GetParameter( kParam_D );
|
||||
|
||||
while (nSampleFrames-- > 0) {
|
||||
long double inputSampleL = *inputL;
|
||||
long 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 temp = (double)nSampleFrames/inFramesToProcess;
|
||||
long double LpanR = ((panLA*temp) + (panLB*(1.0-temp)))*1.57079633;
|
||||
long double LpanL = 1.57079633 - LpanR;
|
||||
LpanR = sin(LpanR); LpanL = sin(LpanL);
|
||||
long double gainL = ((gainLA*temp) + (gainLB*(1.0-temp)))*2.0;
|
||||
gainL = pow(gainL,gainL + 0.618033988749894848204586);
|
||||
long double RpanR = ((panRA*temp) + (panRB*(1.0-temp)))*1.57079633;
|
||||
long double RpanL = 1.57079633 - RpanR;
|
||||
RpanR = sin(RpanR); RpanL = sin(RpanL);
|
||||
long double gainR = ((gainRA*temp) + (gainRB*(1.0-temp)))*2.0;
|
||||
gainR = pow(gainR,gainR + 0.618033988749894848204586);
|
||||
long double LoutL = LpanL*gainL*inputSampleL;
|
||||
long double LoutR = LpanR*gainL*inputSampleL;
|
||||
long double RoutL = RpanL*gainR*inputSampleR;
|
||||
long double RoutR = RpanR*gainR*inputSampleR;
|
||||
inputSampleL = LoutL + RoutL;
|
||||
inputSampleR = LoutR + RoutR;
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
1
plugins/MacAU/PurestDualPan/PurestDualPan.exp
Executable file
1
plugins/MacAU/PurestDualPan/PurestDualPan.exp
Executable file
|
|
@ -0,0 +1 @@
|
|||
_PurestDualPanEntry
|
||||
133
plugins/MacAU/PurestDualPan/PurestDualPan.h
Executable file
133
plugins/MacAU/PurestDualPan/PurestDualPan.h
Executable file
|
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* File: PurestDualPan.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#include "AUEffectBase.h"
|
||||
#include "PurestDualPanVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __PurestDualPan_h__
|
||||
#define __PurestDualPan_h__
|
||||
|
||||
|
||||
#pragma mark ____PurestDualPan 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("L Vol");
|
||||
static CFStringRef kParameterBName = CFSTR("L Pan");
|
||||
static CFStringRef kParameterCName = CFSTR("R Vol");
|
||||
static CFStringRef kParameterDName = CFSTR("R Pan");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
kParam_C =2,
|
||||
kParam_D =3,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=4
|
||||
};
|
||||
|
||||
#pragma mark ____PurestDualPan
|
||||
class PurestDualPan : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
PurestDualPan(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~PurestDualPan () { 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 kPurestDualPanVersion; }
|
||||
|
||||
private:
|
||||
|
||||
double gainLA, gainLB;
|
||||
double gainRA, gainRB;
|
||||
double panLA, panLB;
|
||||
double panRA, panRB;
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#endif
|
||||
61
plugins/MacAU/PurestDualPan/PurestDualPan.r
Executable file
61
plugins/MacAU/PurestDualPan/PurestDualPan.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: PurestDualPan.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#include <AudioUnit/AudioUnit.r>
|
||||
|
||||
#include "PurestDualPanVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_PurestDualPan 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PurestDualPan~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_PurestDualPan
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE PurestDualPan_COMP_SUBTYPE
|
||||
#define COMP_MANUF PurestDualPan_COMP_MANF
|
||||
|
||||
#define VERSION kPurestDualPanVersion
|
||||
#define NAME "Airwindows: PurestDualPan"
|
||||
#define DESCRIPTION "PurestDualPan AU"
|
||||
#define ENTRY_POINT "PurestDualPanEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
1359
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
1359
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
147
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
147
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,147 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestDualPan */;
|
||||
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 = 785874505;
|
||||
PBXWorkspaceStateSaveDate = 785874505;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B3ABBDB2ECF50C800AF7969 /* PBXTextBookmark */ = 8B3ABBDB2ECF50C800AF7969 /* PBXTextBookmark */;
|
||||
8B3D20EA2ED77FCE0020B133 /* PBXTextBookmark */ = 8B3D20EA2ED77FCE0020B133 /* PBXTextBookmark */;
|
||||
8B3D20EB2ED77FCE0020B133 /* PBXBookmark */ = 8B3D20EB2ED77FCE0020B133 /* PBXBookmark */;
|
||||
8B3D20EC2ED77FCE0020B133 /* PBXTextBookmark */ = 8B3D20EC2ED77FCE0020B133 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B3ABBDB2ECF50C800AF7969 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A690720730100365D66 /* PurestDualPanVersion.h */;
|
||||
name = "PurestDualPanVersion.h: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 56;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8B3D20EA2ED77FCE0020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* PurestDualPan.cpp */;
|
||||
name = "PurestDualPan.cpp: 250";
|
||||
rLen = 0;
|
||||
rLoc = 11289;
|
||||
rType = 0;
|
||||
vrLen = 112;
|
||||
vrLoc = 11241;
|
||||
};
|
||||
8B3D20EB2ED77FCE0020B133 /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* PurestDualPan.h */;
|
||||
};
|
||||
8B3D20EC2ED77FCE0020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* PurestDualPan.h */;
|
||||
name = "PurestDualPan.h: 121";
|
||||
rLen = 92;
|
||||
rLoc = 5111;
|
||||
rType = 0;
|
||||
vrLen = 35;
|
||||
vrLoc = 3253;
|
||||
};
|
||||
8BA05A660720730100365D66 /* PurestDualPan.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 5202}}";
|
||||
sepNavSelRange = "{10545, 809}";
|
||||
sepNavVisRange = "{10192, 1444}";
|
||||
sepNavWindowFrame = "{{614, 101}, {826, 681}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* PurestDualPanVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{1177, 1821}";
|
||||
sepNavWindowFrame = "{{595, 72}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{0, 1336}";
|
||||
};
|
||||
};
|
||||
8BC6025B073B072D006C4272 /* PurestDualPan.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 2718}}";
|
||||
sepNavSelRange = "{5111, 92}";
|
||||
sepNavVisRange = "{3253, 35}";
|
||||
sepNavWindowFrame = "{{807, 72}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* PurestDualPan */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
||||
1486
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
1486
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
490
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/project.pbxproj
Executable file
490
plugins/MacAU/PurestDualPan/PurestDualPan.xcodeproj/project.pbxproj
Executable 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 /* PurestDualPan.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* PurestDualPan.r */; };
|
||||
8BA05A6B0720730100365D66 /* PurestDualPan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* PurestDualPan.cpp */; };
|
||||
8BA05A6E0720730100365D66 /* PurestDualPanVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* PurestDualPanVersion.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 /* PurestDualPan.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* PurestDualPan.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 /* PurestDualPan.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PurestDualPan.cpp; sourceTree = "<group>"; };
|
||||
8BA05A670720730100365D66 /* PurestDualPan.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = PurestDualPan.exp; sourceTree = "<group>"; };
|
||||
8BA05A680720730100365D66 /* PurestDualPan.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = PurestDualPan.r; sourceTree = "<group>"; };
|
||||
8BA05A690720730100365D66 /* PurestDualPanVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurestDualPanVersion.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 /* PurestDualPan.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurestDualPan.h; sourceTree = "<group>"; };
|
||||
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D01CCD20486CAD60068D4B7 /* PurestDualPan.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PurestDualPan.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 /* PurestDualPan */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77ADFE841716C02AAC07 /* Source */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||
);
|
||||
name = PurestDualPan;
|
||||
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 /* PurestDualPan.component */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8BC6025B073B072D006C4272 /* PurestDualPan.h */,
|
||||
8BA05A660720730100365D66 /* PurestDualPan.cpp */,
|
||||
8BA05A670720730100365D66 /* PurestDualPan.exp */,
|
||||
8BA05A680720730100365D66 /* PurestDualPan.r */,
|
||||
8BA05A690720730100365D66 /* PurestDualPanVersion.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 /* PurestDualPanVersion.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 /* PurestDualPan.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 /* PurestDualPan */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "PurestDualPan" */;
|
||||
buildPhases = (
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||
8D01CCCF0486CAD60068D4B7 /* Rez */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = PurestDualPan;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = PurestDualPan;
|
||||
productReference = 8D01CCD20486CAD60068D4B7 /* PurestDualPan.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 "PurestDualPan" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* PurestDualPan */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D01CCC60486CAD60068D4B7 /* PurestDualPan */,
|
||||
);
|
||||
};
|
||||
/* 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 /* PurestDualPan.r in Rez */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8BA05A6B0720730100365D66 /* PurestDualPan.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 = PurestDualPan.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 = PurestDualPan;
|
||||
WRAPPER_EXTENSION = component;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3E4BA245089833B7007656EC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
EXPORTED_SYMBOLS_FILE = PurestDualPan.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 = PurestDualPan;
|
||||
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 "PurestDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA244089833B7007656EC /* Debug */,
|
||||
3E4BA245089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "PurestDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA248089833B7007656EC /* Debug */,
|
||||
3E4BA249089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
||||
58
plugins/MacAU/PurestDualPan/PurestDualPanVersion.h
Executable file
58
plugins/MacAU/PurestDualPan/PurestDualPanVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* File: PurestDualPanVersion.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef __PurestDualPanVersion_h__
|
||||
#define __PurestDualPanVersion_h__
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#define kPurestDualPanVersion 0xFFFFFFFF
|
||||
#else
|
||||
#define kPurestDualPanVersion 0x00010000
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||
#define PurestDualPan_COMP_MANF 'Dthr'
|
||||
#define PurestDualPan_COMP_SUBTYPE 'pdpn'
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#endif
|
||||
|
||||
5
plugins/MacAU/PurestDualPan/StarterAU_Prefix.pch
Executable file
5
plugins/MacAU/PurestDualPan/StarterAU_Prefix.pch
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
//
|
||||
// Prefix header for all source files of the '«PROJECTNAMEASIDENTIFIER»' target in the '«PROJECTNAMEASIDENTIFIER»' project.
|
||||
//
|
||||
|
||||
#include <CoreServices/CoreServices.h>
|
||||
16
plugins/MacAU/PurestDualPan/version.plist
Executable file
16
plugins/MacAU/PurestDualPan/version.plist
Executable 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>
|
||||
BIN
plugins/MacAU/PurestSaturation/English.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacAU/PurestSaturation/English.lproj/InfoPlist.strings
Executable file
Binary file not shown.
28
plugins/MacAU/PurestSaturation/Info.plist
Executable file
28
plugins/MacAU/PurestSaturation/Info.plist
Executable 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>
|
||||
218
plugins/MacAU/PurestSaturation/PurestSaturation.cpp
Executable file
218
plugins/MacAU/PurestSaturation/PurestSaturation.cpp
Executable file
|
|
@ -0,0 +1,218 @@
|
|||
/*
|
||||
* File: PurestSaturation.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/26/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.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
PurestSaturation.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "PurestSaturation.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
COMPONENT_ENTRY(PurestSaturation)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::PurestSaturation
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
PurestSaturation::PurestSaturation(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
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestSaturation::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestSaturation::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;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestSaturation::GetPropertyInfo (AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
UInt32 & outDataSize,
|
||||
Boolean & outWritable)
|
||||
{
|
||||
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestSaturation::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// PurestSaturation::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestSaturation::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____PurestSaturationEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::PurestSaturationKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
void PurestSaturation::PurestSaturationKernel::Reset()
|
||||
{
|
||||
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestSaturation::PurestSaturationKernel::Process
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
void PurestSaturation::PurestSaturationKernel::Process( const Float32 *inSourceP,
|
||||
Float32 *inDestP,
|
||||
UInt32 inFramesToProcess,
|
||||
UInt32 inNumChannels,
|
||||
bool &ioSilence )
|
||||
{
|
||||
UInt32 nSampleFrames = inFramesToProcess;
|
||||
const Float32 *sourceP = inSourceP;
|
||||
Float32 *destP = inDestP;
|
||||
|
||||
long double inputGain = GetParameter( kParam_A )*10.0;
|
||||
long double outputGain = GetParameter( kParam_B );
|
||||
|
||||
while (nSampleFrames-- > 0) {
|
||||
long double inputSample = *sourceP;
|
||||
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
|
||||
|
||||
if (inputGain != 1.0) inputSample *= inputGain;
|
||||
|
||||
inputSample = fmin(fmax(inputSample,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSample * inputSample;
|
||||
long double temp = inputSample * X;
|
||||
inputSample -= (temp*0.125); temp *= X;
|
||||
inputSample += (temp*0.0078125); temp *= X;
|
||||
inputSample -= (temp*0.000244140625); temp *= X;
|
||||
inputSample += (temp*0.000003814697265625); temp *= X;
|
||||
inputSample -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
if (outputGain < 1.0) inputSample *= outputGain;
|
||||
|
||||
//begin 32 bit floating point dither
|
||||
int expon; frexpf((float)inputSample, &expon);
|
||||
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
|
||||
//end 32 bit floating point dither
|
||||
|
||||
*destP = inputSample;
|
||||
|
||||
sourceP += inNumChannels; destP += inNumChannels;
|
||||
}
|
||||
}
|
||||
|
||||
1
plugins/MacAU/PurestSaturation/PurestSaturation.exp
Executable file
1
plugins/MacAU/PurestSaturation/PurestSaturation.exp
Executable file
|
|
@ -0,0 +1 @@
|
|||
_PurestSaturationEntry
|
||||
137
plugins/MacAU/PurestSaturation/PurestSaturation.h
Executable file
137
plugins/MacAU/PurestSaturation/PurestSaturation.h
Executable file
|
|
@ -0,0 +1,137 @@
|
|||
/*
|
||||
* File: PurestSaturation.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/26/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 "PurestSaturationVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __PurestSaturation_h__
|
||||
#define __PurestSaturation_h__
|
||||
|
||||
|
||||
#pragma mark ____PurestSaturation Parameters
|
||||
|
||||
// parameters
|
||||
static const float kDefaultValue_ParamA = 0.1;
|
||||
static const float kDefaultValue_ParamB = 1.0;
|
||||
|
||||
static CFStringRef kParameterAName = CFSTR("Input");
|
||||
static CFStringRef kParameterBName = CFSTR("Output");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=2
|
||||
};
|
||||
|
||||
#pragma mark ____PurestSaturation
|
||||
class PurestSaturation : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
PurestSaturation(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~PurestSaturation () { delete mDebugDispatcher; }
|
||||
#endif
|
||||
|
||||
virtual AUKernelBase * NewKernel() { return new PurestSaturationKernel(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 kPurestSaturationVersion; }
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
class PurestSaturationKernel : public AUKernelBase // most of the real work happens here
|
||||
{
|
||||
public:
|
||||
PurestSaturationKernel(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
|
||||
61
plugins/MacAU/PurestSaturation/PurestSaturation.r
Executable file
61
plugins/MacAU/PurestSaturation/PurestSaturation.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: PurestSaturation.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/26/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 "PurestSaturationVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_PurestSaturation 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PurestSaturation~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_PurestSaturation
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE PurestSaturation_COMP_SUBTYPE
|
||||
#define COMP_MANUF PurestSaturation_COMP_MANF
|
||||
|
||||
#define VERSION kPurestSaturationVersion
|
||||
#define NAME "Airwindows: PurestSaturation"
|
||||
#define DESCRIPTION "PurestSaturation AU"
|
||||
#define ENTRY_POINT "PurestSaturationEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
1358
plugins/MacAU/PurestSaturation/PurestSaturation.xcodeproj/christopherjohnson.mode1v3
Executable file
1358
plugins/MacAU/PurestSaturation/PurestSaturation.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,130 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 8D01CCC60486CAD60068D4B7 /* PurestSaturation */;
|
||||
breakpoints = (
|
||||
);
|
||||
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 = 785876212;
|
||||
PBXWorkspaceStateSaveDate = 785876212;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B3D211E2ED784520020B133 /* PlistBookmark */ = 8B3D211E2ED784520020B133 /* PlistBookmark */;
|
||||
8B3D21502ED786750020B133 /* PlistBookmark */ = 8B3D21502ED786750020B133 /* PlistBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B3D211E2ED784520020B133 /* PlistBookmark */ = {
|
||||
isa = PlistBookmark;
|
||||
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
|
||||
fallbackIsa = PBXBookmark;
|
||||
isK = 0;
|
||||
kPath = (
|
||||
CFBundleName,
|
||||
);
|
||||
name = /Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/PurestSaturation/Info.plist;
|
||||
rLen = 0;
|
||||
rLoc = 9223372036854775808;
|
||||
};
|
||||
8B3D21502ED786750020B133 /* PlistBookmark */ = {
|
||||
isa = PlistBookmark;
|
||||
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
|
||||
fallbackIsa = PBXBookmark;
|
||||
isK = 0;
|
||||
kPath = (
|
||||
CFBundleName,
|
||||
);
|
||||
name = /Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/PurestSaturation/Info.plist;
|
||||
rLen = 0;
|
||||
rLoc = 9223372036854775807;
|
||||
};
|
||||
8BA05A660720730100365D66 /* PurestSaturation.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {952, 4122}}";
|
||||
sepNavSelRange = "{8883, 0}";
|
||||
sepNavVisRange = "{8479, 1346}";
|
||||
sepNavWindowFrame = "{{586, 70}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* PurestSaturationVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
|
||||
sepNavSelRange = "{2956, 0}";
|
||||
sepNavVisRange = "{1278, 1741}";
|
||||
sepNavWindowFrame = "{{670, 86}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BC6025B073B072D006C4272 /* PurestSaturation.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 2466}}";
|
||||
sepNavSelRange = "{4893, 0}";
|
||||
sepNavVisRange = "{4314, 1025}";
|
||||
sepNavWindowFrame = "{{694, 91}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* PurestSaturation */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
490
plugins/MacAU/PurestSaturation/PurestSaturation.xcodeproj/project.pbxproj
Executable file
490
plugins/MacAU/PurestSaturation/PurestSaturation.xcodeproj/project.pbxproj
Executable 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 /* PurestSaturation.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* PurestSaturation.r */; };
|
||||
8BA05A6B0720730100365D66 /* PurestSaturation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* PurestSaturation.cpp */; };
|
||||
8BA05A6E0720730100365D66 /* PurestSaturationVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* PurestSaturationVersion.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 /* PurestSaturation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* PurestSaturation.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 /* PurestSaturation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PurestSaturation.cpp; sourceTree = "<group>"; };
|
||||
8BA05A670720730100365D66 /* PurestSaturation.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = PurestSaturation.exp; sourceTree = "<group>"; };
|
||||
8BA05A680720730100365D66 /* PurestSaturation.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = PurestSaturation.r; sourceTree = "<group>"; };
|
||||
8BA05A690720730100365D66 /* PurestSaturationVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurestSaturationVersion.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 /* PurestSaturation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurestSaturation.h; sourceTree = "<group>"; };
|
||||
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D01CCD20486CAD60068D4B7 /* PurestSaturation.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PurestSaturation.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 /* PurestSaturation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77ADFE841716C02AAC07 /* Source */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||
);
|
||||
name = PurestSaturation;
|
||||
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 /* PurestSaturation.component */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8BC6025B073B072D006C4272 /* PurestSaturation.h */,
|
||||
8BA05A660720730100365D66 /* PurestSaturation.cpp */,
|
||||
8BA05A670720730100365D66 /* PurestSaturation.exp */,
|
||||
8BA05A680720730100365D66 /* PurestSaturation.r */,
|
||||
8BA05A690720730100365D66 /* PurestSaturationVersion.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 /* PurestSaturationVersion.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 /* PurestSaturation.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 /* PurestSaturation */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "PurestSaturation" */;
|
||||
buildPhases = (
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||
8D01CCCF0486CAD60068D4B7 /* Rez */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = PurestSaturation;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = PurestSaturation;
|
||||
productReference = 8D01CCD20486CAD60068D4B7 /* PurestSaturation.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 "PurestSaturation" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* PurestSaturation */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D01CCC60486CAD60068D4B7 /* PurestSaturation */,
|
||||
);
|
||||
};
|
||||
/* 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 /* PurestSaturation.r in Rez */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8BA05A6B0720730100365D66 /* PurestSaturation.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 = PurestSaturation.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 = PurestSaturation;
|
||||
WRAPPER_EXTENSION = component;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3E4BA245089833B7007656EC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
EXPORTED_SYMBOLS_FILE = PurestSaturation.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 = PurestSaturation;
|
||||
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 "PurestSaturation" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA244089833B7007656EC /* Debug */,
|
||||
3E4BA245089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "PurestSaturation" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA248089833B7007656EC /* Debug */,
|
||||
3E4BA249089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
||||
58
plugins/MacAU/PurestSaturation/PurestSaturationVersion.h
Executable file
58
plugins/MacAU/PurestSaturation/PurestSaturationVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* File: PurestSaturationVersion.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/26/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 __PurestSaturationVersion_h__
|
||||
#define __PurestSaturationVersion_h__
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#define kPurestSaturationVersion 0xFFFFFFFF
|
||||
#else
|
||||
#define kPurestSaturationVersion 0x00010000
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||
#define PurestSaturation_COMP_MANF 'Dthr'
|
||||
#define PurestSaturation_COMP_SUBTYPE 'pusa'
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#endif
|
||||
|
||||
16
plugins/MacAU/PurestSaturation/version.plist
Executable file
16
plugins/MacAU/PurestSaturation/version.plist
Executable 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>
|
||||
BIN
plugins/MacAU/VerbThic/English.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacAU/VerbThic/English.lproj/InfoPlist.strings
Executable file
Binary file not shown.
28
plugins/MacAU/VerbThic/Info.plist
Executable file
28
plugins/MacAU/VerbThic/Info.plist
Executable 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>
|
||||
5
plugins/MacAU/VerbThic/StarterAU_Prefix.pch
Executable file
5
plugins/MacAU/VerbThic/StarterAU_Prefix.pch
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
//
|
||||
// Prefix header for all source files of the '«PROJECTNAMEASIDENTIFIER»' target in the '«PROJECTNAMEASIDENTIFIER»' project.
|
||||
//
|
||||
|
||||
#include <CoreServices/CoreServices.h>
|
||||
622
plugins/MacAU/VerbThic/VerbThic.cpp
Executable file
622
plugins/MacAU/VerbThic/VerbThic.cpp
Executable file
|
|
@ -0,0 +1,622 @@
|
|||
/*
|
||||
* File: VerbThic.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/23/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.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
VerbThic.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "VerbThic.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
COMPONENT_ENTRY(VerbThic)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::VerbThic
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
VerbThic::VerbThic(AudioUnit component)
|
||||
: AUEffectBase(component)
|
||||
{
|
||||
CreateElements();
|
||||
Globals()->UseIndexedParameters(kNumberOfParameters);
|
||||
SetParameter(kParam_A, kDefaultValue_ParamA );
|
||||
SetParameter(kParam_B, kDefaultValue_ParamB );
|
||||
SetParameter(kParam_C, kDefaultValue_ParamC );
|
||||
SetParameter(kParam_D, kDefaultValue_ParamD );
|
||||
SetParameter(kParam_E, kDefaultValue_ParamE );
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
mDebugDispatcher = new AUDebugDispatcher (this);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::GetParameterInfo(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
AudioUnitParameterInfo &outParameterInfo )
|
||||
{
|
||||
ComponentResult result = noErr;
|
||||
|
||||
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
|
||||
| kAudioUnitParameterFlag_IsReadable;
|
||||
|
||||
if (inScope == kAudioUnitScope_Global) {
|
||||
switch(inParameterID)
|
||||
{
|
||||
case kParam_A:
|
||||
AUBase::FillInParameterName (outParameterInfo, kParameterAName, false);
|
||||
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||
outParameterInfo.minValue = 0.0;
|
||||
outParameterInfo.maxValue = 1.0;
|
||||
outParameterInfo.defaultValue = kDefaultValue_ParamA;
|
||||
break;
|
||||
case kParam_B:
|
||||
AUBase::FillInParameterName (outParameterInfo, kParameterBName, false);
|
||||
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||
outParameterInfo.minValue = 0.0;
|
||||
outParameterInfo.maxValue = 1.0;
|
||||
outParameterInfo.defaultValue = kDefaultValue_ParamB;
|
||||
break;
|
||||
case kParam_C:
|
||||
AUBase::FillInParameterName (outParameterInfo, kParameterCName, false);
|
||||
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||
outParameterInfo.minValue = 0.0;
|
||||
outParameterInfo.maxValue = 1.0;
|
||||
outParameterInfo.defaultValue = kDefaultValue_ParamC;
|
||||
break;
|
||||
case kParam_D:
|
||||
AUBase::FillInParameterName (outParameterInfo, kParameterDName, false);
|
||||
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||
outParameterInfo.minValue = 0.0;
|
||||
outParameterInfo.maxValue = 1.0;
|
||||
outParameterInfo.defaultValue = kDefaultValue_ParamD;
|
||||
break;
|
||||
case kParam_E:
|
||||
AUBase::FillInParameterName (outParameterInfo, kParameterEName, false);
|
||||
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||
outParameterInfo.minValue = 0.0;
|
||||
outParameterInfo.maxValue = 1.0;
|
||||
outParameterInfo.defaultValue = kDefaultValue_ParamE;
|
||||
break;
|
||||
default:
|
||||
result = kAudioUnitErr_InvalidParameter;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
result = kAudioUnitErr_InvalidParameter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::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 VerbThic::SupportedNumChannels(const AUChannelInfo ** outInfo)
|
||||
{
|
||||
if (outInfo != NULL)
|
||||
{
|
||||
static AUChannelInfo info;
|
||||
info.inChannels = 2;
|
||||
info.outChannels = 2;
|
||||
*outInfo = &info;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// VerbThic::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____VerbThicEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::VerbThicKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult VerbThic::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
|
||||
{
|
||||
for(int x = 0; x < d4A+2; x++) {a4AL[x] = 0.0; a4AR[x] = 0.0;}
|
||||
for(int x = 0; x < d4B+2; x++) {a4BL[x] = 0.0; a4BR[x] = 0.0;}
|
||||
for(int x = 0; x < d4C+2; x++) {a4CL[x] = 0.0; a4CR[x] = 0.0;}
|
||||
for(int x = 0; x < d4D+2; x++) {a4DL[x] = 0.0; a4DR[x] = 0.0;}
|
||||
for(int x = 0; x < d4E+2; x++) {a4EL[x] = 0.0; a4ER[x] = 0.0;}
|
||||
for(int x = 0; x < d4F+2; x++) {a4FL[x] = 0.0; a4FR[x] = 0.0;}
|
||||
for(int x = 0; x < d4G+2; x++) {a4GL[x] = 0.0; a4GR[x] = 0.0;}
|
||||
for(int x = 0; x < d4H+2; x++) {a4HL[x] = 0.0; a4HR[x] = 0.0;}
|
||||
for(int x = 0; x < d4I+2; x++) {a4IL[x] = 0.0; a4IR[x] = 0.0;}
|
||||
for(int x = 0; x < d4J+2; x++) {a4JL[x] = 0.0; a4JR[x] = 0.0;}
|
||||
for(int x = 0; x < d4K+2; x++) {a4KL[x] = 0.0; a4KR[x] = 0.0;}
|
||||
for(int x = 0; x < d4L+2; x++) {a4LL[x] = 0.0; a4LR[x] = 0.0;}
|
||||
for(int x = 0; x < d4M+2; x++) {a4ML[x] = 0.0; a4MR[x] = 0.0;}
|
||||
for(int x = 0; x < d4N+2; x++) {a4NL[x] = 0.0; a4NR[x] = 0.0;}
|
||||
for(int x = 0; x < d4O+2; x++) {a4OL[x] = 0.0; a4OR[x] = 0.0;}
|
||||
for(int x = 0; x < d4P+2; x++) {a4PL[x] = 0.0; a4PR[x] = 0.0;}
|
||||
c4AL = c4BL = c4CL = c4DL = c4EL = c4FL = c4GL = c4HL = 1;
|
||||
c4IL = c4JL = c4KL = c4LL = c4ML = c4NL = c4OL = c4PL = 1;
|
||||
c4AR = c4BR = c4CR = c4DR = c4ER = c4FR = c4GR = c4HR = 1;
|
||||
c4IR = c4JR = c4KR = c4LR = c4MR = c4NR = c4OR = c4PR = 1;
|
||||
f4AL = f4BL = f4CL = f4DL = 0.0;
|
||||
f4DR = f4HR = f4LR = f4PR = 0.0;
|
||||
|
||||
for(int x = 0; x < d4A+2; x++) {b4AL[x] = 0.0; b4AR[x] = 0.0;}
|
||||
for(int x = 0; x < d4B+2; x++) {b4BL[x] = 0.0; b4BR[x] = 0.0;}
|
||||
for(int x = 0; x < d4C+2; x++) {b4CL[x] = 0.0; b4CR[x] = 0.0;}
|
||||
for(int x = 0; x < d4D+2; x++) {b4DL[x] = 0.0; b4DR[x] = 0.0;}
|
||||
for(int x = 0; x < d4E+2; x++) {b4EL[x] = 0.0; b4ER[x] = 0.0;}
|
||||
for(int x = 0; x < d4F+2; x++) {b4FL[x] = 0.0; b4FR[x] = 0.0;}
|
||||
for(int x = 0; x < d4G+2; x++) {b4GL[x] = 0.0; b4GR[x] = 0.0;}
|
||||
for(int x = 0; x < d4H+2; x++) {b4HL[x] = 0.0; b4HR[x] = 0.0;}
|
||||
for(int x = 0; x < d4I+2; x++) {b4IL[x] = 0.0; b4IR[x] = 0.0;}
|
||||
for(int x = 0; x < d4J+2; x++) {b4JL[x] = 0.0; b4JR[x] = 0.0;}
|
||||
for(int x = 0; x < d4K+2; x++) {b4KL[x] = 0.0; b4KR[x] = 0.0;}
|
||||
for(int x = 0; x < d4L+2; x++) {b4LL[x] = 0.0; b4LR[x] = 0.0;}
|
||||
for(int x = 0; x < d4M+2; x++) {b4ML[x] = 0.0; b4MR[x] = 0.0;}
|
||||
for(int x = 0; x < d4N+2; x++) {b4NL[x] = 0.0; b4NR[x] = 0.0;}
|
||||
for(int x = 0; x < d4O+2; x++) {b4OL[x] = 0.0; b4OR[x] = 0.0;}
|
||||
for(int x = 0; x < d4P+2; x++) {b4PL[x] = 0.0; b4PR[x] = 0.0;}
|
||||
g4AL = g4BL = g4CL = g4DL = 0.0;
|
||||
g4DR = g4HR = g4LR = g4PR = 0.0;
|
||||
|
||||
for (int x = 0; x < bez_total; x++) {
|
||||
bez[x] = 0.0;
|
||||
bezF[x] = 0.0;
|
||||
}
|
||||
bez[bez_cycle] = 1.0;
|
||||
bezF[bez_cycle] = 1.0;
|
||||
|
||||
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
|
||||
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
|
||||
return noErr;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// VerbThic::ProcessBufferLists
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OSStatus VerbThic::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 reg4n = 0.03125+((1.0-pow(1.0-GetParameter( kParam_A ),2.0))*0.03125);
|
||||
double attenuate = 1.0 - (1.0-pow(1.0-GetParameter( kParam_A ),2.0));
|
||||
double derez = pow(GetParameter( kParam_B ),2.0);
|
||||
derez = fmin(fmax(derez/overallscale,0.0001),1.0);
|
||||
int bezFraction = (int)(1.0/derez);
|
||||
double bezTrim = (double)bezFraction/(bezFraction+1.0);
|
||||
derez = 1.0 / bezFraction;
|
||||
bezTrim = 1.0-(derez*bezTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double derezFreq = pow(GetParameter( kParam_C ),2.0);
|
||||
derezFreq = fmin(fmax(derezFreq/overallscale,0.0001),1.0);
|
||||
int bezFreqFraction = (int)(1.0/derezFreq);
|
||||
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
|
||||
derezFreq = 1.0 / bezFreqFraction;
|
||||
bezFreqTrim = 1.0-(derezFreq*bezFreqTrim);
|
||||
//the revision more accurately connects the bezier curves
|
||||
double wider = GetParameter( kParam_D )*2.0;
|
||||
double wet = GetParameter( kParam_E );
|
||||
|
||||
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 drySampleL = inputSampleL;
|
||||
double drySampleR = inputSampleR;
|
||||
|
||||
bez[bez_cycle] += derez;
|
||||
bez[bez_SampL] += (inputSampleL*attenuate*derez);
|
||||
bez[bez_SampR] += (inputSampleR*attenuate*derez);
|
||||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
//couldn't re-do the arrays perfectly, so instead
|
||||
//we keep exactly the same cross-matrix,
|
||||
//but we flip the sides we're using for initial reverb.
|
||||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
|
||||
inputSampleL = fmin(fmax(inputSampleL,-2.032610446872596),2.032610446872596);
|
||||
long double X = inputSampleL * inputSampleL;
|
||||
long double temp = inputSampleL * X;
|
||||
inputSampleL -= (temp*0.125); temp *= X;
|
||||
inputSampleL += (temp*0.0078125); temp *= X;
|
||||
inputSampleL -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleL += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleL -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
inputSampleR = fmin(fmax(inputSampleR,-2.032610446872596),2.032610446872596);
|
||||
X = inputSampleR * inputSampleR;
|
||||
temp = inputSampleR * X;
|
||||
inputSampleR -= (temp*0.125); temp *= X;
|
||||
inputSampleR += (temp*0.0078125); temp *= X;
|
||||
inputSampleR -= (temp*0.000244140625); temp *= X;
|
||||
inputSampleR += (temp*0.000003814697265625); temp *= X;
|
||||
inputSampleR -= (temp*0.0000000298023223876953125); temp *= X;
|
||||
//purestsaturation: sine, except all the corrections
|
||||
//retain mantissa of a long double increasing power function
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
bez[bez_BL] = bez[bez_AL];
|
||||
bez[bez_AL] = inputSampleL;
|
||||
bez[bez_SampL] = 0.0;
|
||||
|
||||
bez[bez_CR] = bez[bez_BR];
|
||||
bez[bez_BR] = bez[bez_AR];
|
||||
bez[bez_AR] = inputSampleR;
|
||||
bez[bez_SampR] = 0.0;
|
||||
}
|
||||
double X = bez[bez_cycle]*bezTrim;
|
||||
double CBL = (bez[bez_CL]*(1.0-X))+(bez[bez_BL]*X);
|
||||
double CBR = (bez[bez_CR]*(1.0-X))+(bez[bez_BR]*X);
|
||||
double BAL = (bez[bez_BL]*(1.0-X))+(bez[bez_AL]*X);
|
||||
double BAR = (bez[bez_BR]*(1.0-X))+(bez[bez_AR]*X);
|
||||
inputSampleL = (bez[bez_BL]+(CBL*(1.0-X))+(BAL*X))*-0.25;
|
||||
inputSampleR = (bez[bez_BR]+(CBR*(1.0-X))+(BAR*X))*-0.25;
|
||||
|
||||
bezF[bez_cycle] += derezFreq;
|
||||
bezF[bez_SampL] += (inputSampleL * derezFreq);
|
||||
bezF[bez_SampR] += (inputSampleR * derezFreq);
|
||||
if (bezF[bez_cycle] > 1.0) { //hit the end point and we do a filter sample
|
||||
bezF[bez_cycle] = 0.0;
|
||||
bezF[bez_CL] = bezF[bez_BL];
|
||||
bezF[bez_BL] = bezF[bez_AL];
|
||||
bezF[bez_AL] = bezF[bez_SampL];
|
||||
bezF[bez_SampL] = 0.0;
|
||||
bezF[bez_CR] = bezF[bez_BR];
|
||||
bezF[bez_BR] = bezF[bez_AR];
|
||||
bezF[bez_AR] = bezF[bez_SampR];
|
||||
bezF[bez_SampR] = 0.0;
|
||||
}
|
||||
X = bezF[bez_cycle]*bezFreqTrim;
|
||||
double CBLfreq = (bezF[bez_CL]*(1.0-X))+(bezF[bez_BL]*X);
|
||||
double BALfreq = (bezF[bez_BL]*(1.0-X))+(bezF[bez_AL]*X);
|
||||
inputSampleL = (bezF[bez_BL]+(CBLfreq*(1.0-X))+(BALfreq*X))*0.5;
|
||||
double CBRfreq = (bezF[bez_CR]*(1.0-X))+(bezF[bez_BR]*X);
|
||||
double BARfreq = (bezF[bez_BR]*(1.0-X))+(bezF[bez_AR]*X);
|
||||
inputSampleR = (bezF[bez_BR]+(CBRfreq*(1.0-X))+(BARfreq*X))*0.5;
|
||||
//filtering the reverb separately, after making it
|
||||
|
||||
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
|
||||
|
||||
*outputL = inputSampleL;
|
||||
*outputR = inputSampleR;
|
||||
//direct stereo out
|
||||
|
||||
inputL += 1;
|
||||
inputR += 1;
|
||||
outputL += 1;
|
||||
outputR += 1;
|
||||
}
|
||||
return noErr;
|
||||
}
|
||||
1
plugins/MacAU/VerbThic/VerbThic.exp
Executable file
1
plugins/MacAU/VerbThic/VerbThic.exp
Executable file
|
|
@ -0,0 +1 @@
|
|||
_VerbThicEntry
|
||||
225
plugins/MacAU/VerbThic/VerbThic.h
Executable file
225
plugins/MacAU/VerbThic/VerbThic.h
Executable file
|
|
@ -0,0 +1,225 @@
|
|||
/*
|
||||
* File: VerbThic.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/23/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 "VerbThicVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __VerbThic_h__
|
||||
#define __VerbThic_h__
|
||||
|
||||
|
||||
#pragma mark ____VerbThic Parameters
|
||||
|
||||
// parameters
|
||||
static const float kDefaultValue_ParamA = 0.5;
|
||||
static const float kDefaultValue_ParamB = 1.0;
|
||||
static const float kDefaultValue_ParamC = 1.0;
|
||||
static const float kDefaultValue_ParamD = 0.0;
|
||||
static const float kDefaultValue_ParamE = 1.0;
|
||||
|
||||
static CFStringRef kParameterAName = CFSTR("Replace");
|
||||
static CFStringRef kParameterBName = CFSTR("Derez");
|
||||
static CFStringRef kParameterCName = CFSTR("Filter");
|
||||
static CFStringRef kParameterDName = CFSTR("Wider");
|
||||
static CFStringRef kParameterEName = CFSTR("Dry/Wet");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
kParam_C =2,
|
||||
kParam_D =3,
|
||||
kParam_E =4,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=5
|
||||
};
|
||||
|
||||
const int d4A = 1439; const int d4B = 3; const int d4C = 259; const int d4D = 578;
|
||||
const int d4E = 1562; const int d4F = 1152; const int d4G = 189; const int d4H = 3;
|
||||
const int d4I = 9; const int d4J = 101; const int d4K = 34; const int d4L = 638;
|
||||
const int d4M = 719; const int d4N = 1154; const int d4O = 38; const int d4P = 530; //1 to 108 ms, 358 seat club
|
||||
#define FOURBYFOUR true // 358seat14393259x4 on 2025-11-09 VerbThic
|
||||
|
||||
#pragma mark ____VerbThic
|
||||
class VerbThic : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
VerbThic(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~VerbThic () { 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 kVerbThicVersion; }
|
||||
|
||||
private:
|
||||
double a4AL[d4A+5];
|
||||
double a4BL[d4B+5];
|
||||
double a4CL[d4C+5];
|
||||
double a4DL[d4D+5];
|
||||
double a4EL[d4E+5];
|
||||
double a4FL[d4F+5];
|
||||
double a4GL[d4G+5];
|
||||
double a4HL[d4H+5];
|
||||
double a4IL[d4I+5];
|
||||
double a4JL[d4J+5];
|
||||
double a4KL[d4K+5];
|
||||
double a4LL[d4L+5];
|
||||
double a4ML[d4M+5];
|
||||
double a4NL[d4N+5];
|
||||
double a4OL[d4O+5];
|
||||
double a4PL[d4P+5];
|
||||
double a4AR[d4A+5];
|
||||
double a4BR[d4B+5];
|
||||
double a4CR[d4C+5];
|
||||
double a4DR[d4D+5];
|
||||
double a4ER[d4E+5];
|
||||
double a4FR[d4F+5];
|
||||
double a4GR[d4G+5];
|
||||
double a4HR[d4H+5];
|
||||
double a4IR[d4I+5];
|
||||
double a4JR[d4J+5];
|
||||
double a4KR[d4K+5];
|
||||
double a4LR[d4L+5];
|
||||
double a4MR[d4M+5];
|
||||
double a4NR[d4N+5];
|
||||
double a4OR[d4O+5];
|
||||
double a4PR[d4P+5];
|
||||
int c4AL,c4BL,c4CL,c4DL,c4EL,c4FL,c4GL,c4HL;
|
||||
int c4IL,c4JL,c4KL,c4LL,c4ML,c4NL,c4OL,c4PL;
|
||||
int c4AR,c4BR,c4CR,c4DR,c4ER,c4FR,c4GR,c4HR;
|
||||
int c4IR,c4JR,c4KR,c4LR,c4MR,c4NR,c4OR,c4PR;
|
||||
double f4AL,f4BL,f4CL,f4DL,f4DR,f4HR,f4LR,f4PR;
|
||||
//base stereo reverb
|
||||
double b4AL[d4A+5];
|
||||
double b4BL[d4B+5];
|
||||
double b4CL[d4C+5];
|
||||
double b4DL[d4D+5];
|
||||
double b4EL[d4E+5];
|
||||
double b4FL[d4F+5];
|
||||
double b4GL[d4G+5];
|
||||
double b4HL[d4H+5];
|
||||
double b4IL[d4I+5];
|
||||
double b4JL[d4J+5];
|
||||
double b4KL[d4K+5];
|
||||
double b4LL[d4L+5];
|
||||
double b4ML[d4M+5];
|
||||
double b4NL[d4N+5];
|
||||
double b4OL[d4O+5];
|
||||
double b4PL[d4P+5];
|
||||
double b4AR[d4A+5];
|
||||
double b4BR[d4B+5];
|
||||
double b4CR[d4C+5];
|
||||
double b4DR[d4D+5];
|
||||
double b4ER[d4E+5];
|
||||
double b4FR[d4F+5];
|
||||
double b4GR[d4G+5];
|
||||
double b4HR[d4H+5];
|
||||
double b4IR[d4I+5];
|
||||
double b4JR[d4J+5];
|
||||
double b4KR[d4K+5];
|
||||
double b4LR[d4L+5];
|
||||
double b4MR[d4M+5];
|
||||
double b4NR[d4N+5];
|
||||
double b4OR[d4O+5];
|
||||
double b4PR[d4P+5];
|
||||
double g4AL,g4BL,g4CL,g4DL,g4DR,g4HR,g4LR,g4PR;
|
||||
//changed letter is the dual mono, with rearranged grid
|
||||
|
||||
enum {
|
||||
bez_AL,
|
||||
bez_AR,
|
||||
bez_BL,
|
||||
bez_BR,
|
||||
bez_CL,
|
||||
bez_CR,
|
||||
bez_SampL,
|
||||
bez_SampR,
|
||||
bez_cycle,
|
||||
bez_total
|
||||
}; //the new undersampling. bez signifies the bezier curve reconstruction
|
||||
double bez[bez_total];
|
||||
|
||||
double bezF[bez_total];
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#endif
|
||||
61
plugins/MacAU/VerbThic/VerbThic.r
Executable file
61
plugins/MacAU/VerbThic/VerbThic.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: VerbThic.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/23/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 "VerbThicVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_VerbThic 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VerbThic~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_VerbThic
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE VerbThic_COMP_SUBTYPE
|
||||
#define COMP_MANUF VerbThic_COMP_MANF
|
||||
|
||||
#define VERSION kVerbThicVersion
|
||||
#define NAME "Airwindows: VerbThic"
|
||||
#define DESCRIPTION "VerbThic AU"
|
||||
#define ENTRY_POINT "VerbThicEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
1359
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.mode1v3
Executable file
1359
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
131
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.pbxuser
Executable file
131
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,131 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 8D01CCC60486CAD60068D4B7 /* VerbThic */;
|
||||
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 = 785871041;
|
||||
PBXWorkspaceStateSaveDate = 785871041;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B3D201C2ED766730020B133 /* PBXTextBookmark */ = 8B3D201C2ED766730020B133 /* PBXTextBookmark */;
|
||||
8B3D207B2ED773320020B133 /* PBXTextBookmark */ = 8B3D207B2ED773320020B133 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B3D201C2ED766730020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* VerbThic.h */;
|
||||
name = "VerbThic.h: 82";
|
||||
rLen = 0;
|
||||
rLoc = 3716;
|
||||
rType = 0;
|
||||
vrLen = 126;
|
||||
vrLoc = 6812;
|
||||
};
|
||||
8B3D207B2ED773320020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* VerbThic.h */;
|
||||
name = "VerbThic.h: 82";
|
||||
rLen = 0;
|
||||
rLoc = 3716;
|
||||
rType = 0;
|
||||
vrLen = 105;
|
||||
vrLoc = 6812;
|
||||
};
|
||||
8BA05A660720730100365D66 /* VerbThic.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {952, 11520}}";
|
||||
sepNavSelRange = "{14110, 11867}";
|
||||
sepNavVisRange = "{13175, 1590}";
|
||||
sepNavWindowFrame = "{{753, 114}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* VerbThicVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
|
||||
sepNavSelRange = "{2900, 0}";
|
||||
sepNavVisRange = "{1270, 1693}";
|
||||
sepNavWindowFrame = "{{38, 88}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{0, 1336}";
|
||||
};
|
||||
};
|
||||
8BC6025B073B072D006C4272 /* VerbThic.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1038, 4212}}";
|
||||
sepNavSelRange = "{3716, 0}";
|
||||
sepNavVisRange = "{6812, 105}";
|
||||
sepNavWindowFrame = "{{733, 97}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* VerbThic */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
||||
1484
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.perspectivev3
Executable file
1484
plugins/MacAU/VerbThic/VerbThic.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
490
plugins/MacAU/VerbThic/VerbThic.xcodeproj/project.pbxproj
Executable file
490
plugins/MacAU/VerbThic/VerbThic.xcodeproj/project.pbxproj
Executable 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 /* VerbThic.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* VerbThic.r */; };
|
||||
8BA05A6B0720730100365D66 /* VerbThic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* VerbThic.cpp */; };
|
||||
8BA05A6E0720730100365D66 /* VerbThicVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* VerbThicVersion.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 /* VerbThic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* VerbThic.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 /* VerbThic.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = VerbThic.cpp; sourceTree = "<group>"; };
|
||||
8BA05A670720730100365D66 /* VerbThic.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = VerbThic.exp; sourceTree = "<group>"; };
|
||||
8BA05A680720730100365D66 /* VerbThic.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = VerbThic.r; sourceTree = "<group>"; };
|
||||
8BA05A690720730100365D66 /* VerbThicVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = VerbThicVersion.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 /* VerbThic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = VerbThic.h; sourceTree = "<group>"; };
|
||||
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D01CCD20486CAD60068D4B7 /* VerbThic.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VerbThic.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 /* VerbThic */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77ADFE841716C02AAC07 /* Source */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||
);
|
||||
name = VerbThic;
|
||||
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 /* VerbThic.component */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8BC6025B073B072D006C4272 /* VerbThic.h */,
|
||||
8BA05A660720730100365D66 /* VerbThic.cpp */,
|
||||
8BA05A670720730100365D66 /* VerbThic.exp */,
|
||||
8BA05A680720730100365D66 /* VerbThic.r */,
|
||||
8BA05A690720730100365D66 /* VerbThicVersion.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 /* VerbThicVersion.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 /* VerbThic.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 /* VerbThic */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "VerbThic" */;
|
||||
buildPhases = (
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||
8D01CCCF0486CAD60068D4B7 /* Rez */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = VerbThic;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = VerbThic;
|
||||
productReference = 8D01CCD20486CAD60068D4B7 /* VerbThic.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 "VerbThic" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* VerbThic */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D01CCC60486CAD60068D4B7 /* VerbThic */,
|
||||
);
|
||||
};
|
||||
/* 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 /* VerbThic.r in Rez */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8BA05A6B0720730100365D66 /* VerbThic.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 = VerbThic.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 = VerbThic;
|
||||
WRAPPER_EXTENSION = component;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3E4BA245089833B7007656EC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
EXPORTED_SYMBOLS_FILE = VerbThic.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 = VerbThic;
|
||||
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 "VerbThic" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA244089833B7007656EC /* Debug */,
|
||||
3E4BA245089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "VerbThic" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA248089833B7007656EC /* Debug */,
|
||||
3E4BA249089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
||||
58
plugins/MacAU/VerbThic/VerbThicVersion.h
Executable file
58
plugins/MacAU/VerbThic/VerbThicVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* File: VerbThicVersion.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/23/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 __VerbThicVersion_h__
|
||||
#define __VerbThicVersion_h__
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#define kVerbThicVersion 0xFFFFFFFF
|
||||
#else
|
||||
#define kVerbThicVersion 0x00010000
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||
#define VerbThic_COMP_MANF 'Dthr'
|
||||
#define VerbThic_COMP_SUBTYPE 'vthc'
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#endif
|
||||
|
||||
16
plugins/MacAU/VerbThic/version.plist
Executable file
16
plugins/MacAU/VerbThic/version.plist
Executable 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>
|
||||
|
|
@ -244,10 +244,6 @@ ComponentResult VerbTiny::Reset(AudioUnitScope inScope, AudioUnitElement inElem
|
|||
for(int x = 0; x < d4N+2; x++) {b4NL[x] = 0.0; b4NR[x] = 0.0;}
|
||||
for(int x = 0; x < d4O+2; x++) {b4OL[x] = 0.0; b4OR[x] = 0.0;}
|
||||
for(int x = 0; x < d4P+2; x++) {b4PL[x] = 0.0; b4PR[x] = 0.0;}
|
||||
e4AL = e4BL = e4CL = e4DL = e4EL = e4FL = e4GL = e4HL = 1;
|
||||
e4IL = e4JL = e4KL = e4LL = e4ML = e4NL = e4OL = e4PL = 1;
|
||||
e4AR = e4BR = e4CR = e4DR = e4ER = e4FR = e4GR = e4HR = 1;
|
||||
e4IR = e4JR = e4KR = e4LR = e4MR = e4NR = e4OR = e4PR = 1;
|
||||
g4AL = g4BL = g4CL = g4DL = 0.0;
|
||||
g4DR = g4HR = g4LR = g4PR = 0.0;
|
||||
|
||||
|
|
@ -313,298 +309,215 @@ OSStatus VerbTiny::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
|
|||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
bez[bez_cycle] = 0.0;
|
||||
double mainSampleL = bez[bez_SampL];
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
a4AL[c4AL] = mainSampleL + (f4AL * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4BL * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4CL * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4DL * reg4n);
|
||||
//left verbs
|
||||
a4AL[c4AL] = mainSampleL + (f4DR * reg4n);
|
||||
a4BL[c4BL] = mainSampleL + (f4HR * reg4n);
|
||||
a4CL[c4CL] = mainSampleL + (f4LR * reg4n);
|
||||
a4DL[c4DL] = mainSampleL + (f4PR * reg4n);
|
||||
b4AL[c4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[c4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[c4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[c4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
c4AL++; if (c4AL < 0 || c4AL > d4A) c4AL = 0;
|
||||
c4BL++; if (c4BL < 0 || c4BL > d4B) c4BL = 0;
|
||||
c4CL++; if (c4CL < 0 || c4CL > d4C) c4CL = 0;
|
||||
c4DL++; if (c4DL < 0 || c4DL > d4D) c4DL = 0;
|
||||
|
||||
double o4AL = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double o4BL = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double o4CL = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double o4DL = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
|
||||
a4DR[c4DR] = mainSampleR + (f4DR * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4HR * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4LR * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
double o4DR = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
double o4HR = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
double o4LR = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
double o4PR = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
a4EL[c4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
a4FL[c4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
a4GL[c4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
a4HL[c4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
double hA = a4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
double hB = a4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
double hC = a4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
double hD = a4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
a4EL[c4EL] = hA - (hB + hC + hD);
|
||||
a4FL[c4FL] = hB - (hA + hC + hD);
|
||||
a4GL[c4GL] = hC - (hA + hB + hD);
|
||||
a4HL[c4HL] = hD - (hA + hB + hC);
|
||||
hA = b4AL[c4AL-((c4AL > d4A)?d4A+1:0)];
|
||||
hB = b4BL[c4BL-((c4BL > d4B)?d4B+1:0)];
|
||||
hC = b4CL[c4CL-((c4CL > d4C)?d4C+1:0)];
|
||||
hD = b4DL[c4DL-((c4DL > d4D)?d4D+1:0)];
|
||||
b4EL[c4EL] = hA - (hB + hC + hD);
|
||||
b4FL[c4FL] = hB - (hA + hC + hD);
|
||||
b4GL[c4GL] = hC - (hA + hB + hD);
|
||||
b4HL[c4HL] = hD - (hA + hB + hC);
|
||||
|
||||
c4EL++; if (c4EL < 0 || c4EL > d4E) c4EL = 0;
|
||||
c4FL++; if (c4FL < 0 || c4FL > d4F) c4FL = 0;
|
||||
c4GL++; if (c4GL < 0 || c4GL > d4G) c4GL = 0;
|
||||
c4HL++; if (c4HL < 0 || c4HL > d4H) c4HL = 0;
|
||||
|
||||
double o4EL = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
double o4FL = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
double o4GL = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
double o4HL = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
|
||||
a4CR[c4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
a4GR[c4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
a4KR[c4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
a4OR[c4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
double o4CR = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
double o4GR = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
double o4KR = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
double o4OR = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
a4IL[c4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
a4JL[c4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
a4KL[c4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
a4LL[c4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
hA = a4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = a4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = a4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = a4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
a4IL[c4IL] = hA - (hB + hC + hD);
|
||||
a4JL[c4JL] = hB - (hA + hC + hD);
|
||||
a4KL[c4KL] = hC - (hA + hB + hD);
|
||||
a4LL[c4LL] = hD - (hA + hB + hC);
|
||||
hA = b4EL[c4EL-((c4EL > d4E)?d4E+1:0)];
|
||||
hB = b4FL[c4FL-((c4FL > d4F)?d4F+1:0)];
|
||||
hC = b4GL[c4GL-((c4GL > d4G)?d4G+1:0)];
|
||||
hD = b4HL[c4HL-((c4HL > d4H)?d4H+1:0)];
|
||||
b4IL[c4IL] = hA - (hB + hC + hD);
|
||||
b4JL[c4JL] = hB - (hA + hC + hD);
|
||||
b4KL[c4KL] = hC - (hA + hB + hD);
|
||||
b4LL[c4LL] = hD - (hA + hB + hC);
|
||||
|
||||
c4IL++; if (c4IL < 0 || c4IL > d4I) c4IL = 0;
|
||||
c4JL++; if (c4JL < 0 || c4JL > d4J) c4JL = 0;
|
||||
c4KL++; if (c4KL < 0 || c4KL > d4K) c4KL = 0;
|
||||
c4LL++; if (c4LL < 0 || c4LL > d4L) c4LL = 0;
|
||||
|
||||
double o4IL = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
double o4JL = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
double o4KL = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
double o4LL = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
|
||||
a4BR[c4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
a4FR[c4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
a4JR[c4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
a4NR[c4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
double o4BR = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
double o4FR = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
double o4JR = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
double o4NR = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
a4ML[c4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
a4NL[c4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
a4OL[c4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
a4PL[c4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
hA = a4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = a4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = a4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = a4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
a4ML[c4ML] = hA - (hB + hC + hD);
|
||||
a4NL[c4NL] = hB - (hA + hC + hD);
|
||||
a4OL[c4OL] = hC - (hA + hB + hD);
|
||||
a4PL[c4PL] = hD - (hA + hB + hC);
|
||||
hA = b4IL[c4IL-((c4IL > d4I)?d4I+1:0)];
|
||||
hB = b4JL[c4JL-((c4JL > d4J)?d4J+1:0)];
|
||||
hC = b4KL[c4KL-((c4KL > d4K)?d4K+1:0)];
|
||||
hD = b4LL[c4LL-((c4LL > d4L)?d4L+1:0)];
|
||||
b4ML[c4ML] = hA - (hB + hC + hD);
|
||||
b4NL[c4NL] = hB - (hA + hC + hD);
|
||||
b4OL[c4OL] = hC - (hA + hB + hD);
|
||||
b4PL[c4PL] = hD - (hA + hB + hC);
|
||||
|
||||
c4ML++; if (c4ML < 0 || c4ML > d4M) c4ML = 0;
|
||||
c4NL++; if (c4NL < 0 || c4NL > d4N) c4NL = 0;
|
||||
c4OL++; if (c4OL < 0 || c4OL > d4O) c4OL = 0;
|
||||
c4PL++; if (c4PL < 0 || c4PL > d4P) c4PL = 0;
|
||||
|
||||
double o4ML = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
double o4NL = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
double o4OL = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
double o4PL = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
hA = a4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = a4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = a4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = a4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
f4AL = hA - (hB + hC + hD);
|
||||
f4BL = hB - (hA + hC + hD);
|
||||
f4CL = hC - (hA + hB + hD);
|
||||
f4DL = hD - (hA + hB + hC);//not actually crosschannel yet
|
||||
mainSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
a4AR[c4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
a4ER[c4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
a4IR[c4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
a4MR[c4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
hA = b4ML[c4ML-((c4ML > d4M)?d4M+1:0)];
|
||||
hB = b4NL[c4NL-((c4NL > d4N)?d4N+1:0)];
|
||||
hC = b4OL[c4OL-((c4OL > d4O)?d4O+1:0)];
|
||||
hD = b4PL[c4PL-((c4PL > d4P)?d4P+1:0)];
|
||||
g4AL = hA - (hB + hC + hD);
|
||||
g4BL = hB - (hA + hC + hD);
|
||||
g4CL = hC - (hA + hB + hD);
|
||||
g4DL = hD - (hA + hB + hC);
|
||||
dualmonoSampleL = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
double mainSampleR = bez[bez_SampR]; //begin primary reverb
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
|
||||
//right verbs
|
||||
a4DR[c4DR] = mainSampleR + (f4AL * reg4n);
|
||||
a4HR[c4HR] = mainSampleR + (f4BL * reg4n);
|
||||
a4LR[c4LR] = mainSampleR + (f4CL * reg4n);
|
||||
a4PR[c4PR] = mainSampleR + (f4DL * reg4n);
|
||||
b4DR[c4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[c4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[c4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[c4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
c4DR++; if (c4DR < 0 || c4DR > d4D) c4DR = 0;
|
||||
c4HR++; if (c4HR < 0 || c4HR > d4H) c4HR = 0;
|
||||
c4LR++; if (c4LR < 0 || c4LR > d4L) c4LR = 0;
|
||||
c4PR++; if (c4PR < 0 || c4PR > d4P) c4PR = 0;
|
||||
|
||||
hA = a4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = a4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = a4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = a4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
a4CR[c4CR] = hA - (hB + hC + hD);
|
||||
a4GR[c4GR] = hB - (hA + hC + hD);
|
||||
a4KR[c4KR] = hC - (hA + hB + hD);
|
||||
a4OR[c4OR] = hD - (hA + hB + hC);
|
||||
hA = b4DR[c4DR-((c4DR > d4D)?d4D+1:0)];
|
||||
hB = b4HR[c4HR-((c4HR > d4H)?d4H+1:0)];
|
||||
hC = b4LR[c4LR-((c4LR > d4L)?d4L+1:0)];
|
||||
hD = b4PR[c4PR-((c4PR > d4P)?d4P+1:0)];
|
||||
b4CR[c4CR] = hA - (hB + hC + hD);
|
||||
b4GR[c4GR] = hB - (hA + hC + hD);
|
||||
b4KR[c4KR] = hC - (hA + hB + hD);
|
||||
b4OR[c4OR] = hD - (hA + hB + hC);
|
||||
|
||||
c4CR++; if (c4CR < 0 || c4CR > d4C) c4CR = 0;
|
||||
c4GR++; if (c4GR < 0 || c4GR > d4G) c4GR = 0;
|
||||
c4KR++; if (c4KR < 0 || c4KR > d4K) c4KR = 0;
|
||||
c4OR++; if (c4OR < 0 || c4OR > d4O) c4OR = 0;
|
||||
|
||||
hA = a4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = a4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = a4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = a4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
a4BR[c4BR] = hA - (hB + hC + hD);
|
||||
a4FR[c4FR] = hB - (hA + hC + hD);
|
||||
a4JR[c4JR] = hC - (hA + hB + hD);
|
||||
a4NR[c4NR] = hD - (hA + hB + hC);
|
||||
hA = b4CR[c4CR-((c4CR > d4C)?d4C+1:0)];
|
||||
hB = b4GR[c4GR-((c4GR > d4G)?d4G+1:0)];
|
||||
hC = b4KR[c4KR-((c4KR > d4K)?d4K+1:0)];
|
||||
hD = b4OR[c4OR-((c4OR > d4O)?d4O+1:0)];
|
||||
b4BR[c4BR] = hA - (hB + hC + hD);
|
||||
b4FR[c4FR] = hB - (hA + hC + hD);
|
||||
b4JR[c4JR] = hC - (hA + hB + hD);
|
||||
b4NR[c4NR] = hD - (hA + hB + hC);
|
||||
|
||||
c4BR++; if (c4BR < 0 || c4BR > d4B) c4BR = 0;
|
||||
c4FR++; if (c4FR < 0 || c4FR > d4F) c4FR = 0;
|
||||
c4JR++; if (c4JR < 0 || c4JR > d4J) c4JR = 0;
|
||||
c4NR++; if (c4NR < 0 || c4NR > d4N) c4NR = 0;
|
||||
|
||||
hA = a4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = a4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = a4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = a4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
a4AR[c4AR] = hA - (hB + hC + hD);
|
||||
a4ER[c4ER] = hB - (hA + hC + hD);
|
||||
a4IR[c4IR] = hC - (hA + hB + hD);
|
||||
a4MR[c4MR] = hD - (hA + hB + hC);
|
||||
hA = b4BR[c4BR-((c4BR > d4B)?d4B+1:0)];
|
||||
hB = b4FR[c4FR-((c4FR > d4F)?d4F+1:0)];
|
||||
hC = b4JR[c4JR-((c4JR > d4J)?d4J+1:0)];
|
||||
hD = b4NR[c4NR-((c4NR > d4N)?d4N+1:0)];
|
||||
b4AR[c4AR] = hA - (hB + hC + hD);
|
||||
b4ER[c4ER] = hB - (hA + hC + hD);
|
||||
b4IR[c4IR] = hC - (hA + hB + hD);
|
||||
b4MR[c4MR] = hD - (hA + hB + hC);
|
||||
|
||||
c4AR++; if (c4AR < 0 || c4AR > d4A) c4AR = 0;
|
||||
c4ER++; if (c4ER < 0 || c4ER > d4E) c4ER = 0;
|
||||
c4IR++; if (c4IR < 0 || c4IR > d4I) c4IR = 0;
|
||||
c4MR++; if (c4MR < 0 || c4MR > d4M) c4MR = 0;
|
||||
|
||||
double o4AR = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
double o4ER = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
double o4IR = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
double o4MR = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
hA = a4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = a4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = a4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = a4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
f4DR = hA - (hB + hC + hD);
|
||||
f4HR = hB - (hA + hC + hD);
|
||||
f4LR = hC - (hA + hB + hD);
|
||||
f4PR = hD - (hA + hB + hC);
|
||||
mainSampleR = (hA + hB + hC + hD)*0.125;
|
||||
|
||||
//-------- four
|
||||
|
||||
f4AL = o4AR - (o4ER + o4IR + o4MR);
|
||||
f4BL = o4ER - (o4AR + o4IR + o4MR);
|
||||
f4CL = o4IR - (o4AR + o4ER + o4MR);
|
||||
f4DL = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
f4DR = o4ML - (o4NL + o4OL + o4PL);
|
||||
f4HR = o4NL - (o4ML + o4OL + o4PL);
|
||||
f4LR = o4OL - (o4ML + o4NL + o4PL);
|
||||
f4PR = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
mainSampleL = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
mainSampleR = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
|
||||
//we still have an untouched inputsample, turn it into dual mono
|
||||
//won't need to redeclare any of the o4 temp variables, just re-use
|
||||
|
||||
double dualmonoSampleL = bez[bez_SampR];
|
||||
double dualmonoSampleR = bez[bez_SampL];
|
||||
//workaround involves keeping the cross-matrix system,
|
||||
//but for initial layering, each side gets each version
|
||||
//making blends never quite line up as exactly the same.
|
||||
|
||||
b4AL[e4AL] = dualmonoSampleL + (g4AL * reg4n);
|
||||
b4BL[e4BL] = dualmonoSampleL + (g4BL * reg4n);
|
||||
b4CL[e4CL] = dualmonoSampleL + (g4CL * reg4n);
|
||||
b4DL[e4DL] = dualmonoSampleL + (g4DL * reg4n);
|
||||
|
||||
e4AL++; if (e4AL < 0 || e4AL > d4A) e4AL = 0;
|
||||
e4BL++; if (e4BL < 0 || e4BL > d4B) e4BL = 0;
|
||||
e4CL++; if (e4CL < 0 || e4CL > d4C) e4CL = 0;
|
||||
e4DL++; if (e4DL < 0 || e4DL > d4D) e4DL = 0;
|
||||
|
||||
o4AL = b4AL[e4AL-((e4AL > d4A)?d4A+1:0)];
|
||||
o4BL = b4BL[e4BL-((e4BL > d4B)?d4B+1:0)];
|
||||
o4CL = b4CL[e4CL-((e4CL > d4C)?d4C+1:0)];
|
||||
o4DL = b4DL[e4DL-((e4DL > d4D)?d4D+1:0)];
|
||||
|
||||
b4DR[e4DR] = dualmonoSampleR + (g4DR * reg4n);
|
||||
b4HR[e4HR] = dualmonoSampleR + (g4HR * reg4n);
|
||||
b4LR[e4LR] = dualmonoSampleR + (g4LR * reg4n);
|
||||
b4PR[e4PR] = dualmonoSampleR + (g4PR * reg4n);
|
||||
|
||||
e4DR++; if (e4DR < 0 || e4DR > d4D) e4DR = 0;
|
||||
e4HR++; if (e4HR < 0 || e4HR > d4H) e4HR = 0;
|
||||
e4LR++; if (e4LR < 0 || e4LR > d4L) e4LR = 0;
|
||||
e4PR++; if (e4PR < 0 || e4PR > d4P) e4PR = 0;
|
||||
|
||||
o4DR = b4DR[e4DR-((e4DR > d4D)?d4D+1:0)];
|
||||
o4HR = b4HR[e4HR-((e4HR > d4H)?d4H+1:0)];
|
||||
o4LR = b4LR[e4LR-((e4LR > d4L)?d4L+1:0)];
|
||||
o4PR = b4PR[e4PR-((e4PR > d4P)?d4P+1:0)];
|
||||
|
||||
//-------- one
|
||||
|
||||
b4EL[e4EL] = o4AL - (o4BL + o4CL + o4DL);
|
||||
b4FL[e4FL] = o4BL - (o4AL + o4CL + o4DL);
|
||||
b4GL[e4GL] = o4CL - (o4AL + o4BL + o4DL);
|
||||
b4HL[e4HL] = o4DL - (o4AL + o4BL + o4CL);
|
||||
|
||||
e4EL++; if (e4EL < 0 || e4EL > d4E) e4EL = 0;
|
||||
e4FL++; if (e4FL < 0 || e4FL > d4F) e4FL = 0;
|
||||
e4GL++; if (e4GL < 0 || e4GL > d4G) e4GL = 0;
|
||||
e4HL++; if (e4HL < 0 || e4HL > d4H) e4HL = 0;
|
||||
|
||||
o4EL = b4EL[e4EL-((e4EL > d4E)?d4E+1:0)];
|
||||
o4FL = b4FL[e4FL-((e4FL > d4F)?d4F+1:0)];
|
||||
o4GL = b4GL[e4GL-((e4GL > d4G)?d4G+1:0)];
|
||||
o4HL = b4HL[e4HL-((e4HL > d4H)?d4H+1:0)];
|
||||
|
||||
b4CR[e4CR] = o4DR - (o4HR + o4LR + o4PR);
|
||||
b4GR[e4GR] = o4HR - (o4DR + o4LR + o4PR);
|
||||
b4KR[e4KR] = o4LR - (o4DR + o4HR + o4PR);
|
||||
b4OR[e4OR] = o4PR - (o4DR + o4HR + o4LR);
|
||||
|
||||
e4CR++; if (e4CR < 0 || e4CR > d4C) e4CR = 0;
|
||||
e4GR++; if (e4GR < 0 || e4GR > d4G) e4GR = 0;
|
||||
e4KR++; if (e4KR < 0 || e4KR > d4K) e4KR = 0;
|
||||
e4OR++; if (e4OR < 0 || e4OR > d4O) e4OR = 0;
|
||||
|
||||
o4CR = b4CR[e4CR-((e4CR > d4C)?d4C+1:0)];
|
||||
o4GR = b4GR[e4GR-((e4GR > d4G)?d4G+1:0)];
|
||||
o4KR = b4KR[e4KR-((e4KR > d4K)?d4K+1:0)];
|
||||
o4OR = b4OR[e4OR-((e4OR > d4O)?d4O+1:0)];
|
||||
|
||||
//-------- two
|
||||
|
||||
b4IL[e4IL] = o4EL - (o4FL + o4GL + o4HL);
|
||||
b4JL[e4JL] = o4FL - (o4EL + o4GL + o4HL);
|
||||
b4KL[e4KL] = o4GL - (o4EL + o4FL + o4HL);
|
||||
b4LL[e4LL] = o4HL - (o4EL + o4FL + o4GL);
|
||||
|
||||
e4IL++; if (e4IL < 0 || e4IL > d4I) e4IL = 0;
|
||||
e4JL++; if (e4JL < 0 || e4JL > d4J) e4JL = 0;
|
||||
e4KL++; if (e4KL < 0 || e4KL > d4K) e4KL = 0;
|
||||
e4LL++; if (e4LL < 0 || e4LL > d4L) e4LL = 0;
|
||||
|
||||
o4IL = b4IL[e4IL-((e4IL > d4I)?d4I+1:0)];
|
||||
o4JL = b4JL[e4JL-((e4JL > d4J)?d4J+1:0)];
|
||||
o4KL = b4KL[e4KL-((e4KL > d4K)?d4K+1:0)];
|
||||
o4LL = b4LL[e4LL-((e4LL > d4L)?d4L+1:0)];
|
||||
|
||||
b4BR[e4BR] = o4CR - (o4GR + o4KR + o4OR);
|
||||
b4FR[e4FR] = o4GR - (o4CR + o4KR + o4OR);
|
||||
b4JR[e4JR] = o4KR - (o4CR + o4GR + o4OR);
|
||||
b4NR[e4NR] = o4OR - (o4CR + o4GR + o4KR);
|
||||
|
||||
e4BR++; if (e4BR < 0 || e4BR > d4B) e4BR = 0;
|
||||
e4FR++; if (e4FR < 0 || e4FR > d4F) e4FR = 0;
|
||||
e4JR++; if (e4JR < 0 || e4JR > d4J) e4JR = 0;
|
||||
e4NR++; if (e4NR < 0 || e4NR > d4N) e4NR = 0;
|
||||
|
||||
o4BR = b4BR[e4BR-((e4BR > d4B)?d4B+1:0)];
|
||||
o4FR = b4FR[e4FR-((e4FR > d4F)?d4F+1:0)];
|
||||
o4JR = b4JR[e4JR-((e4JR > d4J)?d4J+1:0)];
|
||||
o4NR = b4NR[e4NR-((e4NR > d4N)?d4N+1:0)];
|
||||
|
||||
//-------- three
|
||||
|
||||
b4ML[e4ML] = o4IL - (o4JL + o4KL + o4LL);
|
||||
b4NL[e4NL] = o4JL - (o4IL + o4KL + o4LL);
|
||||
b4OL[e4OL] = o4KL - (o4IL + o4JL + o4LL);
|
||||
b4PL[e4PL] = o4LL - (o4IL + o4JL + o4KL);
|
||||
|
||||
e4ML++; if (e4ML < 0 || e4ML > d4M) e4ML = 0;
|
||||
e4NL++; if (e4NL < 0 || e4NL > d4N) e4NL = 0;
|
||||
e4OL++; if (e4OL < 0 || e4OL > d4O) e4OL = 0;
|
||||
e4PL++; if (e4PL < 0 || e4PL > d4P) e4PL = 0;
|
||||
|
||||
o4ML = b4ML[e4ML-((e4ML > d4M)?d4M+1:0)];
|
||||
o4NL = b4NL[e4NL-((e4NL > d4N)?d4N+1:0)];
|
||||
o4OL = b4OL[e4OL-((e4OL > d4O)?d4O+1:0)];
|
||||
o4PL = b4PL[e4PL-((e4PL > d4P)?d4P+1:0)];
|
||||
|
||||
b4AR[e4AR] = o4BR - (o4FR + o4JR + o4NR);
|
||||
b4ER[e4ER] = o4FR - (o4BR + o4JR + o4NR);
|
||||
b4IR[e4IR] = o4JR - (o4BR + o4FR + o4NR);
|
||||
b4MR[e4MR] = o4NR - (o4BR + o4FR + o4JR);
|
||||
|
||||
e4AR++; if (e4AR < 0 || e4AR > d4A) e4AR = 0;
|
||||
e4ER++; if (e4ER < 0 || e4ER > d4E) e4ER = 0;
|
||||
e4IR++; if (e4IR < 0 || e4IR > d4I) e4IR = 0;
|
||||
e4MR++; if (e4MR < 0 || e4MR > d4M) e4MR = 0;
|
||||
|
||||
o4AR = b4AR[e4AR-((e4AR > d4A)?d4A+1:0)];
|
||||
o4ER = b4ER[e4ER-((e4ER > d4E)?d4E+1:0)];
|
||||
o4IR = b4IR[e4IR-((e4IR > d4I)?d4I+1:0)];
|
||||
o4MR = b4MR[e4MR-((e4MR > d4M)?d4M+1:0)];
|
||||
|
||||
//-------- four
|
||||
|
||||
g4DR = o4AR - (o4ER + o4IR + o4MR);
|
||||
g4HR = o4ER - (o4AR + o4IR + o4MR);
|
||||
g4LR = o4IR - (o4AR + o4ER + o4MR);
|
||||
g4PR = o4MR - (o4AR + o4ER + o4IR);
|
||||
|
||||
g4AL = o4ML - (o4NL + o4OL + o4PL);
|
||||
g4BL = o4NL - (o4ML + o4OL + o4PL);
|
||||
g4CL = o4OL - (o4ML + o4NL + o4PL);
|
||||
g4DL = o4PL - (o4ML + o4NL + o4OL);
|
||||
|
||||
dualmonoSampleR = (o4ML + o4NL + o4OL + o4PL)*0.125;
|
||||
dualmonoSampleL = (o4AR + o4ER + o4IR + o4MR)*0.125;
|
||||
hA = b4AR[c4AR-((c4AR > d4A)?d4A+1:0)];
|
||||
hB = b4ER[c4ER-((c4ER > d4E)?d4E+1:0)];
|
||||
hC = b4IR[c4IR-((c4IR > d4I)?d4I+1:0)];
|
||||
hD = b4MR[c4MR-((c4MR > d4M)?d4M+1:0)];
|
||||
g4DR = hA - (hB + hC + hD);
|
||||
g4HR = hB - (hA + hC + hD);
|
||||
g4LR = hC - (hA + hB + hD);
|
||||
g4PR = hD - (hA + hB + hC);
|
||||
dualmonoSampleR = (hA + hB + hC + hD)*0.125;
|
||||
//dual mono version is wider = 1.0 at the center
|
||||
//with mainsample 0.0 and 2.0 (only at the edges)
|
||||
//with mainsample out of phase when over 1.0
|
||||
|
|
@ -614,11 +527,11 @@ OSStatus VerbTiny::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFlag
|
|||
//then, dualmono remains totally dualmono, and blend a bit in for wideness.
|
||||
|
||||
if (wider < 1.0) {
|
||||
inputSampleL = (dualmonoSampleL*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleR*wider) + (mainSampleR*(1.0-wider));
|
||||
inputSampleL = (dualmonoSampleR*wider) + (mainSampleL*(1.0-wider));
|
||||
inputSampleR = (dualmonoSampleL*wider) + (mainSampleR*(1.0-wider));
|
||||
} else {
|
||||
inputSampleL = (dualmonoSampleL*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleR*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
inputSampleL = (dualmonoSampleR*(2.0-wider)) + (mainSampleL*(wider-1.0));
|
||||
inputSampleR = (dualmonoSampleL*(2.0-wider)) + (-mainSampleR*(wider-1.0));
|
||||
}
|
||||
|
||||
bez[bez_CL] = bez[bez_BL];
|
||||
|
|
|
|||
|
|
@ -197,10 +197,6 @@ public:
|
|||
double b4NR[d4N+5];
|
||||
double b4OR[d4O+5];
|
||||
double b4PR[d4P+5];
|
||||
int e4AL,e4BL,e4CL,e4DL,e4EL,e4FL,e4GL,e4HL;
|
||||
int e4IL,e4JL,e4KL,e4LL,e4ML,e4NL,e4OL,e4PL;
|
||||
int e4AR,e4BR,e4CR,e4DR,e4ER,e4FR,e4GR,e4HR;
|
||||
int e4IR,e4JR,e4KR,e4LR,e4MR,e4NR,e4OR,e4PR;
|
||||
double g4AL,g4BL,g4CL,g4DL,g4DR,g4HR,g4LR,g4PR;
|
||||
//changed letter is the dual mono, with rearranged grid
|
||||
|
||||
|
|
|
|||
|
|
@ -51,42 +51,78 @@
|
|||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 785500090;
|
||||
PBXWorkspaceStateSaveDate = 785500090;
|
||||
PBXPerProjectTemplateStateSaveDate = 785700848;
|
||||
PBXWorkspaceStateSaveDate = 785700848;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B3D1E0C2ED4D85C0020B133 /* PBXBookmark */ = 8B3D1E0C2ED4D85C0020B133 /* PBXBookmark */;
|
||||
8B3D1E102ED4D8C60020B133 /* PBXTextBookmark */ = 8B3D1E102ED4D8C60020B133 /* PBXTextBookmark */;
|
||||
8B3D1E152ED4D8DE0020B133 /* PBXTextBookmark */ = 8B3D1E152ED4D8DE0020B133 /* PBXTextBookmark */;
|
||||
8B3D1E1B2ED4D8DE0020B133 /* PBXTextBookmark */ = 8B3D1E1B2ED4D8DE0020B133 /* PBXTextBookmark */;
|
||||
8B8C63E12EC2B04A008CA66C /* PBXTextBookmark */ = 8B8C63E12EC2B04A008CA66C /* PBXTextBookmark */;
|
||||
8BFFBC6C2ED133D400188089 /* PBXTextBookmark */ = 8BFFBC6C2ED133D400188089 /* PBXTextBookmark */;
|
||||
8BFFBCBA2ED1D18A00188089 /* PBXTextBookmark */ = 8BFFBCBA2ED1D18A00188089 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B3D1E0C2ED4D85C0020B133 /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
};
|
||||
8B3D1E102ED4D8C60020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
name = "VerbTiny.cpp: 600";
|
||||
rLen = 0;
|
||||
rLoc = 25509;
|
||||
rType = 0;
|
||||
vrLen = 66;
|
||||
vrLoc = 3;
|
||||
};
|
||||
8B3D1E152ED4D8DE0020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
name = "VerbTiny.cpp: 600";
|
||||
rLen = 0;
|
||||
rLoc = 25509;
|
||||
rType = 0;
|
||||
vrLen = 66;
|
||||
vrLoc = 3;
|
||||
};
|
||||
8B3D1E1B2ED4D8DE0020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
name = "VerbTiny.cpp: 600";
|
||||
rLen = 0;
|
||||
rLoc = 25509;
|
||||
rType = 0;
|
||||
vrLen = 1484;
|
||||
vrLoc = 13572;
|
||||
};
|
||||
8B8C63E12EC2B04A008CA66C /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* VerbTiny.h */;
|
||||
name = "VerbTiny.h: 169";
|
||||
rLen = 0;
|
||||
rLoc = 7585;
|
||||
rLoc = 7399;
|
||||
rType = 0;
|
||||
vrLen = 35;
|
||||
vrLoc = 6481;
|
||||
};
|
||||
8BA05A660720730100365D66 /* VerbTiny.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {554, 12276}}";
|
||||
sepNavSelRange = "{27066, 0}";
|
||||
sepNavVisRange = "{0, 0}";
|
||||
sepNavWindowFrame = "{{439, 105}, {999, 764}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1029, 10980}}";
|
||||
sepNavSelRange = "{25509, 0}";
|
||||
sepNavVisRange = "{3, 66}";
|
||||
sepNavWindowFrame = "{{446, 105}, {999, 764}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* VerbTinyVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
|
||||
sepNavSelRange = "{2900, 0}";
|
||||
sepNavVisRange = "{862, 2101}";
|
||||
sepNavWindowFrame = "{{15, 38}, {843, 840}}";
|
||||
sepNavSelRange = "{2608, 0}";
|
||||
sepNavVisRange = "{761, 2202}";
|
||||
sepNavWindowFrame = "{{758, 38}, {843, 840}}";
|
||||
};
|
||||
};
|
||||
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
|
||||
|
|
@ -98,9 +134,9 @@
|
|||
};
|
||||
8BC6025B073B072D006C4272 /* VerbTiny.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 4698}}";
|
||||
sepNavSelRange = "{7585, 0}";
|
||||
sepNavVisRange = "{7012, 883}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 4626}}";
|
||||
sepNavSelRange = "{7222, 0}";
|
||||
sepNavVisRange = "{6949, 766}";
|
||||
sepNavWindowFrame = "{{597, 38}, {843, 840}}";
|
||||
};
|
||||
};
|
||||
|
|
@ -118,26 +154,6 @@
|
|||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8BFFBC6C2ED133D400188089 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
name = "VerbTiny.cpp: 647";
|
||||
rLen = 0;
|
||||
rLoc = 27066;
|
||||
rType = 0;
|
||||
vrLen = 49;
|
||||
vrLoc = 20936;
|
||||
};
|
||||
8BFFBCBA2ED1D18A00188089 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* VerbTiny.cpp */;
|
||||
name = "VerbTiny.cpp: 646";
|
||||
rLen = 0;
|
||||
rLoc = 27066;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* VerbTiny */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -222,7 +222,48 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>OpenEditors</key>
|
||||
<array/>
|
||||
<array>
|
||||
<dict>
|
||||
<key>Content</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>8B3D1E192ED4D8DE0020B133</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>VerbTiny.cpp</string>
|
||||
<key>PBXSplitModuleInNavigatorKey</key>
|
||||
<dict>
|
||||
<key>Split0</key>
|
||||
<dict>
|
||||
<key>PBXProjectModuleGUID</key>
|
||||
<string>8B3D1E1A2ED4D8DE0020B133</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>VerbTiny.cpp</string>
|
||||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>8B3D1E1B2ED4D8DE0020B133</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>8B3D1E0C2ED4D85C0020B133</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
<key>StatusBarVisibility</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Geometry</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 20}, {999, 667}}</string>
|
||||
<key>PBXModuleWindowStatusBarHidden2</key>
|
||||
<false/>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>446 161 999 708 0 0 1440 878 </string>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PerspectiveWidths</key>
|
||||
<array>
|
||||
<integer>810</integer>
|
||||
|
|
@ -256,8 +297,6 @@
|
|||
<key>Layout</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>BecomeActive</key>
|
||||
<true/>
|
||||
<key>ContentConfiguration</key>
|
||||
<dict>
|
||||
<key>PBXBottomSmartGroupGIDs</key>
|
||||
|
|
@ -324,7 +363,7 @@
|
|||
<real>185</real>
|
||||
</array>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>638 168 810 487 0 0 1440 878 </string>
|
||||
<string>611 278 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXSmartGroupTreeModule</string>
|
||||
|
|
@ -352,11 +391,11 @@
|
|||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>8BFFBCBA2ED1D18A00188089</string>
|
||||
<string>8B3D1E152ED4D8DE0020B133</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>8B8C63E12EC2B04A008CA66C</string>
|
||||
<string>8BFFBC6C2ED133D400188089</string>
|
||||
<string>8B3D1E102ED4D8C60020B133</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
|
|
@ -370,18 +409,18 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {603, 32}}</string>
|
||||
<string>{{0, 0}, {603, 132}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>638 168 810 487 0 0 1440 878 </string>
|
||||
<string>611 278 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
<key>Proportion</key>
|
||||
<string>32pt</string>
|
||||
<string>132pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Proportion</key>
|
||||
<string>409pt</string>
|
||||
<string>309pt</string>
|
||||
<key>Tabs</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
@ -395,9 +434,7 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {603, 382}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>638 168 810 487 0 0 1440 878 </string>
|
||||
<string>{{10, 27}, {603, 282}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>XCDetailModule</string>
|
||||
|
|
@ -451,7 +488,9 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {603, 345}}</string>
|
||||
<string>{{10, 27}, {603, 282}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>611 278 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXBuildResultsModule</string>
|
||||
|
|
@ -479,11 +518,11 @@
|
|||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>8BFFBC792ED1C7BE00188089</string>
|
||||
<string>8B3D1E162ED4D8DE0020B133</string>
|
||||
<string>1CA23ED40692098700951B8B</string>
|
||||
<string>8BFFBC7A2ED1C7BE00188089</string>
|
||||
<string>8B3D1E172ED4D8DE0020B133</string>
|
||||
<string>8B7264FA2EC29D270065D50D</string>
|
||||
<string>8BFFBC7B2ED1C7BE00188089</string>
|
||||
<string>8B3D1E182ED4D8DE0020B133</string>
|
||||
<string>1CA23EDF0692099D00951B8B</string>
|
||||
<string>1CA23EE00692099D00951B8B</string>
|
||||
<string>1CA23EE10692099D00951B8B</string>
|
||||
|
|
@ -656,7 +695,7 @@
|
|||
<key>StatusbarIsVisible</key>
|
||||
<true/>
|
||||
<key>TimeStamp</key>
|
||||
<real>785502602.92543697</real>
|
||||
<real>785701086.95550394</real>
|
||||
<key>ToolbarConfigUserDefaultsMinorVersion</key>
|
||||
<string>2</string>
|
||||
<key>ToolbarDisplayMode</key>
|
||||
|
|
@ -673,10 +712,11 @@
|
|||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>8B3D1E192ED4D8DE0020B133</string>
|
||||
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/VerbTiny/VerbTiny.xcodeproj</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
<string>638 168 810 487 0 0 1440 878 </string>
|
||||
<string>611 278 810 487 0 0 1440 878 </string>
|
||||
<key>WindowToolsV3</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
bezFreqTrim = 1.0-pow(derezFreq*0.5,1.0/(derezFreq*0.5));
|
||||
} //the revision more accurately connects the bezier curves
|
||||
|
||||
double earlyLoudness = GetParameter( kParam_D )*2.0;
|
||||
double earlyLoudness = pow(GetParameter( kParam_D ),2.0);
|
||||
int start = (int)(GetParameter( kParam_E ) * 27.0);
|
||||
int ld3G = early[start];
|
||||
int ld3H = early[start+1];
|
||||
|
|
@ -361,17 +361,14 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
double drySampleR = inputSampleR;
|
||||
|
||||
bez[bez_cycle] += derez;
|
||||
bez[bez_SampL] += ((inputSampleL+bez[bez_InL]) * derez);
|
||||
bez[bez_SampR] += ((inputSampleR+bez[bez_InR]) * derez);
|
||||
bez[bez_InL] = inputSampleL; bez[bez_InR] = inputSampleR;
|
||||
bez[bez_SampL] += (inputSampleL * derez);
|
||||
bez[bez_SampR] += (inputSampleR * derez);
|
||||
if (bez[bez_cycle] > 1.0) { //hit the end point and we do a reverb sample
|
||||
if (stepped) bez[bez_cycle] = 0.0;
|
||||
else bez[bez_cycle] -= 1.0;
|
||||
|
||||
inputSampleL = (bez[bez_SampL]+bez[bez_AvgInSampL])*0.5;
|
||||
bez[bez_AvgInSampL] = bez[bez_SampL];
|
||||
inputSampleR = (bez[bez_SampR]+bez[bez_AvgInSampR])*0.5;
|
||||
bez[bez_AvgInSampR] = bez[bez_SampR];
|
||||
inputSampleL = (bez[bez_SampL]);
|
||||
inputSampleR = (bez[bez_SampR]);
|
||||
|
||||
a3AL[c3AL] = inputSampleL;// + (f3AL * reg3n);
|
||||
a3BL[c3BL] = inputSampleL;// + (f3BL * reg3n);
|
||||
|
|
@ -381,96 +378,68 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
a3FR[c3FR] = inputSampleR;// + (f3FR * reg3n);
|
||||
a3IR[c3IR] = inputSampleR;// + (f3IR * reg3n);
|
||||
|
||||
c3AL++; if (c3AL < 0 || c3AL > ld3A) c3AL = 0;
|
||||
c3BL++; if (c3BL < 0 || c3BL > ld3B) c3BL = 0;
|
||||
c3CL++; if (c3CL < 0 || c3CL > ld3C) c3CL = 0;
|
||||
c3CR++; if (c3CR < 0 || c3CR > ld3C) c3CR = 0;
|
||||
c3FR++; if (c3FR < 0 || c3FR > ld3F) c3FR = 0;
|
||||
c3IR++; if (c3IR < 0 || c3IR > ld3I) c3IR = 0;
|
||||
c3AL++; if (c3AL > ld3A) c3AL = 0;
|
||||
c3BL++; if (c3BL > ld3B) c3BL = 0;
|
||||
c3CL++; if (c3CL > ld3C) c3CL = 0;
|
||||
c3CR++; if (c3CR > ld3C) c3CR = 0;
|
||||
c3FR++; if (c3FR > ld3F) c3FR = 0;
|
||||
c3IR++; if (c3IR > ld3I) c3IR = 0;
|
||||
|
||||
double o3AL = a3AL[c3AL-((c3AL > ld3A)?c3AL+1:0)];
|
||||
double o3BL = a3BL[c3BL-((c3BL > ld3B)?c3BL+1:0)];
|
||||
double o3CL = a3CL[c3CL-((c3CL > ld3C)?c3CL+1:0)];
|
||||
double o3CR = a3CR[c3CR-((c3CR > ld3C)?c3CR+1:0)];
|
||||
double o3FR = a3FR[c3FR-((c3FR > ld3F)?c3FR+1:0)];
|
||||
double o3IR = a3IR[c3IR-((c3IR > ld3I)?c3IR+1:0)];
|
||||
double hA = a3AL[c3AL-((c3AL > ld3A)?c3AL+1:0)];
|
||||
double hB = a3BL[c3BL-((c3BL > ld3B)?c3BL+1:0)];
|
||||
double hC = a3CL[c3CL-((c3CL > ld3C)?c3CL+1:0)];
|
||||
double hD = a3CR[c3CR-((c3CR > ld3C)?c3CR+1:0)];
|
||||
double hE = a3FR[c3FR-((c3FR > ld3F)?c3FR+1:0)];
|
||||
double hF = a3IR[c3IR-((c3IR > ld3I)?c3IR+1:0)];
|
||||
|
||||
a3DL[c3DL] = (((o3BL + o3CL) * -2.0) + o3AL);
|
||||
a3EL[c3EL] = (((o3AL + o3CL) * -2.0) + o3BL);
|
||||
a3FL[c3FL] = (((o3AL + o3BL) * -2.0) + o3CL);
|
||||
a3BR[c3BR] = (((o3FR + o3IR) * -2.0) + o3CR);
|
||||
a3ER[c3ER] = (((o3CR + o3IR) * -2.0) + o3FR);
|
||||
a3HR[c3HR] = (((o3CR + o3FR) * -2.0) + o3IR);
|
||||
a3DL[c3DL] = (((hB + hC) * -2.0) + hA);
|
||||
a3EL[c3EL] = (((hA + hC) * -2.0) + hB);
|
||||
a3FL[c3FL] = (((hA + hB) * -2.0) + hC);
|
||||
a3BR[c3BR] = (((hE + hF) * -2.0) + hD);
|
||||
a3ER[c3ER] = (((hD + hF) * -2.0) + hE);
|
||||
a3HR[c3HR] = (((hD + hE) * -2.0) + hF);
|
||||
|
||||
c3DL++; if (c3DL < 0 || c3DL > ld3D) c3DL = 0;
|
||||
c3EL++; if (c3EL < 0 || c3EL > ld3E) c3EL = 0;
|
||||
c3FL++; if (c3FL < 0 || c3FL > ld3F) c3FL = 0;
|
||||
c3BR++; if (c3BR < 0 || c3BR > ld3B) c3BR = 0;
|
||||
c3ER++; if (c3ER < 0 || c3ER > ld3E) c3ER = 0;
|
||||
c3HR++; if (c3HR < 0 || c3HR > ld3H) c3HR = 0;
|
||||
c3DL++; if (c3DL > ld3D) c3DL = 0;
|
||||
c3EL++; if (c3EL > ld3E) c3EL = 0;
|
||||
c3FL++; if (c3FL > ld3F) c3FL = 0;
|
||||
c3BR++; if (c3BR > ld3B) c3BR = 0;
|
||||
c3ER++; if (c3ER > ld3E) c3ER = 0;
|
||||
c3HR++; if (c3HR > ld3H) c3HR = 0;
|
||||
|
||||
double o3DL = a3DL[c3DL-((c3DL > ld3D)?c3DL+1:0)];
|
||||
double o3EL = a3EL[c3EL-((c3EL > ld3E)?c3EL+1:0)];
|
||||
double o3FL = a3FL[c3FL-((c3FL > ld3F)?c3FL+1:0)];
|
||||
double o3BR = a3BR[c3BR-((c3BR > ld3B)?c3BR+1:0)];
|
||||
double o3ER = a3ER[c3ER-((c3ER > ld3E)?c3ER+1:0)];
|
||||
double o3HR = a3HR[c3HR-((c3HR > ld3H)?c3HR+1:0)];
|
||||
hA = a3DL[c3DL-((c3DL > ld3D)?c3DL+1:0)];
|
||||
hB = a3EL[c3EL-((c3EL > ld3E)?c3EL+1:0)];
|
||||
hC = a3FL[c3FL-((c3FL > ld3F)?c3FL+1:0)];
|
||||
hD = a3BR[c3BR-((c3BR > ld3B)?c3BR+1:0)];
|
||||
hE = a3ER[c3ER-((c3ER > ld3E)?c3ER+1:0)];
|
||||
hF = a3HR[c3HR-((c3HR > ld3H)?c3HR+1:0)];
|
||||
|
||||
a3GL[c3GL] = (((o3EL + o3FL) * -2.0) + o3DL);
|
||||
a3HL[c3HL] = (((o3DL + o3FL) * -2.0) + o3EL);
|
||||
a3IL[c3IL] = (((o3DL + o3EL) * -2.0) + o3FL);
|
||||
a3AR[c3AR] = (((o3ER + o3HR) * -2.0) + o3BR);
|
||||
a3DR[c3DR] = (((o3BR + o3HR) * -2.0) + o3ER);
|
||||
a3GR[c3GR] = (((o3BR + o3ER) * -2.0) + o3HR);
|
||||
a3GL[c3GL] = (((hB + hC) * -2.0) + hA);
|
||||
a3HL[c3HL] = (((hA + hC) * -2.0) + hB);
|
||||
a3IL[c3IL] = (((hA + hB) * -2.0) + hC);
|
||||
a3AR[c3AR] = (((hE + hF) * -2.0) + hD);
|
||||
a3DR[c3DR] = (((hD + hF) * -2.0) + hE);
|
||||
a3GR[c3GR] = (((hD + hE) * -2.0) + hF);
|
||||
|
||||
c3GL++; if (c3GL < 0 || c3GL > ld3G) c3GL = 0;
|
||||
c3HL++; if (c3HL < 0 || c3HL > ld3H) c3HL = 0;
|
||||
c3IL++; if (c3IL < 0 || c3IL > ld3I) c3IL = 0;
|
||||
c3AR++; if (c3AR < 0 || c3AR > ld3A) c3AR = 0;
|
||||
c3DR++; if (c3DR < 0 || c3DR > ld3D) c3DR = 0;
|
||||
c3GR++; if (c3GR < 0 || c3GR > ld3G) c3GR = 0;
|
||||
c3GL++; if (c3GL > ld3G) c3GL = 0;
|
||||
c3HL++; if (c3HL > ld3H) c3HL = 0;
|
||||
c3IL++; if (c3IL > ld3I) c3IL = 0;
|
||||
c3AR++; if (c3AR > ld3A) c3AR = 0;
|
||||
c3DR++; if (c3DR > ld3D) c3DR = 0;
|
||||
c3GR++; if (c3GR > ld3G) c3GR = 0;
|
||||
|
||||
double o3GL = a3GL[c3GL-((c3GL > ld3G)?c3GL+1:0)];
|
||||
double o3HL = a3HL[c3HL-((c3HL > ld3H)?c3HL+1:0)];
|
||||
double o3IL = a3IL[c3IL-((c3IL > ld3I)?c3IL+1:0)];
|
||||
double o3AR = a3AR[c3AR-((c3AR > ld3A)?c3AR+1:0)];
|
||||
double o3DR = a3DR[c3DR-((c3DR > ld3D)?c3DR+1:0)];
|
||||
double o3GR = a3GR[c3GR-((c3GR > ld3G)?c3GR+1:0)];
|
||||
hA = a3GL[c3GL-((c3GL > ld3G)?c3GL+1:0)];
|
||||
hB = a3HL[c3HL-((c3HL > ld3H)?c3HL+1:0)];
|
||||
hC = a3IL[c3IL-((c3IL > ld3I)?c3IL+1:0)];
|
||||
hD = a3AR[c3AR-((c3AR > ld3A)?c3AR+1:0)];
|
||||
hE = a3DR[c3DR-((c3DR > ld3D)?c3DR+1:0)];
|
||||
hF = a3GR[c3GR-((c3GR > ld3G)?c3GR+1:0)];
|
||||
|
||||
double inputSampleL = (o3GL + o3HL + o3IL)*0.03125;
|
||||
double inputSampleR = (o3AR + o3DR + o3GR)*0.03125;
|
||||
double earlyReflectionL = (((hB + hC) * -2.0) + hA)*-0.0625;
|
||||
double earlyReflectionR = (((hE + hF) * -2.0) + hD)*-0.0625;
|
||||
|
||||
inputSampleL -= earlyReflectionL;
|
||||
inputSampleR -= earlyReflectionR;
|
||||
|
||||
bezF[bez_cycle] += derezFreq;
|
||||
bezF[bez_SampL] += ((inputSampleL+bezF[bez_InL]) * derezFreq);
|
||||
bezF[bez_SampR] += ((inputSampleL+bezF[bez_InR]) * derezFreq);
|
||||
bezF[bez_InL] = inputSampleL; bezF[bez_InR] = inputSampleR;
|
||||
if (bezF[bez_cycle] > 1.0) { //hit the end point and we do a filter sample
|
||||
if (steppedFreq) bezF[bez_cycle] = 0.0;
|
||||
else bezF[bez_cycle] -= 1.0;
|
||||
bezF[bez_CL] = bezF[bez_BL];
|
||||
bezF[bez_BL] = bezF[bez_AL];
|
||||
bezF[bez_AL] = (bezF[bez_SampL]+bezF[bez_AvgInSampL])*0.5;
|
||||
bezF[bez_AvgInSampL] = bezF[bez_SampL]; bezF[bez_SampL] = 0.0;
|
||||
bezF[bez_CR] = bezF[bez_BR];
|
||||
bezF[bez_BR] = bezF[bez_AR];
|
||||
bezF[bez_AR] = (bezF[bez_SampR]+bezF[bez_AvgInSampR])*0.5;
|
||||
bezF[bez_AvgInSampR] = bezF[bez_SampR]; bezF[bez_SampR] = 0.0;
|
||||
}
|
||||
double X = bezF[bez_cycle]*bezFreqTrim;
|
||||
double CBLfreq = (bezF[bez_CL]*(1.0-X))+(bezF[bez_BL]*X);
|
||||
double BALfreq = (bezF[bez_BL]*(1.0-X))+(bezF[bez_AL]*X);
|
||||
double CBALfreq = (bezF[bez_BL]+(CBLfreq*(1.0-X))+(BALfreq*X))*0.125;
|
||||
double CBRfreq = (bezF[bez_CR]*(1.0-X))+(bezF[bez_BR]*X);
|
||||
double BARfreq = (bezF[bez_BR]*(1.0-X))+(bezF[bez_AR]*X);
|
||||
double CBARfreq = (bezF[bez_BR]+(CBRfreq*(1.0-X))+(BARfreq*X))*0.125;
|
||||
inputSampleL = CBALfreq+bezF[bez_AvgOutSampL];
|
||||
bezF[bez_AvgOutSampL] = CBALfreq;
|
||||
inputSampleR = CBARfreq+bezF[bez_AvgOutSampR];
|
||||
bezF[bez_AvgOutSampR] = CBARfreq;
|
||||
|
||||
double earlyReflectionL = inputSampleL;
|
||||
double earlyReflectionR = inputSampleR; //kWoodRoom has filtered early reflections
|
||||
|
||||
a6AL[c6AL] = inputSampleL + (f6BL * reg6n);
|
||||
a6BL[c6BL] = inputSampleL + (f6CL * reg6n);
|
||||
a6CL[c6CL] = inputSampleL + (f6DL * reg6n);
|
||||
|
|
@ -478,20 +447,6 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
a6EL[c6EL] = inputSampleL + (f6FL * reg6n);
|
||||
a6FL[c6FL] = inputSampleL + (f6AL * reg6n);
|
||||
|
||||
c6AL++; if (c6AL < 0 || c6AL > d6A) c6AL = 0;
|
||||
c6BL++; if (c6BL < 0 || c6BL > d6B) c6BL = 0;
|
||||
c6CL++; if (c6CL < 0 || c6CL > d6C) c6CL = 0;
|
||||
c6DL++; if (c6DL < 0 || c6DL > d6D) c6DL = 0;
|
||||
c6EL++; if (c6EL < 0 || c6EL > d6E) c6EL = 0;
|
||||
c6FL++; if (c6FL < 0 || c6FL > d6F) c6FL = 0;
|
||||
|
||||
double o6AL = a6AL[c6AL-((c6AL > d6A)?d6A+1:0)];
|
||||
double o6BL = a6BL[c6BL-((c6BL > d6B)?d6B+1:0)];
|
||||
double o6CL = a6CL[c6CL-((c6CL > d6C)?d6C+1:0)];
|
||||
double o6DL = a6DL[c6DL-((c6DL > d6D)?d6D+1:0)];
|
||||
double o6EL = a6EL[c6EL-((c6EL > d6E)?d6E+1:0)];
|
||||
double o6FL = a6FL[c6FL-((c6FL > d6F)?d6F+1:0)];
|
||||
|
||||
a6FR[c6FR] = inputSampleR + (f6LR * reg6n);
|
||||
a6LR[c6LR] = inputSampleR + (f6RR * reg6n);
|
||||
a6RR[c6RR] = inputSampleR + (f6XR * reg6n);
|
||||
|
|
@ -499,262 +454,291 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
a6ZER[c6ZER] = inputSampleR + (f6ZKR * reg6n);
|
||||
a6ZKR[c6ZKR] = inputSampleR + (f6FR * reg6n);
|
||||
|
||||
c6FR++; if (c6FR < 0 || c6FR > d6F) c6FR = 0;
|
||||
c6LR++; if (c6LR < 0 || c6LR > d6L) c6LR = 0;
|
||||
c6RR++; if (c6RR < 0 || c6RR > d6R) c6RR = 0;
|
||||
c6XR++; if (c6XR < 0 || c6XR > d6X) c6XR = 0;
|
||||
c6ZER++; if (c6ZER < 0 || c6ZER > d6ZE) c6ZER = 0;
|
||||
c6ZKR++; if (c6ZKR < 0 || c6ZKR > d6ZK) c6ZKR = 0;
|
||||
//left verb
|
||||
|
||||
double o6FR = a6FR[c6FR-((c6FR > d6F)?d6F+1:0)];
|
||||
double o6LR = a6LR[c6LR-((c6LR > d6L)?d6L+1:0)];
|
||||
double o6RR = a6RR[c6RR-((c6RR > d6R)?d6R+1:0)];
|
||||
double o6XR = a6XR[c6XR-((c6XR > d6X)?d6X+1:0)];
|
||||
double o6ZER = a6ZER[c6ZER-((c6ZER > d6ZE)?d6ZE+1:0)];
|
||||
double o6ZKR = a6ZKR[c6ZKR-((c6ZKR > d6ZK)?d6ZK+1:0)];
|
||||
c6AL++; if (c6AL > d6A) c6AL = 0;
|
||||
c6BL++; if (c6BL > d6B) c6BL = 0;
|
||||
c6CL++; if (c6CL > d6C) c6CL = 0;
|
||||
c6DL++; if (c6DL > d6D) c6DL = 0;
|
||||
c6EL++; if (c6EL > d6E) c6EL = 0;
|
||||
c6FL++; if (c6FL > d6F) c6FL = 0;
|
||||
|
||||
//-------- one
|
||||
hA = a6AL[c6AL-((c6AL > d6A)?d6A+1:0)];
|
||||
hB = a6BL[c6BL-((c6BL > d6B)?d6B+1:0)];
|
||||
hC = a6CL[c6CL-((c6CL > d6C)?d6C+1:0)];
|
||||
hD = a6DL[c6DL-((c6DL > d6D)?d6D+1:0)];
|
||||
hE = a6EL[c6EL-((c6EL > d6E)?d6E+1:0)];
|
||||
hF = a6FL[c6FL-((c6FL > d6F)?d6F+1:0)];
|
||||
|
||||
a6GL[c6GL] = ((o6AL*2.0) - (o6BL + o6CL + o6DL + o6EL + o6FL));
|
||||
a6HL[c6HL] = ((o6BL*2.0) - (o6AL + o6CL + o6DL + o6EL + o6FL));
|
||||
a6IL[c6IL] = ((o6CL*2.0) - (o6AL + o6BL + o6DL + o6EL + o6FL));
|
||||
a6JL[c6JL] = ((o6DL*2.0) - (o6AL + o6BL + o6CL + o6EL + o6FL));
|
||||
a6KL[c6KL] = ((o6EL*2.0) - (o6AL + o6BL + o6CL + o6DL + o6FL));
|
||||
a6LL[c6LL] = ((o6FL*2.0) - (o6AL + o6BL + o6CL + o6DL + o6EL));
|
||||
a6GL[c6GL] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6HL[c6HL] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6IL[c6IL] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6JL[c6JL] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6KL[c6KL] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6LL[c6LL] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
c6GL++; if (c6GL < 0 || c6GL > d6G) c6GL = 0;
|
||||
c6HL++; if (c6HL < 0 || c6HL > d6H) c6HL = 0;
|
||||
c6IL++; if (c6IL < 0 || c6IL > d6I) c6IL = 0;
|
||||
c6JL++; if (c6JL < 0 || c6JL > d6J) c6JL = 0;
|
||||
c6KL++; if (c6KL < 0 || c6KL > d6K) c6KL = 0;
|
||||
c6LL++; if (c6LL < 0 || c6LL > d6L) c6LL = 0;
|
||||
c6GL++; if (c6GL > d6G) c6GL = 0;
|
||||
c6HL++; if (c6HL > d6H) c6HL = 0;
|
||||
c6IL++; if (c6IL > d6I) c6IL = 0;
|
||||
c6JL++; if (c6JL > d6J) c6JL = 0;
|
||||
c6KL++; if (c6KL > d6K) c6KL = 0;
|
||||
c6LL++; if (c6LL > d6L) c6LL = 0;
|
||||
|
||||
double o6GL = a6GL[c6GL-((c6GL > d6G)?d6G+1:0)];
|
||||
double o6HL = a6HL[c6HL-((c6HL > d6H)?d6H+1:0)];
|
||||
double o6IL = a6IL[c6IL-((c6IL > d6I)?d6I+1:0)];
|
||||
double o6JL = a6JL[c6JL-((c6JL > d6J)?d6J+1:0)];
|
||||
double o6KL = a6KL[c6KL-((c6KL > d6K)?d6K+1:0)];
|
||||
double o6LL = a6LL[c6LL-((c6LL > d6L)?d6L+1:0)];
|
||||
hA = a6GL[c6GL-((c6GL > d6G)?d6G+1:0)];
|
||||
hB = a6HL[c6HL-((c6HL > d6H)?d6H+1:0)];
|
||||
hC = a6IL[c6IL-((c6IL > d6I)?d6I+1:0)];
|
||||
hD = a6JL[c6JL-((c6JL > d6J)?d6J+1:0)];
|
||||
hE = a6KL[c6KL-((c6KL > d6K)?d6K+1:0)];
|
||||
hF = a6LL[c6LL-((c6LL > d6L)?d6L+1:0)];
|
||||
|
||||
a6ER[c6ER] = ((o6FR*2.0) - (o6LR + o6RR + o6XR + o6ZER + o6ZKR));
|
||||
a6KR[c6KR] = ((o6LR*2.0) - (o6FR + o6RR + o6XR + o6ZER + o6ZKR));
|
||||
a6QR[c6QR] = ((o6RR*2.0) - (o6FR + o6LR + o6XR + o6ZER + o6ZKR));
|
||||
a6WR[c6WR] = ((o6XR*2.0) - (o6FR + o6LR + o6RR + o6ZER + o6ZKR));
|
||||
a6ZDR[c6ZDR] = ((o6ZER*2.0) - (o6FR + o6LR + o6RR + o6XR + o6ZKR));
|
||||
a6ZJR[c6ZJR] = ((o6ZKR*2.0) - (o6FR + o6LR + o6RR + o6XR + o6ZER));
|
||||
a6ML[c6ML] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6NL[c6NL] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6OL[c6OL] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6PL[c6PL] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6QL[c6QL] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6RL[c6RL] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
c6ER++; if (c6ER < 0 || c6ER > d6E) c6ER = 0;
|
||||
c6KR++; if (c6KR < 0 || c6KR > d6K) c6KR = 0;
|
||||
c6QR++; if (c6QR < 0 || c6QR > d6Q) c6QR = 0;
|
||||
c6WR++; if (c6WR < 0 || c6WR > d6W) c6WR = 0;
|
||||
c6ZDR++; if (c6ZDR < 0 || c6ZDR > d6ZD) c6ZDR = 0;
|
||||
c6ZJR++; if (c6ZJR < 0 || c6ZJR > d6ZJ) c6ZJR = 0;
|
||||
c6ML++; if (c6ML > d6M) c6ML = 0;
|
||||
c6NL++; if (c6NL > d6N) c6NL = 0;
|
||||
c6OL++; if (c6OL > d6O) c6OL = 0;
|
||||
c6PL++; if (c6PL > d6P) c6PL = 0;
|
||||
c6QL++; if (c6QL > d6Q) c6QL = 0;
|
||||
c6RL++; if (c6RL > d6R) c6RL = 0;
|
||||
|
||||
double o6ER = a6ER[c6ER-((c6ER > d6E)?d6E+1:0)];
|
||||
double o6KR = a6KR[c6KR-((c6KR > d6K)?d6K+1:0)];
|
||||
double o6QR = a6QR[c6QR-((c6QR > d6Q)?d6Q+1:0)];
|
||||
double o6WR = a6WR[c6WR-((c6WR > d6W)?d6W+1:0)];
|
||||
double o6ZDR = a6ZDR[c6ZDR-((c6ZDR > d6ZD)?d6ZD+1:0)];
|
||||
double o6ZJR = a6ZJR[c6ZJR-((c6ZJR > d6ZJ)?d6ZJ+1:0)];
|
||||
hA = a6ML[c6ML-((c6ML > d6M)?d6M+1:0)];
|
||||
hB = a6NL[c6NL-((c6NL > d6N)?d6N+1:0)];
|
||||
hC = a6OL[c6OL-((c6OL > d6O)?d6O+1:0)];
|
||||
hD = a6PL[c6PL-((c6PL > d6P)?d6P+1:0)];
|
||||
hE = a6QL[c6QL-((c6QL > d6Q)?d6Q+1:0)];
|
||||
hF = a6RL[c6RL-((c6RL > d6R)?d6R+1:0)];
|
||||
|
||||
//-------- two
|
||||
a6SL[c6SL] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6TL[c6TL] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6UL[c6UL] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6VL[c6VL] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6WL[c6WL] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6XL[c6XL] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
a6ML[c6ML] = ((o6GL*2.0) - (o6HL + o6IL + o6JL + o6KL + o6LL));
|
||||
a6NL[c6NL] = ((o6HL*2.0) - (o6GL + o6IL + o6JL + o6KL + o6LL));
|
||||
a6OL[c6OL] = ((o6IL*2.0) - (o6GL + o6HL + o6JL + o6KL + o6LL));
|
||||
a6PL[c6PL] = ((o6JL*2.0) - (o6GL + o6HL + o6IL + o6KL + o6LL));
|
||||
a6QL[c6QL] = ((o6KL*2.0) - (o6GL + o6HL + o6IL + o6JL + o6LL));
|
||||
a6RL[c6RL] = ((o6LL*2.0) - (o6GL + o6HL + o6IL + o6JL + o6KL));
|
||||
c6SL++; if (c6SL > d6S) c6SL = 0;
|
||||
c6TL++; if (c6TL > d6T) c6TL = 0;
|
||||
c6UL++; if (c6UL > d6U) c6UL = 0;
|
||||
c6VL++; if (c6VL > d6V) c6VL = 0;
|
||||
c6WL++; if (c6WL > d6W) c6WL = 0;
|
||||
c6XL++; if (c6XL > d6X) c6XL = 0;
|
||||
|
||||
c6ML++; if (c6ML < 0 || c6ML > d6M) c6ML = 0;
|
||||
c6NL++; if (c6NL < 0 || c6NL > d6N) c6NL = 0;
|
||||
c6OL++; if (c6OL < 0 || c6OL > d6O) c6OL = 0;
|
||||
c6PL++; if (c6PL < 0 || c6PL > d6P) c6PL = 0;
|
||||
c6QL++; if (c6QL < 0 || c6QL > d6Q) c6QL = 0;
|
||||
c6RL++; if (c6RL < 0 || c6RL > d6R) c6RL = 0;
|
||||
hA = a6SL[c6SL-((c6SL > d6S)?d6S+1:0)];
|
||||
hB = a6TL[c6TL-((c6TL > d6T)?d6T+1:0)];
|
||||
hC = a6UL[c6UL-((c6UL > d6U)?d6U+1:0)];
|
||||
hD = a6VL[c6VL-((c6VL > d6V)?d6V+1:0)];
|
||||
hE = a6WL[c6WL-((c6WL > d6W)?d6W+1:0)];
|
||||
hF = a6XL[c6XL-((c6XL > d6X)?d6X+1:0)];
|
||||
|
||||
double o6ML = a6ML[c6ML-((c6ML > d6M)?d6M+1:0)];
|
||||
double o6NL = a6NL[c6NL-((c6NL > d6N)?d6N+1:0)];
|
||||
double o6OL = a6OL[c6OL-((c6OL > d6O)?d6O+1:0)];
|
||||
double o6PL = a6PL[c6PL-((c6PL > d6P)?d6P+1:0)];
|
||||
double o6QL = a6QL[c6QL-((c6QL > d6Q)?d6Q+1:0)];
|
||||
double o6RL = a6RL[c6RL-((c6RL > d6R)?d6R+1:0)];
|
||||
a6YL[c6YL] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6ZAL[c6ZAL] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6ZBL[c6ZBL] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6ZCL[c6ZCL] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZDL[c6ZDL] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZEL[c6ZEL] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
a6DR[c6DR] = ((o6ER*2.0) - (o6KR + o6QR + o6WR + o6ZDR + o6ZJR));
|
||||
a6JR[c6JR] = ((o6KR*2.0) - (o6ER + o6QR + o6WR + o6ZDR + o6ZJR));
|
||||
a6PR[c6PR] = ((o6QR*2.0) - (o6ER + o6KR + o6WR + o6ZDR + o6ZJR));
|
||||
a6VR[c6VR] = ((o6WR*2.0) - (o6ER + o6KR + o6QR + o6ZDR + o6ZJR));
|
||||
a6ZCR[c6ZCR] = ((o6ZDR*2.0) - (o6ER + o6KR + o6QR + o6WR + o6ZJR));
|
||||
a6ZIR[c6ZIR] = ((o6ZJR*2.0) - (o6ER + o6KR + o6QR + o6WR + o6ZDR));
|
||||
c6YL++; if (c6YL > d6Y) c6YL = 0;
|
||||
c6ZAL++; if (c6ZAL > d6ZA) c6ZAL = 0;
|
||||
c6ZBL++; if (c6ZBL > d6ZB) c6ZBL = 0;
|
||||
c6ZCL++; if (c6ZCL > d6ZC) c6ZCL = 0;
|
||||
c6ZDL++; if (c6ZDL > d6ZD) c6ZDL = 0;
|
||||
c6ZEL++; if (c6ZEL > d6ZE) c6ZEL = 0;
|
||||
|
||||
c6DR++; if (c6DR < 0 || c6DR > d6D) c6DR = 0;
|
||||
c6JR++; if (c6JR < 0 || c6JR > d6J) c6JR = 0;
|
||||
c6PR++; if (c6PR < 0 || c6PR > d6P) c6PR = 0;
|
||||
c6VR++; if (c6VR < 0 || c6VR > d6V) c6VR = 0;
|
||||
c6ZCR++; if (c6ZCR < 0 || c6ZCR > d6ZC) c6ZCR = 0;
|
||||
c6ZIR++; if (c6ZIR < 0 || c6ZIR > d6ZI) c6ZIR = 0;
|
||||
hA = a6YL[c6YL-((c6YL > d6Y)?d6Y+1:0)];
|
||||
hB = a6ZAL[c6ZAL-((c6ZAL > d6ZA)?d6ZA+1:0)];
|
||||
hC = a6ZBL[c6ZBL-((c6ZBL > d6ZB)?d6ZB+1:0)];
|
||||
hD = a6ZCL[c6ZCL-((c6ZCL > d6ZC)?d6ZC+1:0)];
|
||||
hE = a6ZDL[c6ZDL-((c6ZDL > d6ZD)?d6ZD+1:0)];
|
||||
hF = a6ZEL[c6ZEL-((c6ZEL > d6ZE)?d6ZE+1:0)];
|
||||
|
||||
double o6DR = a6DR[c6DR-((c6DR > d6D)?d6D+1:0)];
|
||||
double o6JR = a6JR[c6JR-((c6JR > d6J)?d6J+1:0)];
|
||||
double o6PR = a6PR[c6PR-((c6PR > d6P)?d6P+1:0)];
|
||||
double o6VR = a6VR[c6VR-((c6VR > d6V)?d6V+1:0)];
|
||||
double o6ZCR = a6ZCR[c6ZCR-((c6ZCR > d6ZC)?d6ZC+1:0)];
|
||||
double o6ZIR = a6ZIR[c6ZIR-((c6ZIR > d6ZI)?d6ZI+1:0)];
|
||||
a6ZFL[c6ZFL] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6ZGL[c6ZGL] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6ZHL[c6ZHL] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6ZIL[c6ZIL] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZJL[c6ZJL] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZKL[c6ZKL] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
//-------- three
|
||||
c6ZFL++; if (c6ZFL > d6ZF) c6ZFL = 0;
|
||||
c6ZGL++; if (c6ZGL > d6ZG) c6ZGL = 0;
|
||||
c6ZHL++; if (c6ZHL > d6ZH) c6ZHL = 0;
|
||||
c6ZIL++; if (c6ZIL > d6ZI) c6ZIL = 0;
|
||||
c6ZJL++; if (c6ZJL > d6ZJ) c6ZJL = 0;
|
||||
c6ZKL++; if (c6ZKL > d6ZK) c6ZKL = 0;
|
||||
|
||||
a6SL[c6SL] = ((o6ML*2.0) - (o6NL + o6OL + o6PL + o6QL + o6RL));
|
||||
a6TL[c6TL] = ((o6NL*2.0) - (o6ML + o6OL + o6PL + o6QL + o6RL));
|
||||
a6UL[c6UL] = ((o6OL*2.0) - (o6ML + o6NL + o6PL + o6QL + o6RL));
|
||||
a6VL[c6VL] = ((o6PL*2.0) - (o6ML + o6NL + o6OL + o6QL + o6RL));
|
||||
a6WL[c6WL] = ((o6QL*2.0) - (o6ML + o6NL + o6OL + o6PL + o6RL));
|
||||
a6XL[c6XL] = ((o6RL*2.0) - (o6ML + o6NL + o6OL + o6PL + o6QL));
|
||||
hA = a6ZFL[c6ZFL-((c6ZFL > d6ZF)?d6ZF+1:0)];
|
||||
hB = a6ZGL[c6ZGL-((c6ZGL > d6ZG)?d6ZG+1:0)];
|
||||
hC = a6ZHL[c6ZHL-((c6ZHL > d6ZH)?d6ZH+1:0)];
|
||||
hD = a6ZIL[c6ZIL-((c6ZIL > d6ZI)?d6ZI+1:0)];
|
||||
hE = a6ZJL[c6ZJL-((c6ZJL > d6ZJ)?d6ZJ+1:0)];
|
||||
hF = a6ZKL[c6ZKL-((c6ZKL > d6ZK)?d6ZK+1:0)];
|
||||
|
||||
c6SL++; if (c6SL < 0 || c6SL > d6S) c6SL = 0;
|
||||
c6TL++; if (c6TL < 0 || c6TL > d6T) c6TL = 0;
|
||||
c6UL++; if (c6UL < 0 || c6UL > d6U) c6UL = 0;
|
||||
c6VL++; if (c6VL < 0 || c6VL > d6V) c6VL = 0;
|
||||
c6WL++; if (c6WL < 0 || c6WL > d6W) c6WL = 0;
|
||||
c6XL++; if (c6XL < 0 || c6XL > d6X) c6XL = 0;
|
||||
f6FR = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
f6LR = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
f6RR = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
f6XR = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
f6ZER = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
f6ZKR = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
double o6SL = a6SL[c6SL-((c6SL > d6S)?d6S+1:0)];
|
||||
double o6TL = a6TL[c6TL-((c6TL > d6T)?d6T+1:0)];
|
||||
double o6UL = a6UL[c6UL-((c6UL > d6U)?d6U+1:0)];
|
||||
double o6VL = a6VL[c6VL-((c6VL > d6V)?d6V+1:0)];
|
||||
double o6WL = a6WL[c6WL-((c6WL > d6W)?d6W+1:0)];
|
||||
double o6XL = a6XL[c6XL-((c6XL > d6X)?d6X+1:0)];
|
||||
inputSampleL = ((hA*2.0) - (hB + hC + hD + hE + hF))*0.001953125;
|
||||
|
||||
a6CR[c6CR] = ((o6DR*2.0) - (o6JR + o6PR + o6VR + o6ZCR + o6ZIR));
|
||||
a6IR[c6IR] = ((o6JR*2.0) - (o6DR + o6PR + o6VR + o6ZCR + o6ZIR));
|
||||
a6OR[c6OR] = ((o6PR*2.0) - (o6DR + o6JR + o6VR + o6ZCR + o6ZIR));
|
||||
a6UR[c6UR] = ((o6VR*2.0) - (o6DR + o6JR + o6PR + o6ZCR + o6ZIR));
|
||||
a6ZBR[c6ZBR] = ((o6ZCR*2.0) - (o6DR + o6JR + o6PR + o6VR + o6ZIR));
|
||||
a6ZHR[c6ZHR] = ((o6ZIR*2.0) - (o6DR + o6JR + o6PR + o6VR + o6ZCR));
|
||||
//right verb
|
||||
|
||||
c6CR++; if (c6CR < 0 || c6CR > d6C) c6CR = 0;
|
||||
c6IR++; if (c6IR < 0 || c6IR > d6I) c6IR = 0;
|
||||
c6OR++; if (c6OR < 0 || c6OR > d6O) c6OR = 0;
|
||||
c6UR++; if (c6UR < 0 || c6UR > d6U) c6UR = 0;
|
||||
c6ZBR++; if (c6ZBR < 0 || c6ZBR > d6ZB) c6ZBR = 0;
|
||||
c6ZHR++; if (c6ZHR < 0 || c6ZHR > d6ZH) c6ZHR = 0;
|
||||
c6FR++; if (c6FR > d6F) c6FR = 0;
|
||||
c6LR++; if (c6LR > d6L) c6LR = 0;
|
||||
c6RR++; if (c6RR > d6R) c6RR = 0;
|
||||
c6XR++; if (c6XR > d6X) c6XR = 0;
|
||||
c6ZER++; if (c6ZER > d6ZE) c6ZER = 0;
|
||||
c6ZKR++; if (c6ZKR > d6ZK) c6ZKR = 0;
|
||||
|
||||
double o6CR = a6CR[c6CR-((c6CR > d6C)?d6C+1:0)];
|
||||
double o6IR = a6IR[c6IR-((c6IR > d6I)?d6I+1:0)];
|
||||
double o6OR = a6OR[c6OR-((c6OR > d6O)?d6O+1:0)];
|
||||
double o6UR = a6UR[c6UR-((c6UR > d6U)?d6U+1:0)];
|
||||
double o6ZBR = a6ZBR[c6ZBR-((c6ZBR > d6ZB)?d6ZB+1:0)];
|
||||
double o6ZHR = a6ZHR[c6ZHR-((c6ZHR > d6ZH)?d6ZH+1:0)];
|
||||
hA = a6FR[c6FR-((c6FR > d6F)?d6F+1:0)];
|
||||
hB = a6LR[c6LR-((c6LR > d6L)?d6L+1:0)];
|
||||
hC = a6RR[c6RR-((c6RR > d6R)?d6R+1:0)];
|
||||
hD = a6XR[c6XR-((c6XR > d6X)?d6X+1:0)];
|
||||
hE = a6ZER[c6ZER-((c6ZER > d6ZE)?d6ZE+1:0)];
|
||||
hF = a6ZKR[c6ZKR-((c6ZKR > d6ZK)?d6ZK+1:0)];
|
||||
|
||||
a6ER[c6ER] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6KR[c6KR] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6QR[c6QR] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6WR[c6WR] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZDR[c6ZDR] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZJR[c6ZJR] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
//-------- four
|
||||
c6ER++; if (c6ER > d6E) c6ER = 0;
|
||||
c6KR++; if (c6KR > d6K) c6KR = 0;
|
||||
c6QR++; if (c6QR > d6Q) c6QR = 0;
|
||||
c6WR++; if (c6WR > d6W) c6WR = 0;
|
||||
c6ZDR++; if (c6ZDR > d6ZD) c6ZDR = 0;
|
||||
c6ZJR++; if (c6ZJR > d6ZJ) c6ZJR = 0;
|
||||
|
||||
a6YL[c6YL] = ((o6SL*2.0) - (o6TL + o6UL + o6VL + o6WL + o6XL));
|
||||
a6ZAL[c6ZAL] = ((o6TL*2.0) - (o6SL + o6UL + o6VL + o6WL + o6XL));
|
||||
a6ZBL[c6ZBL] = ((o6UL*2.0) - (o6SL + o6TL + o6VL + o6WL + o6XL));
|
||||
a6ZCL[c6ZCL] = ((o6VL*2.0) - (o6SL + o6TL + o6UL + o6WL + o6XL));
|
||||
a6ZDL[c6ZDL] = ((o6WL*2.0) - (o6SL + o6TL + o6UL + o6VL + o6XL));
|
||||
a6ZEL[c6ZEL] = ((o6XL*2.0) - (o6SL + o6TL + o6UL + o6VL + o6WL));
|
||||
hA = a6ER[c6ER-((c6ER > d6E)?d6E+1:0)];
|
||||
hB = a6KR[c6KR-((c6KR > d6K)?d6K+1:0)];
|
||||
hC = a6QR[c6QR-((c6QR > d6Q)?d6Q+1:0)];
|
||||
hD = a6WR[c6WR-((c6WR > d6W)?d6W+1:0)];
|
||||
hE = a6ZDR[c6ZDR-((c6ZDR > d6ZD)?d6ZD+1:0)];
|
||||
hF = a6ZJR[c6ZJR-((c6ZJR > d6ZJ)?d6ZJ+1:0)];
|
||||
|
||||
a6DR[c6DR] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6JR[c6JR] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6PR[c6PR] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6VR[c6VR] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZCR[c6ZCR] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZIR[c6ZIR] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
c6YL++; if (c6YL < 0 || c6YL > d6Y) c6YL = 0;
|
||||
c6ZAL++; if (c6ZAL < 0 || c6ZAL > d6ZA) c6ZAL = 0;
|
||||
c6ZBL++; if (c6ZBL < 0 || c6ZBL > d6ZB) c6ZBL = 0;
|
||||
c6ZCL++; if (c6ZCL < 0 || c6ZCL > d6ZC) c6ZCL = 0;
|
||||
c6ZDL++; if (c6ZDL < 0 || c6ZDL > d6ZD) c6ZDL = 0;
|
||||
c6ZEL++; if (c6ZEL < 0 || c6ZEL > d6ZE) c6ZEL = 0;
|
||||
c6DR++; if (c6DR > d6D) c6DR = 0;
|
||||
c6JR++; if (c6JR > d6J) c6JR = 0;
|
||||
c6PR++; if (c6PR > d6P) c6PR = 0;
|
||||
c6VR++; if (c6VR > d6V) c6VR = 0;
|
||||
c6ZCR++; if (c6ZCR > d6ZC) c6ZCR = 0;
|
||||
c6ZIR++; if (c6ZIR > d6ZI) c6ZIR = 0;
|
||||
|
||||
double o6YL = a6YL[c6YL-((c6YL > d6Y)?d6Y+1:0)];
|
||||
double o6ZAL = a6ZAL[c6ZAL-((c6ZAL > d6ZA)?d6ZA+1:0)];
|
||||
double o6ZBL = a6ZBL[c6ZBL-((c6ZBL > d6ZB)?d6ZB+1:0)];
|
||||
double o6ZCL = a6ZCL[c6ZCL-((c6ZCL > d6ZC)?d6ZC+1:0)];
|
||||
double o6ZDL = a6ZDL[c6ZDL-((c6ZDL > d6ZD)?d6ZD+1:0)];
|
||||
double o6ZEL = a6ZEL[c6ZEL-((c6ZEL > d6ZE)?d6ZE+1:0)];
|
||||
hA = a6DR[c6DR-((c6DR > d6D)?d6D+1:0)];
|
||||
hB = a6JR[c6JR-((c6JR > d6J)?d6J+1:0)];
|
||||
hC = a6PR[c6PR-((c6PR > d6P)?d6P+1:0)];
|
||||
hD = a6VR[c6VR-((c6VR > d6V)?d6V+1:0)];
|
||||
hE = a6ZCR[c6ZCR-((c6ZCR > d6ZC)?d6ZC+1:0)];
|
||||
hF = a6ZIR[c6ZIR-((c6ZIR > d6ZI)?d6ZI+1:0)];
|
||||
|
||||
a6CR[c6CR] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6IR[c6IR] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6OR[c6OR] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6UR[c6UR] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZBR[c6ZBR] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZHR[c6ZHR] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
a6BR[c6BR] = ((o6CR*2.0) - (o6IR + o6OR + o6UR + o6ZBR + o6ZHR));
|
||||
a6HR[c6HR] = ((o6IR*2.0) - (o6CR + o6OR + o6UR + o6ZBR + o6ZHR));
|
||||
a6NR[c6NR] = ((o6OR*2.0) - (o6CR + o6IR + o6UR + o6ZBR + o6ZHR));
|
||||
a6TR[c6TR] = ((o6UR*2.0) - (o6CR + o6IR + o6OR + o6ZBR + o6ZHR));
|
||||
a6ZAR[c6ZAR] = ((o6ZBR*2.0) - (o6CR + o6IR + o6OR + o6UR + o6ZHR));
|
||||
a6ZGR[c6ZGR] = ((o6ZHR*2.0) - (o6CR + o6IR + o6OR + o6UR + o6ZBR));
|
||||
c6CR++; if (c6CR > d6C) c6CR = 0;
|
||||
c6IR++; if (c6IR > d6I) c6IR = 0;
|
||||
c6OR++; if (c6OR > d6O) c6OR = 0;
|
||||
c6UR++; if (c6UR > d6U) c6UR = 0;
|
||||
c6ZBR++; if (c6ZBR > d6ZB) c6ZBR = 0;
|
||||
c6ZHR++; if (c6ZHR > d6ZH) c6ZHR = 0;
|
||||
|
||||
c6BR++; if (c6BR < 0 || c6BR > d6B) c6BR = 0;
|
||||
c6HR++; if (c6HR < 0 || c6HR > d6H) c6HR = 0;
|
||||
c6NR++; if (c6NR < 0 || c6NR > d6N) c6NR = 0;
|
||||
c6TR++; if (c6TR < 0 || c6TR > d6T) c6TR = 0;
|
||||
c6ZBR++; if (c6ZBR < 0 || c6ZBR > d6ZB) c6ZBR = 0;
|
||||
c6ZGR++; if (c6ZGR < 0 || c6ZGR > d6ZG) c6ZGR = 0;
|
||||
hA = a6CR[c6CR-((c6CR > d6C)?d6C+1:0)];
|
||||
hB = a6IR[c6IR-((c6IR > d6I)?d6I+1:0)];
|
||||
hC = a6OR[c6OR-((c6OR > d6O)?d6O+1:0)];
|
||||
hD = a6UR[c6UR-((c6UR > d6U)?d6U+1:0)];
|
||||
hE = a6ZBR[c6ZBR-((c6ZBR > d6ZB)?d6ZB+1:0)];
|
||||
hF = a6ZHR[c6ZHR-((c6ZHR > d6ZH)?d6ZH+1:0)];
|
||||
|
||||
a6BR[c6BR] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6HR[c6HR] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6NR[c6NR] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6TR[c6TR] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6ZAR[c6ZAR] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZGR[c6ZGR] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
double o6BR = a6BR[c6BR-((c6BR > d6B)?d6B+1:0)];
|
||||
double o6HR = a6HR[c6HR-((c6HR > d6H)?d6H+1:0)];
|
||||
double o6NR = a6NR[c6NR-((c6NR > d6N)?d6N+1:0)];
|
||||
double o6TR = a6TR[c6TR-((c6TR > d6T)?d6T+1:0)];
|
||||
double o6ZAR = a6ZAR[c6ZAR-((c6ZAR > d6ZA)?d6ZA+1:0)];
|
||||
double o6ZGR = a6ZGR[c6ZGR-((c6ZGR > d6ZG)?d6ZG+1:0)];
|
||||
c6BR++; if (c6BR > d6B) c6BR = 0;
|
||||
c6HR++; if (c6HR > d6H) c6HR = 0;
|
||||
c6NR++; if (c6NR > d6N) c6NR = 0;
|
||||
c6TR++; if (c6TR > d6T) c6TR = 0;
|
||||
c6ZBR++; if (c6ZBR > d6ZB) c6ZBR = 0;
|
||||
c6ZGR++; if (c6ZGR > d6ZG) c6ZGR = 0;
|
||||
|
||||
//-------- five
|
||||
hA = a6BR[c6BR-((c6BR > d6B)?d6B+1:0)];
|
||||
hB = a6HR[c6HR-((c6HR > d6H)?d6H+1:0)];
|
||||
hC = a6NR[c6NR-((c6NR > d6N)?d6N+1:0)];
|
||||
hD = a6TR[c6TR-((c6TR > d6T)?d6T+1:0)];
|
||||
hE = a6ZAR[c6ZAR-((c6ZAR > d6ZA)?d6ZA+1:0)];
|
||||
hF = a6ZGR[c6ZGR-((c6ZGR > d6ZG)?d6ZG+1:0)];
|
||||
|
||||
a6AR[c6AR] = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
a6GR[c6GR] = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
a6MR[c6MR] = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
a6SR[c6SR] = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
a6YR[c6YR] = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
a6ZFR[c6ZFR] = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
a6ZFL[c6ZFL] = ((o6YL*2.0) - (o6ZAL + o6ZBL + o6ZCL + o6ZDL + o6ZEL));
|
||||
a6ZGL[c6ZGL] = ((o6ZAL*2.0) - (o6YL + o6ZBL + o6ZCL + o6ZDL + o6ZEL));
|
||||
a6ZHL[c6ZHL] = ((o6ZBL*2.0) - (o6YL + o6ZAL + o6ZCL + o6ZDL + o6ZEL));
|
||||
a6ZIL[c6ZIL] = ((o6ZCL*2.0) - (o6YL + o6ZAL + o6ZBL + o6ZDL + o6ZEL));
|
||||
a6ZJL[c6ZJL] = ((o6ZDL*2.0) - (o6YL + o6ZAL + o6ZBL + o6ZCL + o6ZEL));
|
||||
a6ZKL[c6ZKL] = ((o6ZEL*2.0) - (o6YL + o6ZAL + o6ZBL + o6ZCL + o6ZDL));
|
||||
c6AR++; if (c6AR > d6A) c6AR = 0;
|
||||
c6GR++; if (c6GR > d6G) c6GR = 0;
|
||||
c6MR++; if (c6MR > d6M) c6MR = 0;
|
||||
c6SR++; if (c6SR > d6S) c6SR = 0;
|
||||
c6YR++; if (c6YR > d6Y) c6YR = 0;
|
||||
c6ZFR++; if (c6ZFR > d6ZF) c6ZFR = 0;
|
||||
|
||||
c6ZFL++; if (c6ZFL < 0 || c6ZFL > d6ZF) c6ZFL = 0;
|
||||
c6ZGL++; if (c6ZGL < 0 || c6ZGL > d6ZG) c6ZGL = 0;
|
||||
c6ZHL++; if (c6ZHL < 0 || c6ZHL > d6ZH) c6ZHL = 0;
|
||||
c6ZIL++; if (c6ZIL < 0 || c6ZIL > d6ZI) c6ZIL = 0;
|
||||
c6ZJL++; if (c6ZJL < 0 || c6ZJL > d6ZJ) c6ZJL = 0;
|
||||
c6ZKL++; if (c6ZKL < 0 || c6ZKL > d6ZK) c6ZKL = 0;
|
||||
hA = a6AR[c6AR-((c6AR > d6A)?d6A+1:0)];
|
||||
hB = a6GR[c6GR-((c6GR > d6G)?d6G+1:0)];
|
||||
hC = a6MR[c6MR-((c6MR > d6M)?d6M+1:0)];
|
||||
hD = a6SR[c6SR-((c6SR > d6S)?d6S+1:0)];
|
||||
hE = a6YR[c6YR-((c6YR > d6Y)?d6Y+1:0)];
|
||||
hF = a6ZFR[c6ZFR-((c6ZFR > d6ZF)?d6ZF+1:0)];
|
||||
|
||||
f6AL = ((hA*2.0) - (hB + hC + hD + hE + hF));
|
||||
f6BL = ((hB*2.0) - (hA + hC + hD + hE + hF));
|
||||
f6CL = ((hC*2.0) - (hA + hB + hD + hE + hF));
|
||||
f6DL = ((hD*2.0) - (hA + hB + hC + hE + hF));
|
||||
f6EL = ((hE*2.0) - (hA + hB + hC + hD + hF));
|
||||
f6FL = ((hF*2.0) - (hA + hB + hC + hD + hE));
|
||||
|
||||
double o6ZFL = a6ZFL[c6ZFL-((c6ZFL > d6ZF)?d6ZF+1:0)];
|
||||
double o6ZGL = a6ZGL[c6ZGL-((c6ZGL > d6ZG)?d6ZG+1:0)];
|
||||
double o6ZHL = a6ZHL[c6ZHL-((c6ZHL > d6ZH)?d6ZH+1:0)];
|
||||
double o6ZIL = a6ZIL[c6ZIL-((c6ZIL > d6ZI)?d6ZI+1:0)];
|
||||
double o6ZJL = a6ZJL[c6ZJL-((c6ZJL > d6ZJ)?d6ZJ+1:0)];
|
||||
double o6ZKL = a6ZKL[c6ZKL-((c6ZKL > d6ZK)?d6ZK+1:0)];
|
||||
inputSampleR = ((hA*2.0) - (hB + hC + hD + hE + hF))*0.001953125;
|
||||
|
||||
a6AR[c6AR] = ((o6BR*2.0) - (o6HR + o6NR + o6TR + o6ZAR + o6ZGR));
|
||||
a6GR[c6GR] = ((o6HR*2.0) - (o6BR + o6NR + o6TR + o6ZAR + o6ZGR));
|
||||
a6MR[c6MR] = ((o6NR*2.0) - (o6BR + o6HR + o6TR + o6ZAR + o6ZGR));
|
||||
a6SR[c6SR] = ((o6TR*2.0) - (o6BR + o6HR + o6NR + o6ZAR + o6ZGR));
|
||||
a6YR[c6YR] = ((o6ZAR*2.0) - (o6BR + o6HR + o6NR + o6TR + o6ZGR));
|
||||
a6ZFR[c6ZFR] = ((o6ZGR*2.0) - (o6BR + o6HR + o6NR + o6TR + o6ZAR));
|
||||
bezF[bez_cycle] += derezFreq;
|
||||
bezF[bez_SampL] += (inputSampleL * derezFreq);
|
||||
bezF[bez_SampR] += (inputSampleR * derezFreq);
|
||||
if (bezF[bez_cycle] > 1.0) { //hit the end point and we do a filter sample
|
||||
if (steppedFreq) bezF[bez_cycle] = 0.0;
|
||||
else bezF[bez_cycle] -= 1.0;
|
||||
bezF[bez_CL] = bezF[bez_BL];
|
||||
bezF[bez_BL] = bezF[bez_AL];
|
||||
bezF[bez_AL] = (bezF[bez_SampL]);
|
||||
bezF[bez_SampL] = 0.0;
|
||||
bezF[bez_CR] = bezF[bez_BR];
|
||||
bezF[bez_BR] = bezF[bez_AR];
|
||||
bezF[bez_AR] = (bezF[bez_SampR]);
|
||||
bezF[bez_SampR] = 0.0;
|
||||
}
|
||||
double X = bezF[bez_cycle]*bezFreqTrim;
|
||||
double CBLfreq = (bezF[bez_CL]*(1.0-X))+(bezF[bez_BL]*X);
|
||||
double BALfreq = (bezF[bez_BL]*(1.0-X))+(bezF[bez_AL]*X);
|
||||
inputSampleL = (bezF[bez_BL]+(CBLfreq*(1.0-X))+(BALfreq*X))*0.125;
|
||||
double CBRfreq = (bezF[bez_CR]*(1.0-X))+(bezF[bez_BR]*X);
|
||||
double BARfreq = (bezF[bez_BR]*(1.0-X))+(bezF[bez_AR]*X);
|
||||
inputSampleR = (bezF[bez_BR]+(CBRfreq*(1.0-X))+(BARfreq*X))*0.125;
|
||||
|
||||
c6AR++; if (c6AR < 0 || c6AR > d6A) c6AR = 0;
|
||||
c6GR++; if (c6GR < 0 || c6GR > d6G) c6GR = 0;
|
||||
c6MR++; if (c6MR < 0 || c6MR > d6M) c6MR = 0;
|
||||
c6SR++; if (c6SR < 0 || c6SR > d6S) c6SR = 0;
|
||||
c6YR++; if (c6YR < 0 || c6YR > d6Y) c6YR = 0;
|
||||
c6ZFR++; if (c6ZFR < 0 || c6ZFR > d6ZF) c6ZFR = 0;
|
||||
|
||||
double o6AR = a6AR[c6AR-((c6AR > d6A)?d6A+1:0)];
|
||||
double o6GR = a6GR[c6GR-((c6GR > d6G)?d6G+1:0)];
|
||||
double o6MR = a6MR[c6MR-((c6MR > d6M)?d6M+1:0)];
|
||||
double o6SR = a6SR[c6SR-((c6SR > d6S)?d6S+1:0)];
|
||||
double o6YR = a6YR[c6YR-((c6YR > d6Y)?d6Y+1:0)];
|
||||
double o6ZFR = a6ZFR[c6ZFR-((c6ZFR > d6ZF)?d6ZF+1:0)];
|
||||
|
||||
//-------- six
|
||||
|
||||
f6AL = ((o6AR*2.0) - (o6GR + o6MR + o6SR + o6YR + o6ZFR));
|
||||
f6BL = ((o6GR*2.0) - (o6AR + o6MR + o6SR + o6YR + o6ZFR));
|
||||
f6CL = ((o6MR*2.0) - (o6AR + o6GR + o6SR + o6YR + o6ZFR));
|
||||
f6DL = ((o6SR*2.0) - (o6AR + o6GR + o6MR + o6YR + o6ZFR));
|
||||
f6EL = ((o6YR*2.0) - (o6AR + o6GR + o6MR + o6SR + o6ZFR));
|
||||
f6FL = ((o6ZFR*2.0) - (o6AR + o6GR + o6MR + o6SR + o6YR));
|
||||
|
||||
f6FR = ((o6ZFL*2.0) - (o6ZGL + o6ZHL + o6ZIL + o6ZJL + o6ZKL));
|
||||
f6LR = ((o6ZGL*2.0) - (o6ZFL + o6ZHL + o6ZIL + o6ZJL + o6ZKL));
|
||||
f6RR = ((o6ZHL*2.0) - (o6ZFL + o6ZGL + o6ZIL + o6ZJL + o6ZKL));
|
||||
f6XR = ((o6ZIL*2.0) - (o6ZFL + o6ZGL + o6ZHL + o6ZJL + o6ZKL));
|
||||
f6ZER = ((o6ZJL*2.0) - (o6ZFL + o6ZGL + o6ZHL + o6ZIL + o6ZKL));
|
||||
f6ZKR = ((o6ZKL*2.0) - (o6ZFL + o6ZGL + o6ZHL + o6ZIL + o6ZJL));
|
||||
|
||||
inputSampleL = (o6ZFL + o6ZGL + o6ZHL + o6ZIL + o6ZJL + o6ZKL)*0.001953125;
|
||||
inputSampleR = (o6AR + o6GR + o6MR + o6SR + o6YR + o6ZFR)*0.001953125;
|
||||
|
||||
f6AL = (f6AL+avg6L)*0.5; avg6L = f6AL;
|
||||
f6FR = (f6FR+avg6R)*0.5; avg6R = f6FR;
|
||||
//manipulating deep reverb tail for realism
|
||||
inputSampleL = bezF[bez_IIRL] = (inputSampleL*derezFreq)+(bezF[bez_IIRL]*(1.0-derezFreq));
|
||||
inputSampleR = bezF[bez_IIRR] = (inputSampleR*derezFreq)+(bezF[bez_IIRR]*(1.0-derezFreq));
|
||||
|
||||
inputSampleL += (earlyReflectionL * earlyLoudness);
|
||||
inputSampleR += (earlyReflectionR * earlyLoudness);
|
||||
|
|
@ -774,10 +758,11 @@ OSStatus kWoodRoom::ProcessBufferLists(AudioUnitRenderActionFlags & ioActionFla
|
|||
double CBR = (bez[bez_CR]*(1.0-X))+(bez[bez_BR]*X);
|
||||
double BAL = (bez[bez_BL]*(1.0-X))+(bez[bez_AL]*X);
|
||||
double BAR = (bez[bez_BR]*(1.0-X))+(bez[bez_AR]*X);
|
||||
double CBAL = (bez[bez_BL]+(CBL*(1.0-X))+(BAL*X))*-0.0625;
|
||||
double CBAR = (bez[bez_BR]+(CBR*(1.0-X))+(BAR*X))*-0.0625;
|
||||
inputSampleL = CBAL+bez[bez_AvgOutSampL]; bez[bez_AvgOutSampL] = CBAL;
|
||||
inputSampleR = CBAR+bez[bez_AvgOutSampR]; bez[bez_AvgOutSampR] = CBAR;
|
||||
inputSampleL = (bez[bez_BL]+(CBL*(1.0-X))+(BAL*X))*-0.25;
|
||||
inputSampleR = (bez[bez_BR]+(CBR*(1.0-X))+(BAR*X))*-0.25;
|
||||
|
||||
inputSampleL = bez[bez_IIRL] = (inputSampleL*derez)+(bez[bez_IIRL]*(1.0-derez));
|
||||
inputSampleR = bez[bez_IIRR] = (inputSampleR*derez)+(bez[bez_IIRR]*(1.0-derez));
|
||||
|
||||
inputSampleL = (inputSampleL * wet)+(drySampleL * (1.0-wet));
|
||||
inputSampleR = (inputSampleR * wet)+(drySampleR * (1.0-wet));
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ static const float kDefaultValue_ParamA = 0.5;
|
|||
static const float kDefaultValue_ParamB = 0.5;
|
||||
static const float kDefaultValue_ParamC = 0.25;
|
||||
static const float kDefaultValue_ParamD = 0.5;
|
||||
static const float kDefaultValue_ParamE = 0.5;
|
||||
static const float kDefaultValue_ParamE = 0.75;
|
||||
static const float kDefaultValue_ParamF = 0.5;
|
||||
|
||||
static CFStringRef kParameterAName = CFSTR("Regen");
|
||||
|
|
@ -243,16 +243,10 @@ public:
|
|||
bez_BR,
|
||||
bez_CL,
|
||||
bez_CR,
|
||||
bez_InL,
|
||||
bez_InR,
|
||||
bez_UnInL,
|
||||
bez_UnInR,
|
||||
bez_SampL,
|
||||
bez_SampR,
|
||||
bez_AvgInSampL,
|
||||
bez_AvgInSampR,
|
||||
bez_AvgOutSampL,
|
||||
bez_AvgOutSampR,
|
||||
bez_IIRL,
|
||||
bez_IIRR,
|
||||
bez_cycle,
|
||||
bez_total
|
||||
}; //the new undersampling. bez signifies the bezier curve reconstruction
|
||||
|
|
|
|||
|
|
@ -49,34 +49,54 @@
|
|||
PBXFileDataSource_Warnings_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 783773359;
|
||||
PBXWorkspaceStateSaveDate = 783773359;
|
||||
PBXPerProjectTemplateStateSaveDate = 785939992;
|
||||
PBXWorkspaceStateSaveDate = 785939992;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B2829512EB7764F003789A7 /* PBXTextBookmark */ = 8B2829512EB7764F003789A7 /* PBXTextBookmark */;
|
||||
8BD128442EB6E2C500B339E5 /* PBXTextBookmark */ = 8BD128442EB6E2C500B339E5 /* PBXTextBookmark */;
|
||||
8BD128462EB6E2C500B339E5 /* PBXTextBookmark */ = 8BD128462EB6E2C500B339E5 /* PBXTextBookmark */;
|
||||
8B3D228A2ED87DA50020B133 /* PBXTextBookmark */ = 8B3D228A2ED87DA50020B133 /* PBXTextBookmark */;
|
||||
8B3D22A82ED8812F0020B133 /* PBXTextBookmark */ = 8B3D22A82ED8812F0020B133 /* PBXTextBookmark */;
|
||||
8B7D6DA42EBD2313000B38FA /* PBXTextBookmark */ = 8B7D6DA42EBD2313000B38FA /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B2829512EB7764F003789A7 /* PBXTextBookmark */ = {
|
||||
8B3D228A2ED87DA50020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* kWoodRoom.cpp */;
|
||||
name = "kWoodRoom.cpp: 434";
|
||||
rLen = 0;
|
||||
rLoc = 19878;
|
||||
rType = 0;
|
||||
vrLen = 128;
|
||||
vrLoc = 20185;
|
||||
};
|
||||
8B3D22A82ED8812F0020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* kWoodRoom.cpp */;
|
||||
name = "kWoodRoom.cpp: 434";
|
||||
rLen = 0;
|
||||
rLoc = 19878;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8B7D6DA42EBD2313000B38FA /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* kWoodRoom.h */;
|
||||
name = "kWoodRoom.h: 88";
|
||||
rLen = 0;
|
||||
rLoc = 4838;
|
||||
rLoc = 4839;
|
||||
rType = 0;
|
||||
vrLen = 1065;
|
||||
vrLoc = 3804;
|
||||
vrLen = 283;
|
||||
vrLoc = 4586;
|
||||
};
|
||||
8BA05A660720730100365D66 /* kWoodRoom.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {939, 14634}}";
|
||||
sepNavSelRange = "{35694, 84}";
|
||||
sepNavVisRange = "{21092, 1777}";
|
||||
sepNavWindowFrame = "{{7, 52}, {912, 826}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {554, 13878}}";
|
||||
sepNavSelRange = "{19878, 0}";
|
||||
sepNavVisRange = "{0, 0}";
|
||||
sepNavWindowFrame = "{{10, 38}, {792, 840}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* kWoodRoomVersion.h */ = {
|
||||
|
|
@ -96,32 +116,12 @@
|
|||
};
|
||||
8BC6025B073B072D006C4272 /* kWoodRoom.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {7041, 4446}}";
|
||||
sepNavSelRange = "{4838, 0}";
|
||||
sepNavVisRange = "{3804, 1065}";
|
||||
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 5634}}";
|
||||
sepNavSelRange = "{9111, 0}";
|
||||
sepNavVisRange = "{8573, 970}";
|
||||
sepNavWindowFrame = "{{33, 38}, {912, 826}}";
|
||||
};
|
||||
};
|
||||
8BD128442EB6E2C500B339E5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* kWoodRoom.cpp */;
|
||||
name = "kWoodRoom.cpp: 472";
|
||||
rLen = 0;
|
||||
rLoc = 22228;
|
||||
rType = 0;
|
||||
vrLen = 184;
|
||||
vrLoc = 22080;
|
||||
};
|
||||
8BD128462EB6E2C500B339E5 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* kWoodRoom.h */;
|
||||
name = "kWoodRoom.h: 88";
|
||||
rLen = 0;
|
||||
rLoc = 4838;
|
||||
rType = 0;
|
||||
vrLen = 1065;
|
||||
vrLoc = 3804;
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
|
|
|
|||
|
|
@ -324,7 +324,7 @@
|
|||
<real>185</real>
|
||||
</array>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>27 248 810 487 0 0 1440 878 </string>
|
||||
<string>39 161 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXSmartGroupTreeModule</string>
|
||||
|
|
@ -340,7 +340,7 @@
|
|||
<key>PBXProjectModuleGUID</key>
|
||||
<string>8B47D35B2EB6C9600017457B</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>kWoodRoom.h</string>
|
||||
<string>kWoodRoom.cpp</string>
|
||||
<key>PBXSplitModuleInNavigatorKey</key>
|
||||
<dict>
|
||||
<key>Split0</key>
|
||||
|
|
@ -348,15 +348,15 @@
|
|||
<key>PBXProjectModuleGUID</key>
|
||||
<string>8B47D35C2EB6C9600017457B</string>
|
||||
<key>PBXProjectModuleLabel</key>
|
||||
<string>kWoodRoom.h</string>
|
||||
<string>kWoodRoom.cpp</string>
|
||||
<key>_historyCapacity</key>
|
||||
<integer>0</integer>
|
||||
<key>bookmark</key>
|
||||
<string>8B2829512EB7764F003789A7</string>
|
||||
<string>8B3D22A82ED8812F0020B133</string>
|
||||
<key>history</key>
|
||||
<array>
|
||||
<string>8BD128442EB6E2C500B339E5</string>
|
||||
<string>8BD128462EB6E2C500B339E5</string>
|
||||
<string>8B7D6DA42EBD2313000B38FA</string>
|
||||
<string>8B3D228A2ED87DA50020B133</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>SplitCount</key>
|
||||
|
|
@ -370,18 +370,18 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{0, 0}, {603, 102}}</string>
|
||||
<string>{{0, 0}, {603, 32}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>27 248 810 487 0 0 1440 878 </string>
|
||||
<string>39 161 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXNavigatorGroup</string>
|
||||
<key>Proportion</key>
|
||||
<string>102pt</string>
|
||||
<string>32pt</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>Proportion</key>
|
||||
<string>339pt</string>
|
||||
<string>409pt</string>
|
||||
<key>Tabs</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
@ -395,9 +395,9 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {603, 312}}</string>
|
||||
<string>{{10, 27}, {603, 382}}</string>
|
||||
<key>RubberWindowFrame</key>
|
||||
<string>27 248 810 487 0 0 1440 878 </string>
|
||||
<string>39 161 810 487 0 0 1440 878 </string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>XCDetailModule</string>
|
||||
|
|
@ -451,7 +451,7 @@
|
|||
<key>GeometryConfiguration</key>
|
||||
<dict>
|
||||
<key>Frame</key>
|
||||
<string>{{10, 27}, {603, 414}}</string>
|
||||
<string>{{10, 27}, {603, 363}}</string>
|
||||
</dict>
|
||||
<key>Module</key>
|
||||
<string>PBXBuildResultsModule</string>
|
||||
|
|
@ -479,11 +479,11 @@
|
|||
</array>
|
||||
<key>TableOfContents</key>
|
||||
<array>
|
||||
<string>8B2829522EB7764F003789A7</string>
|
||||
<string>8B3D22A92ED8812F0020B133</string>
|
||||
<string>1CA23ED40692098700951B8B</string>
|
||||
<string>8B2829532EB7764F003789A7</string>
|
||||
<string>8B3D22AA2ED8812F0020B133</string>
|
||||
<string>8B47D35B2EB6C9600017457B</string>
|
||||
<string>8B2829542EB7764F003789A7</string>
|
||||
<string>8B3D22AB2ED8812F0020B133</string>
|
||||
<string>1CA23EDF0692099D00951B8B</string>
|
||||
<string>1CA23EE00692099D00951B8B</string>
|
||||
<string>1CA23EE10692099D00951B8B</string>
|
||||
|
|
@ -636,7 +636,7 @@
|
|||
<key>StatusbarIsVisible</key>
|
||||
<true/>
|
||||
<key>TimeStamp</key>
|
||||
<real>783775311.75096202</real>
|
||||
<real>785940783.33895898</real>
|
||||
<key>ToolbarConfigUserDefaultsMinorVersion</key>
|
||||
<string>2</string>
|
||||
<key>ToolbarDisplayMode</key>
|
||||
|
|
@ -653,11 +653,11 @@
|
|||
<integer>5</integer>
|
||||
<key>WindowOrderList</key>
|
||||
<array>
|
||||
<string>8B2829552EB7764F003789A7</string>
|
||||
<string>8B3D22AC2ED8812F0020B133</string>
|
||||
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/kWoodRoom/kWoodRoom.xcodeproj</string>
|
||||
</array>
|
||||
<key>WindowString</key>
|
||||
<string>27 248 810 487 0 0 1440 878 </string>
|
||||
<string>39 161 810 487 0 0 1440 878 </string>
|
||||
<key>WindowToolsV3</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
|
|
|||
355
plugins/MacSignedAU/BitDualPan/BitDualPan.cpp
Executable file
355
plugins/MacSignedAU/BitDualPan/BitDualPan.cpp
Executable file
|
|
@ -0,0 +1,355 @@
|
|||
/*
|
||||
* File: BitDualPan.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
BitDualPan.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "BitDualPan.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
AUDIOCOMPONENT_ENTRY(AUBaseFactory, BitDualPan)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::BitDualPan
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
BitDualPan::BitDualPan(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
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::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;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::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 BitDualPan::SupportedNumChannels(const AUChannelInfo ** outInfo)
|
||||
{
|
||||
if (outInfo != NULL)
|
||||
{
|
||||
static AUChannelInfo info;
|
||||
info.inChannels = 2;
|
||||
info.outChannels = 2;
|
||||
*outInfo = &info;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// BitDualPan::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____BitDualPanEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::BitDualPanKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult BitDualPan::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
|
||||
{
|
||||
return noErr;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// BitDualPan::ProcessBufferLists
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OSStatus BitDualPan::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 gainControl = (GetParameter( kParam_A )*0.5)+0.05; //0.0 to 1.0
|
||||
int gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
int bitshiftL = gainBits - 3;
|
||||
int bitshiftR = gainBits - 3;
|
||||
double panControl = (GetParameter( kParam_B )*2.0)-1.0; //-1.0 to 1.0
|
||||
double panAttenuation = (1.0-fabs(panControl));
|
||||
int panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double LgainL = 1.0;
|
||||
double LgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: LgainL = 0.0; break;
|
||||
case 16: LgainL = 0.0000152587890625; break;
|
||||
case 15: LgainL = 0.000030517578125; break;
|
||||
case 14: LgainL = 0.00006103515625; break;
|
||||
case 13: LgainL = 0.0001220703125; break;
|
||||
case 12: LgainL = 0.000244140625; break;
|
||||
case 11: LgainL = 0.00048828125; break;
|
||||
case 10: LgainL = 0.0009765625; break;
|
||||
case 9: LgainL = 0.001953125; break;
|
||||
case 8: LgainL = 0.00390625; break;
|
||||
case 7: LgainL = 0.0078125; break;
|
||||
case 6: LgainL = 0.015625; break;
|
||||
case 5: LgainL = 0.03125; break;
|
||||
case 4: LgainL = 0.0625; break;
|
||||
case 3: LgainL = 0.125; break;
|
||||
case 2: LgainL = 0.25; break;
|
||||
case 1: LgainL = 0.5; break;
|
||||
case 0: LgainL = 1.0; break;
|
||||
case -1: LgainL = 2.0; break;
|
||||
case -2: LgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: LgainR = 0.0; break;
|
||||
case 16: LgainR = 0.0000152587890625; break;
|
||||
case 15: LgainR = 0.000030517578125; break;
|
||||
case 14: LgainR = 0.00006103515625; break;
|
||||
case 13: LgainR = 0.0001220703125; break;
|
||||
case 12: LgainR = 0.000244140625; break;
|
||||
case 11: LgainR = 0.00048828125; break;
|
||||
case 10: LgainR = 0.0009765625; break;
|
||||
case 9: LgainR = 0.001953125; break;
|
||||
case 8: LgainR = 0.00390625; break;
|
||||
case 7: LgainR = 0.0078125; break;
|
||||
case 6: LgainR = 0.015625; break;
|
||||
case 5: LgainR = 0.03125; break;
|
||||
case 4: LgainR = 0.0625; break;
|
||||
case 3: LgainR = 0.125; break;
|
||||
case 2: LgainR = 0.25; break;
|
||||
case 1: LgainR = 0.5; break;
|
||||
case 0: LgainR = 1.0; break;
|
||||
case -1: LgainR = 2.0; break;
|
||||
case -2: LgainR = 4.0; break;
|
||||
}
|
||||
|
||||
gainControl = (GetParameter( kParam_C )*0.5)+0.05; //0.0 to 1.0
|
||||
gainBits = 20; //start beyond maximum attenuation
|
||||
if (gainControl > 0.0) gainBits = floor(1.0 / gainControl);
|
||||
bitshiftL = gainBits - 3;
|
||||
bitshiftR = gainBits - 3;
|
||||
panControl = (GetParameter( kParam_D )*2.0)-1.0; //-1.0 to 1.0
|
||||
panAttenuation = (1.0-fabs(panControl));
|
||||
panBits = 20; //start centered
|
||||
if (panAttenuation > 0.0) panBits = floor(1.0 / panAttenuation);
|
||||
if (panControl > 0.25) bitshiftL += panBits;
|
||||
if (panControl < -0.25) bitshiftR += panBits;
|
||||
if (bitshiftL < -2) bitshiftL = -2; if (bitshiftL > 17) bitshiftL = 17;
|
||||
if (bitshiftR < -2) bitshiftR = -2; if (bitshiftR > 17) bitshiftR = 17;
|
||||
double RgainL = 1.0;
|
||||
double RgainR = 1.0;
|
||||
switch (bitshiftL)
|
||||
{
|
||||
case 17: RgainL = 0.0; break;
|
||||
case 16: RgainL = 0.0000152587890625; break;
|
||||
case 15: RgainL = 0.000030517578125; break;
|
||||
case 14: RgainL = 0.00006103515625; break;
|
||||
case 13: RgainL = 0.0001220703125; break;
|
||||
case 12: RgainL = 0.000244140625; break;
|
||||
case 11: RgainL = 0.00048828125; break;
|
||||
case 10: RgainL = 0.0009765625; break;
|
||||
case 9: RgainL = 0.001953125; break;
|
||||
case 8: RgainL = 0.00390625; break;
|
||||
case 7: RgainL = 0.0078125; break;
|
||||
case 6: RgainL = 0.015625; break;
|
||||
case 5: RgainL = 0.03125; break;
|
||||
case 4: RgainL = 0.0625; break;
|
||||
case 3: RgainL = 0.125; break;
|
||||
case 2: RgainL = 0.25; break;
|
||||
case 1: RgainL = 0.5; break;
|
||||
case 0: RgainL = 1.0; break;
|
||||
case -1: RgainL = 2.0; break;
|
||||
case -2: RgainL = 4.0; break;
|
||||
}
|
||||
switch (bitshiftR)
|
||||
{
|
||||
case 17: RgainR = 0.0; break;
|
||||
case 16: RgainR = 0.0000152587890625; break;
|
||||
case 15: RgainR = 0.000030517578125; break;
|
||||
case 14: RgainR = 0.00006103515625; break;
|
||||
case 13: RgainR = 0.0001220703125; break;
|
||||
case 12: RgainR = 0.000244140625; break;
|
||||
case 11: RgainR = 0.00048828125; break;
|
||||
case 10: RgainR = 0.0009765625; break;
|
||||
case 9: RgainR = 0.001953125; break;
|
||||
case 8: RgainR = 0.00390625; break;
|
||||
case 7: RgainR = 0.0078125; break;
|
||||
case 6: RgainR = 0.015625; break;
|
||||
case 5: RgainR = 0.03125; break;
|
||||
case 4: RgainR = 0.0625; break;
|
||||
case 3: RgainR = 0.125; break;
|
||||
case 2: RgainR = 0.25; break;
|
||||
case 1: RgainR = 0.5; break;
|
||||
case 0: RgainR = 1.0; break;
|
||||
case -1: RgainR = 2.0; break;
|
||||
case -2: RgainR = 4.0; break;
|
||||
}
|
||||
|
||||
while (nSampleFrames-- > 0) {
|
||||
double monoL = *inputL;
|
||||
double monoR = *inputR;
|
||||
|
||||
*outputL = (monoL*LgainL)+(monoR*RgainL);
|
||||
*outputR = (monoL*LgainR)+(monoR*RgainR);
|
||||
|
||||
inputL += 1;
|
||||
inputR += 1;
|
||||
outputL += 1;
|
||||
outputR += 1;
|
||||
}
|
||||
return noErr;
|
||||
}
|
||||
|
||||
2
plugins/MacSignedAU/BitDualPan/BitDualPan.exp
Executable file
2
plugins/MacSignedAU/BitDualPan/BitDualPan.exp
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
_BitDualPanEntry
|
||||
_BitDualPanFactory
|
||||
125
plugins/MacSignedAU/BitDualPan/BitDualPan.h
Executable file
125
plugins/MacSignedAU/BitDualPan/BitDualPan.h
Executable file
|
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* File: BitDualPan.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 "BitDualPanVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __BitDualPan_h__
|
||||
#define __BitDualPan_h__
|
||||
|
||||
|
||||
#pragma mark ____BitDualPan 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("L Vol");
|
||||
static CFStringRef kParameterBName = CFSTR("L Pan");
|
||||
static CFStringRef kParameterCName = CFSTR("R Vol");
|
||||
static CFStringRef kParameterDName = CFSTR("R Pan");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
kParam_C =2,
|
||||
kParam_D =3,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=4
|
||||
};
|
||||
|
||||
#pragma mark ____BitDualPan
|
||||
class BitDualPan : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
BitDualPan(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~BitDualPan () { 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 kBitDualPanVersion; }
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#endif
|
||||
61
plugins/MacSignedAU/BitDualPan/BitDualPan.r
Executable file
61
plugins/MacSignedAU/BitDualPan/BitDualPan.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: BitDualPan.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 "BitDualPanVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_BitDualPan 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BitDualPan~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_BitDualPan
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE BitDualPan_COMP_SUBTYPE
|
||||
#define COMP_MANUF BitDualPan_COMP_MANF
|
||||
|
||||
#define VERSION kBitDualPanVersion
|
||||
#define NAME "Airwindows: BitDualPan"
|
||||
#define DESCRIPTION "BitDualPan AU"
|
||||
#define ENTRY_POINT "BitDualPanEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
1359
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
1359
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
147
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
147
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,147 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeTarget = 8D01CCC60486CAD60068D4B7 /* BitDualPan */;
|
||||
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 = 785872420;
|
||||
PBXWorkspaceStateSaveDate = 785872420;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
8B0F89892ECF391400E4B38F /* PBXTextBookmark */ = 8B0F89892ECF391400E4B38F /* PBXTextBookmark */;
|
||||
8B3D20B22ED777C40020B133 /* PBXTextBookmark */ = 8B3D20B22ED777C40020B133 /* PBXTextBookmark */;
|
||||
8B3D20B32ED777C40020B133 /* PBXBookmark */ = 8B3D20B32ED777C40020B133 /* PBXBookmark */;
|
||||
8B3D20B42ED777C40020B133 /* PBXTextBookmark */ = 8B3D20B42ED777C40020B133 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
8B0F89892ECF391400E4B38F /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BC6025B073B072D006C4272 /* BitDualPan.h */;
|
||||
name = "BitDualPan.h: 120";
|
||||
rLen = 0;
|
||||
rLoc = 5080;
|
||||
rType = 0;
|
||||
vrLen = 18;
|
||||
vrLoc = 5066;
|
||||
};
|
||||
8B3D20B22ED777C40020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A660720730100365D66 /* BitDualPan.cpp */;
|
||||
name = "BitDualPan.cpp: 215";
|
||||
rLen = 0;
|
||||
rLoc = 9703;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8B3D20B32ED777C40020B133 /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 8BA05A690720730100365D66 /* BitDualPanVersion.h */;
|
||||
};
|
||||
8B3D20B42ED777C40020B133 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 8BA05A690720730100365D66 /* BitDualPanVersion.h */;
|
||||
name = "BitDualPanVersion.h: 54";
|
||||
rLen = 0;
|
||||
rLoc = 2914;
|
||||
rType = 0;
|
||||
vrLen = 0;
|
||||
vrLoc = 0;
|
||||
};
|
||||
8BA05A660720730100365D66 /* BitDualPan.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 6408}}";
|
||||
sepNavSelRange = "{14359, 148}";
|
||||
sepNavVisRange = "{13573, 1017}";
|
||||
sepNavWindowFrame = "{{600, 72}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1056, 1098}}";
|
||||
sepNavSelRange = "{2914, 0}";
|
||||
sepNavVisRange = "{0, 0}";
|
||||
sepNavWindowFrame = "{{15, 67}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{0, 1336}";
|
||||
};
|
||||
};
|
||||
8BC6025B073B072D006C4272 /* BitDualPan.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {1146, 2250}}";
|
||||
sepNavSelRange = "{5080, 0}";
|
||||
sepNavVisRange = "{2536, 890}";
|
||||
sepNavWindowFrame = "{{854, 47}, {840, 806}}";
|
||||
};
|
||||
};
|
||||
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D01CCC60486CAD60068D4B7 /* BitDualPan */ = {
|
||||
activeExec = 0;
|
||||
};
|
||||
}
|
||||
1486
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
1486
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
965
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/project.pbxproj
Executable file
965
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/project.pbxproj
Executable file
|
|
@ -0,0 +1,965 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8B8476FE2EDA17E600F4D13A /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476762EDA17E600F4D13A /* CAExtAudioFile.h */; };
|
||||
8B8476FF2EDA17E600F4D13A /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476772EDA17E600F4D13A /* CACFMachPort.h */; };
|
||||
8B8477002EDA17E600F4D13A /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476782EDA17E600F4D13A /* CABool.h */; };
|
||||
8B8477012EDA17E600F4D13A /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476792EDA17E600F4D13A /* CAComponent.cpp */; };
|
||||
8B8477022EDA17E600F4D13A /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84767A2EDA17E600F4D13A /* CADebugger.h */; };
|
||||
8B8477032EDA17E600F4D13A /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B84767B2EDA17E600F4D13A /* CACFNumber.cpp */; };
|
||||
8B8477042EDA17E600F4D13A /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84767C2EDA17E600F4D13A /* CAGuard.h */; };
|
||||
8B8477052EDA17E600F4D13A /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84767D2EDA17E600F4D13A /* CAAtomic.h */; };
|
||||
8B8477062EDA17E600F4D13A /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84767E2EDA17E600F4D13A /* CAStreamBasicDescription.h */; };
|
||||
8B8477072EDA17E600F4D13A /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84767F2EDA17E600F4D13A /* CACFObject.h */; };
|
||||
8B8477082EDA17E600F4D13A /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476802EDA17E600F4D13A /* CAStreamRangedDescription.h */; };
|
||||
8B8477092EDA17E600F4D13A /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476812EDA17E600F4D13A /* CATokenMap.h */; };
|
||||
8B84770A2EDA17E600F4D13A /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476822EDA17E600F4D13A /* CAComponent.h */; };
|
||||
8B84770B2EDA17E600F4D13A /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476832EDA17E600F4D13A /* CAAudioBufferList.h */; };
|
||||
8B84770C2EDA17E600F4D13A /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476842EDA17E600F4D13A /* CAAudioUnit.h */; };
|
||||
8B84770D2EDA17E600F4D13A /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476852EDA17E600F4D13A /* CAAUParameter.h */; };
|
||||
8B84770E2EDA17E600F4D13A /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476862EDA17E600F4D13A /* CAException.h */; };
|
||||
8B84770F2EDA17E600F4D13A /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476872EDA17E600F4D13A /* CAAUProcessor.cpp */; };
|
||||
8B8477102EDA17E600F4D13A /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476882EDA17E600F4D13A /* CAAUProcessor.h */; };
|
||||
8B8477112EDA17E600F4D13A /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476892EDA17E600F4D13A /* CAProcess.h */; };
|
||||
8B8477122EDA17E600F4D13A /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84768A2EDA17E600F4D13A /* CACFDictionary.h */; };
|
||||
8B8477132EDA17E600F4D13A /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84768B2EDA17E600F4D13A /* CAPThread.h */; };
|
||||
8B8477142EDA17E600F4D13A /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B84768C2EDA17E600F4D13A /* CAAUParameter.cpp */; };
|
||||
8B8477152EDA17E600F4D13A /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84768D2EDA17E600F4D13A /* CAAudioTimeStamp.h */; };
|
||||
8B8477162EDA17E600F4D13A /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B84768E2EDA17E600F4D13A /* CAFilePathUtils.cpp */; };
|
||||
8B8477172EDA17E600F4D13A /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84768F2EDA17E600F4D13A /* CAAudioValueRange.h */; };
|
||||
8B8477182EDA17E600F4D13A /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476902EDA17E600F4D13A /* CAVectorUnitTypes.h */; };
|
||||
8B8477192EDA17E600F4D13A /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476912EDA17E600F4D13A /* CAAudioChannelLayoutObject.cpp */; };
|
||||
8B84771A2EDA17E600F4D13A /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476922EDA17E600F4D13A /* CAGuard.cpp */; };
|
||||
8B84771B2EDA17E600F4D13A /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476932EDA17E600F4D13A /* CACFNumber.h */; };
|
||||
8B84771C2EDA17E600F4D13A /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476942EDA17E600F4D13A /* CACFDistributedNotification.cpp */; };
|
||||
8B84771D2EDA17E600F4D13A /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476952EDA17E600F4D13A /* CACFString.h */; };
|
||||
8B84771E2EDA17E600F4D13A /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476962EDA17E600F4D13A /* CAAUMIDIMapManager.cpp */; };
|
||||
8B84771F2EDA17E600F4D13A /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476972EDA17E600F4D13A /* CAComponentDescription.cpp */; };
|
||||
8B8477202EDA17E600F4D13A /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476982EDA17E600F4D13A /* CAHostTimeBase.h */; };
|
||||
8B8477212EDA17E600F4D13A /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476992EDA17E600F4D13A /* CADebugMacros.cpp */; };
|
||||
8B8477222EDA17E600F4D13A /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84769A2EDA17E600F4D13A /* CAAudioFileFormats.h */; };
|
||||
8B8477232EDA17E600F4D13A /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84769B2EDA17E600F4D13A /* CAAUMIDIMapManager.h */; };
|
||||
8B8477242EDA17E600F4D13A /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B84769C2EDA17E600F4D13A /* CACFDictionary.cpp */; };
|
||||
8B8477252EDA17E600F4D13A /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84769D2EDA17E600F4D13A /* CAMutex.h */; };
|
||||
8B8477262EDA17E600F4D13A /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B84769E2EDA17E600F4D13A /* CACFString.cpp */; };
|
||||
8B8477272EDA17E600F4D13A /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B84769F2EDA17E600F4D13A /* CASettingsStorage.h */; };
|
||||
8B8477282EDA17E600F4D13A /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A02EDA17E600F4D13A /* CADebugPrintf.h */; };
|
||||
8B8477292EDA17E600F4D13A /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476A12EDA17E600F4D13A /* CAXException.cpp */; };
|
||||
8B84772A2EDA17E600F4D13A /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A22EDA17E600F4D13A /* CAAUMIDIMap.h */; };
|
||||
8B84772B2EDA17E600F4D13A /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A32EDA17E600F4D13A /* AUParamInfo.h */; };
|
||||
8B84772C2EDA17E600F4D13A /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A42EDA17E600F4D13A /* CABitOperations.h */; };
|
||||
8B84772D2EDA17E600F4D13A /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476A52EDA17E600F4D13A /* CACFPreferences.cpp */; };
|
||||
8B84772E2EDA17E600F4D13A /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A62EDA17E600F4D13A /* CABundleLocker.h */; };
|
||||
8B84772F2EDA17E600F4D13A /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A72EDA17E600F4D13A /* CAPropertyAddress.h */; };
|
||||
8B8477302EDA17E600F4D13A /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476A82EDA17E600F4D13A /* CAXException.h */; };
|
||||
8B8477312EDA17E600F4D13A /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476A92EDA17E600F4D13A /* CAAudioChannelLayout.cpp */; };
|
||||
8B8477322EDA17E600F4D13A /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476AA2EDA17E600F4D13A /* CAThreadSafeList.h */; };
|
||||
8B8477332EDA17E600F4D13A /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476AB2EDA17E600F4D13A /* CAAudioUnitOutputCapturer.h */; };
|
||||
8B8477342EDA17E600F4D13A /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476AC2EDA17E600F4D13A /* AUParamInfo.cpp */; };
|
||||
8B8477352EDA17E600F4D13A /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476AD2EDA17E600F4D13A /* CASharedLibrary.cpp */; };
|
||||
8B8477362EDA17E600F4D13A /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476AE2EDA17E600F4D13A /* CAAUMIDIMap.cpp */; };
|
||||
8B8477372EDA17E600F4D13A /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476AF2EDA17E600F4D13A /* CALogMacros.h */; };
|
||||
8B8477382EDA17E600F4D13A /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476B02EDA17E600F4D13A /* CACFMessagePort.cpp */; };
|
||||
8B8477392EDA17E600F4D13A /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B12EDA17E600F4D13A /* CARingBuffer.h */; };
|
||||
8B84773A2EDA17E600F4D13A /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476B22EDA17E600F4D13A /* AUOutputBL.cpp */; };
|
||||
8B84773B2EDA17E600F4D13A /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B32EDA17E600F4D13A /* CABufferList.h */; };
|
||||
8B84773C2EDA17E600F4D13A /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B42EDA17E600F4D13A /* CASharedLibrary.h */; };
|
||||
8B84773D2EDA17E600F4D13A /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B52EDA17E600F4D13A /* CACFData.h */; };
|
||||
8B84773E2EDA17E600F4D13A /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476B62EDA17E600F4D13A /* CAStreamRangedDescription.cpp */; };
|
||||
8B84773F2EDA17E600F4D13A /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476B72EDA17E600F4D13A /* CAPThread.cpp */; };
|
||||
8B8477402EDA17E600F4D13A /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B82EDA17E600F4D13A /* CAAutoDisposer.h */; };
|
||||
8B8477412EDA17E600F4D13A /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476B92EDA17E600F4D13A /* CACFPreferences.h */; };
|
||||
8B8477422EDA17E600F4D13A /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476BA2EDA17E600F4D13A /* CAVectorUnit.cpp */; };
|
||||
8B8477432EDA17E600F4D13A /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476BB2EDA17E600F4D13A /* CAComponentDescription.h */; };
|
||||
8B8477442EDA17E600F4D13A /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476BC2EDA17E600F4D13A /* CADebugMacros.h */; };
|
||||
8B8477452EDA17E600F4D13A /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476BD2EDA17E600F4D13A /* AUOutputBL.h */; };
|
||||
8B8477462EDA17E600F4D13A /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476BE2EDA17E600F4D13A /* CADebugPrintf.cpp */; };
|
||||
8B8477472EDA17E600F4D13A /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476BF2EDA17E600F4D13A /* CARingBuffer.cpp */; };
|
||||
8B8477482EDA17E600F4D13A /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C02EDA17E600F4D13A /* CACFPlugIn.h */; };
|
||||
8B8477492EDA17E600F4D13A /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476C12EDA17E600F4D13A /* CASettingsStorage.cpp */; };
|
||||
8B84774A2EDA17E600F4D13A /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C22EDA17E600F4D13A /* CAMixMap.h */; };
|
||||
8B84774B2EDA17E600F4D13A /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C32EDA17E600F4D13A /* CACFDistributedNotification.h */; };
|
||||
8B84774C2EDA17E600F4D13A /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C42EDA17E600F4D13A /* CAFilePathUtils.h */; };
|
||||
8B84774D2EDA17E600F4D13A /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C52EDA17E600F4D13A /* CATink.h */; };
|
||||
8B84774E2EDA17E600F4D13A /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476C62EDA17E600F4D13A /* CAStreamBasicDescription.cpp */; };
|
||||
8B84774F2EDA17E600F4D13A /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476C72EDA17E600F4D13A /* CAAudioChannelLayout.h */; };
|
||||
8B8477502EDA17E600F4D13A /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476C82EDA17E600F4D13A /* CAProcess.cpp */; };
|
||||
8B8477512EDA17E600F4D13A /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476C92EDA17E600F4D13A /* CAHostTimeBase.cpp */; };
|
||||
8B8477522EDA17E600F4D13A /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476CA2EDA17E600F4D13A /* CAPersistence.cpp */; };
|
||||
8B8477532EDA17E600F4D13A /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476CB2EDA17E600F4D13A /* CAAudioBufferList.cpp */; };
|
||||
8B8477542EDA17E600F4D13A /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476CC2EDA17E600F4D13A /* CAAudioTimeStamp.cpp */; };
|
||||
8B8477552EDA17E600F4D13A /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476CD2EDA17E600F4D13A /* CAVectorUnit.h */; };
|
||||
8B8477562EDA17E600F4D13A /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476CE2EDA17E600F4D13A /* CAByteOrder.h */; };
|
||||
8B8477572EDA17E600F4D13A /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476CF2EDA17E600F4D13A /* CACFArray.h */; };
|
||||
8B8477582EDA17E600F4D13A /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476D02EDA17E600F4D13A /* CAAtomicStack.h */; };
|
||||
8B8477592EDA17E600F4D13A /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476D12EDA17E600F4D13A /* CAReferenceCounted.h */; };
|
||||
8B84775A2EDA17E600F4D13A /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D22EDA17E600F4D13A /* CACFMachPort.cpp */; };
|
||||
8B84775B2EDA17E600F4D13A /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D32EDA17E600F4D13A /* CABufferList.cpp */; };
|
||||
8B84775C2EDA17E600F4D13A /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D42EDA17E600F4D13A /* CAMutex.cpp */; };
|
||||
8B84775D2EDA17E600F4D13A /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D52EDA17E600F4D13A /* CADebugger.cpp */; };
|
||||
8B84775E2EDA17E600F4D13A /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D62EDA17E600F4D13A /* CABundleLocker.cpp */; };
|
||||
8B84775F2EDA17E600F4D13A /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D72EDA17E600F4D13A /* CAAudioFileFormats.cpp */; };
|
||||
8B8477602EDA17E600F4D13A /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476D82EDA17E600F4D13A /* CAMath.h */; };
|
||||
8B8477612EDA17E600F4D13A /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476D92EDA17E600F4D13A /* CACFArray.cpp */; };
|
||||
8B8477622EDA17E600F4D13A /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476DA2EDA17E600F4D13A /* CACFMessagePort.h */; };
|
||||
8B8477632EDA17E600F4D13A /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476DB2EDA17E600F4D13A /* CAAudioValueRange.cpp */; };
|
||||
8B8477642EDA17E600F4D13A /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476DC2EDA17E600F4D13A /* CAAudioUnit.cpp */; };
|
||||
8B8477652EDA17E600F4D13A /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E02EDA17E600F4D13A /* AUViewLocalizedStringKeys.h */; };
|
||||
8B8477662EDA17E600F4D13A /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476E22EDA17E600F4D13A /* ComponentBase.cpp */; };
|
||||
8B8477672EDA17E600F4D13A /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476E32EDA17E600F4D13A /* AUScopeElement.cpp */; };
|
||||
8B8477682EDA17E600F4D13A /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E42EDA17E600F4D13A /* ComponentBase.h */; };
|
||||
8B8477692EDA17E600F4D13A /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476E52EDA17E600F4D13A /* AUBase.cpp */; };
|
||||
8B84776A2EDA17E600F4D13A /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E62EDA17E600F4D13A /* AUInputElement.h */; };
|
||||
8B84776B2EDA17E600F4D13A /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E72EDA17E600F4D13A /* AUBase.h */; };
|
||||
8B84776C2EDA17E600F4D13A /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E82EDA17E600F4D13A /* AUPlugInDispatch.h */; };
|
||||
8B84776D2EDA17E600F4D13A /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476E92EDA17E600F4D13A /* AUDispatch.h */; };
|
||||
8B84776E2EDA17E600F4D13A /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476EA2EDA17E600F4D13A /* AUOutputElement.cpp */; };
|
||||
8B8477702EDA17E600F4D13A /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476EC2EDA17E600F4D13A /* AUPlugInDispatch.cpp */; };
|
||||
8B8477712EDA17E600F4D13A /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476ED2EDA17E600F4D13A /* AUOutputElement.h */; };
|
||||
8B8477722EDA17E600F4D13A /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476EE2EDA17E600F4D13A /* AUDispatch.cpp */; };
|
||||
8B8477732EDA17E600F4D13A /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476EF2EDA17E600F4D13A /* AUScopeElement.h */; };
|
||||
8B8477742EDA17E600F4D13A /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476F02EDA17E600F4D13A /* AUInputElement.cpp */; };
|
||||
8B8477752EDA17E600F4D13A /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476F22EDA17E600F4D13A /* AUEffectBase.cpp */; };
|
||||
8B8477762EDA17E600F4D13A /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476F32EDA17E600F4D13A /* AUEffectBase.h */; };
|
||||
8B8477772EDA17E600F4D13A /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476F52EDA17E600F4D13A /* AUTimestampGenerator.h */; };
|
||||
8B8477782EDA17E600F4D13A /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476F62EDA17E600F4D13A /* AUBaseHelper.cpp */; };
|
||||
8B8477792EDA17E600F4D13A /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476F72EDA17E600F4D13A /* AUSilentTimeout.h */; };
|
||||
8B84777A2EDA17E600F4D13A /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476F82EDA17E600F4D13A /* AUInputFormatConverter.h */; };
|
||||
8B84777B2EDA17E600F4D13A /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476F92EDA17E600F4D13A /* AUTimestampGenerator.cpp */; };
|
||||
8B84777C2EDA17E600F4D13A /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8B8476FA2EDA17E600F4D13A /* AUBuffer.cpp */; };
|
||||
8B84777D2EDA17E600F4D13A /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476FB2EDA17E600F4D13A /* AUMIDIDefs.h */; };
|
||||
8B84777E2EDA17E600F4D13A /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476FC2EDA17E600F4D13A /* AUBuffer.h */; };
|
||||
8B84777F2EDA17E600F4D13A /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8476FD2EDA17E600F4D13A /* AUBaseHelper.h */; };
|
||||
8BA05A6B0720730100365D66 /* BitDualPan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* BitDualPan.cpp */; };
|
||||
8BA05A6E0720730100365D66 /* BitDualPanVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* BitDualPanVersion.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 /* BitDualPan.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* BitDualPan.h */; };
|
||||
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
|
||||
8B8476762EDA17E600F4D13A /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
|
||||
8B8476772EDA17E600F4D13A /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
|
||||
8B8476782EDA17E600F4D13A /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
|
||||
8B8476792EDA17E600F4D13A /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
|
||||
8B84767A2EDA17E600F4D13A /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
|
||||
8B84767B2EDA17E600F4D13A /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
|
||||
8B84767C2EDA17E600F4D13A /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
|
||||
8B84767D2EDA17E600F4D13A /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
|
||||
8B84767E2EDA17E600F4D13A /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
|
||||
8B84767F2EDA17E600F4D13A /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
|
||||
8B8476802EDA17E600F4D13A /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
|
||||
8B8476812EDA17E600F4D13A /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
|
||||
8B8476822EDA17E600F4D13A /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
|
||||
8B8476832EDA17E600F4D13A /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
|
||||
8B8476842EDA17E600F4D13A /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
|
||||
8B8476852EDA17E600F4D13A /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
|
||||
8B8476862EDA17E600F4D13A /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
|
||||
8B8476872EDA17E600F4D13A /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
|
||||
8B8476882EDA17E600F4D13A /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
|
||||
8B8476892EDA17E600F4D13A /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
|
||||
8B84768A2EDA17E600F4D13A /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
|
||||
8B84768B2EDA17E600F4D13A /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
|
||||
8B84768C2EDA17E600F4D13A /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
|
||||
8B84768D2EDA17E600F4D13A /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
|
||||
8B84768E2EDA17E600F4D13A /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
|
||||
8B84768F2EDA17E600F4D13A /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
|
||||
8B8476902EDA17E600F4D13A /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
|
||||
8B8476912EDA17E600F4D13A /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
|
||||
8B8476922EDA17E600F4D13A /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
|
||||
8B8476932EDA17E600F4D13A /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
|
||||
8B8476942EDA17E600F4D13A /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
|
||||
8B8476952EDA17E600F4D13A /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
|
||||
8B8476962EDA17E600F4D13A /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
|
||||
8B8476972EDA17E600F4D13A /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
|
||||
8B8476982EDA17E600F4D13A /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
|
||||
8B8476992EDA17E600F4D13A /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
|
||||
8B84769A2EDA17E600F4D13A /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
|
||||
8B84769B2EDA17E600F4D13A /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
|
||||
8B84769C2EDA17E600F4D13A /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
|
||||
8B84769D2EDA17E600F4D13A /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
|
||||
8B84769E2EDA17E600F4D13A /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
|
||||
8B84769F2EDA17E600F4D13A /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
|
||||
8B8476A02EDA17E600F4D13A /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
|
||||
8B8476A12EDA17E600F4D13A /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
|
||||
8B8476A22EDA17E600F4D13A /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
|
||||
8B8476A32EDA17E600F4D13A /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
|
||||
8B8476A42EDA17E600F4D13A /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
|
||||
8B8476A52EDA17E600F4D13A /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
|
||||
8B8476A62EDA17E600F4D13A /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
|
||||
8B8476A72EDA17E600F4D13A /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
|
||||
8B8476A82EDA17E600F4D13A /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
|
||||
8B8476A92EDA17E600F4D13A /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
|
||||
8B8476AA2EDA17E600F4D13A /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
|
||||
8B8476AB2EDA17E600F4D13A /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
|
||||
8B8476AC2EDA17E600F4D13A /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
|
||||
8B8476AD2EDA17E600F4D13A /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
|
||||
8B8476AE2EDA17E600F4D13A /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
|
||||
8B8476AF2EDA17E600F4D13A /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
|
||||
8B8476B02EDA17E600F4D13A /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
|
||||
8B8476B12EDA17E600F4D13A /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
|
||||
8B8476B22EDA17E600F4D13A /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
|
||||
8B8476B32EDA17E600F4D13A /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
|
||||
8B8476B42EDA17E600F4D13A /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
|
||||
8B8476B52EDA17E600F4D13A /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
|
||||
8B8476B62EDA17E600F4D13A /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
|
||||
8B8476B72EDA17E600F4D13A /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
|
||||
8B8476B82EDA17E600F4D13A /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
|
||||
8B8476B92EDA17E600F4D13A /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
|
||||
8B8476BA2EDA17E600F4D13A /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
|
||||
8B8476BB2EDA17E600F4D13A /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
|
||||
8B8476BC2EDA17E600F4D13A /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
|
||||
8B8476BD2EDA17E600F4D13A /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
|
||||
8B8476BE2EDA17E600F4D13A /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
|
||||
8B8476BF2EDA17E600F4D13A /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
|
||||
8B8476C02EDA17E600F4D13A /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
|
||||
8B8476C12EDA17E600F4D13A /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
|
||||
8B8476C22EDA17E600F4D13A /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
|
||||
8B8476C32EDA17E600F4D13A /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
|
||||
8B8476C42EDA17E600F4D13A /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
|
||||
8B8476C52EDA17E600F4D13A /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
|
||||
8B8476C62EDA17E600F4D13A /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
|
||||
8B8476C72EDA17E600F4D13A /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
|
||||
8B8476C82EDA17E600F4D13A /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
|
||||
8B8476C92EDA17E600F4D13A /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
|
||||
8B8476CA2EDA17E600F4D13A /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
|
||||
8B8476CB2EDA17E600F4D13A /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
|
||||
8B8476CC2EDA17E600F4D13A /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
|
||||
8B8476CD2EDA17E600F4D13A /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
|
||||
8B8476CE2EDA17E600F4D13A /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
|
||||
8B8476CF2EDA17E600F4D13A /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
|
||||
8B8476D02EDA17E600F4D13A /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
|
||||
8B8476D12EDA17E600F4D13A /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
|
||||
8B8476D22EDA17E600F4D13A /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
|
||||
8B8476D32EDA17E600F4D13A /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
|
||||
8B8476D42EDA17E600F4D13A /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
|
||||
8B8476D52EDA17E600F4D13A /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
|
||||
8B8476D62EDA17E600F4D13A /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
|
||||
8B8476D72EDA17E600F4D13A /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
|
||||
8B8476D82EDA17E600F4D13A /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
|
||||
8B8476D92EDA17E600F4D13A /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
|
||||
8B8476DA2EDA17E600F4D13A /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
|
||||
8B8476DB2EDA17E600F4D13A /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
|
||||
8B8476DC2EDA17E600F4D13A /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
|
||||
8B8476E02EDA17E600F4D13A /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
|
||||
8B8476E22EDA17E600F4D13A /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
|
||||
8B8476E32EDA17E600F4D13A /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
|
||||
8B8476E42EDA17E600F4D13A /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
|
||||
8B8476E52EDA17E600F4D13A /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
|
||||
8B8476E62EDA17E600F4D13A /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
|
||||
8B8476E72EDA17E600F4D13A /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
|
||||
8B8476E82EDA17E600F4D13A /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
|
||||
8B8476E92EDA17E600F4D13A /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
|
||||
8B8476EA2EDA17E600F4D13A /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
|
||||
8B8476EB2EDA17E600F4D13A /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
|
||||
8B8476EC2EDA17E600F4D13A /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
|
||||
8B8476ED2EDA17E600F4D13A /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
|
||||
8B8476EE2EDA17E600F4D13A /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
|
||||
8B8476EF2EDA17E600F4D13A /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
|
||||
8B8476F02EDA17E600F4D13A /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
|
||||
8B8476F22EDA17E600F4D13A /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
|
||||
8B8476F32EDA17E600F4D13A /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
|
||||
8B8476F52EDA17E600F4D13A /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
|
||||
8B8476F62EDA17E600F4D13A /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
|
||||
8B8476F72EDA17E600F4D13A /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
|
||||
8B8476F82EDA17E600F4D13A /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
|
||||
8B8476F92EDA17E600F4D13A /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
|
||||
8B8476FA2EDA17E600F4D13A /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
|
||||
8B8476FB2EDA17E600F4D13A /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
|
||||
8B8476FC2EDA17E600F4D13A /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
|
||||
8B8476FD2EDA17E600F4D13A /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
|
||||
8B8477802EDA184600F4D13A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
8BA05A660720730100365D66 /* BitDualPan.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BitDualPan.cpp; sourceTree = "<group>"; };
|
||||
8BA05A670720730100365D66 /* BitDualPan.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = BitDualPan.exp; sourceTree = "<group>"; };
|
||||
8BA05A680720730100365D66 /* BitDualPan.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = BitDualPan.r; sourceTree = "<group>"; };
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BitDualPanVersion.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 /* BitDualPan.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BitDualPan.h; sourceTree = "<group>"; };
|
||||
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D01CCD20486CAD60068D4B7 /* BitDualPan.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BitDualPan.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 /* BitDualPan */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB77ADFE841716C02AAC07 /* Source */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||
);
|
||||
name = BitDualPan;
|
||||
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 = (
|
||||
8B8476742EDA17E600F4D13A /* CA_SDK */,
|
||||
8BA05A56072072A900365D66 /* AU Source */,
|
||||
);
|
||||
name = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FB4FE9D528D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D01CCD20486CAD60068D4B7 /* BitDualPan.component */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476742EDA17E600F4D13A /* CA_SDK */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476752EDA17E600F4D13A /* PublicUtility */,
|
||||
8B8476DD2EDA17E600F4D13A /* AudioUnits */,
|
||||
);
|
||||
name = CA_SDK;
|
||||
path = ../../../../CA_SDK;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476752EDA17E600F4D13A /* PublicUtility */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476762EDA17E600F4D13A /* CAExtAudioFile.h */,
|
||||
8B8476772EDA17E600F4D13A /* CACFMachPort.h */,
|
||||
8B8476782EDA17E600F4D13A /* CABool.h */,
|
||||
8B8476792EDA17E600F4D13A /* CAComponent.cpp */,
|
||||
8B84767A2EDA17E600F4D13A /* CADebugger.h */,
|
||||
8B84767B2EDA17E600F4D13A /* CACFNumber.cpp */,
|
||||
8B84767C2EDA17E600F4D13A /* CAGuard.h */,
|
||||
8B84767D2EDA17E600F4D13A /* CAAtomic.h */,
|
||||
8B84767E2EDA17E600F4D13A /* CAStreamBasicDescription.h */,
|
||||
8B84767F2EDA17E600F4D13A /* CACFObject.h */,
|
||||
8B8476802EDA17E600F4D13A /* CAStreamRangedDescription.h */,
|
||||
8B8476812EDA17E600F4D13A /* CATokenMap.h */,
|
||||
8B8476822EDA17E600F4D13A /* CAComponent.h */,
|
||||
8B8476832EDA17E600F4D13A /* CAAudioBufferList.h */,
|
||||
8B8476842EDA17E600F4D13A /* CAAudioUnit.h */,
|
||||
8B8476852EDA17E600F4D13A /* CAAUParameter.h */,
|
||||
8B8476862EDA17E600F4D13A /* CAException.h */,
|
||||
8B8476872EDA17E600F4D13A /* CAAUProcessor.cpp */,
|
||||
8B8476882EDA17E600F4D13A /* CAAUProcessor.h */,
|
||||
8B8476892EDA17E600F4D13A /* CAProcess.h */,
|
||||
8B84768A2EDA17E600F4D13A /* CACFDictionary.h */,
|
||||
8B84768B2EDA17E600F4D13A /* CAPThread.h */,
|
||||
8B84768C2EDA17E600F4D13A /* CAAUParameter.cpp */,
|
||||
8B84768D2EDA17E600F4D13A /* CAAudioTimeStamp.h */,
|
||||
8B84768E2EDA17E600F4D13A /* CAFilePathUtils.cpp */,
|
||||
8B84768F2EDA17E600F4D13A /* CAAudioValueRange.h */,
|
||||
8B8476902EDA17E600F4D13A /* CAVectorUnitTypes.h */,
|
||||
8B8476912EDA17E600F4D13A /* CAAudioChannelLayoutObject.cpp */,
|
||||
8B8476922EDA17E600F4D13A /* CAGuard.cpp */,
|
||||
8B8476932EDA17E600F4D13A /* CACFNumber.h */,
|
||||
8B8476942EDA17E600F4D13A /* CACFDistributedNotification.cpp */,
|
||||
8B8476952EDA17E600F4D13A /* CACFString.h */,
|
||||
8B8476962EDA17E600F4D13A /* CAAUMIDIMapManager.cpp */,
|
||||
8B8476972EDA17E600F4D13A /* CAComponentDescription.cpp */,
|
||||
8B8476982EDA17E600F4D13A /* CAHostTimeBase.h */,
|
||||
8B8476992EDA17E600F4D13A /* CADebugMacros.cpp */,
|
||||
8B84769A2EDA17E600F4D13A /* CAAudioFileFormats.h */,
|
||||
8B84769B2EDA17E600F4D13A /* CAAUMIDIMapManager.h */,
|
||||
8B84769C2EDA17E600F4D13A /* CACFDictionary.cpp */,
|
||||
8B84769D2EDA17E600F4D13A /* CAMutex.h */,
|
||||
8B84769E2EDA17E600F4D13A /* CACFString.cpp */,
|
||||
8B84769F2EDA17E600F4D13A /* CASettingsStorage.h */,
|
||||
8B8476A02EDA17E600F4D13A /* CADebugPrintf.h */,
|
||||
8B8476A12EDA17E600F4D13A /* CAXException.cpp */,
|
||||
8B8476A22EDA17E600F4D13A /* CAAUMIDIMap.h */,
|
||||
8B8476A32EDA17E600F4D13A /* AUParamInfo.h */,
|
||||
8B8476A42EDA17E600F4D13A /* CABitOperations.h */,
|
||||
8B8476A52EDA17E600F4D13A /* CACFPreferences.cpp */,
|
||||
8B8476A62EDA17E600F4D13A /* CABundleLocker.h */,
|
||||
8B8476A72EDA17E600F4D13A /* CAPropertyAddress.h */,
|
||||
8B8476A82EDA17E600F4D13A /* CAXException.h */,
|
||||
8B8476A92EDA17E600F4D13A /* CAAudioChannelLayout.cpp */,
|
||||
8B8476AA2EDA17E600F4D13A /* CAThreadSafeList.h */,
|
||||
8B8476AB2EDA17E600F4D13A /* CAAudioUnitOutputCapturer.h */,
|
||||
8B8476AC2EDA17E600F4D13A /* AUParamInfo.cpp */,
|
||||
8B8476AD2EDA17E600F4D13A /* CASharedLibrary.cpp */,
|
||||
8B8476AE2EDA17E600F4D13A /* CAAUMIDIMap.cpp */,
|
||||
8B8476AF2EDA17E600F4D13A /* CALogMacros.h */,
|
||||
8B8476B02EDA17E600F4D13A /* CACFMessagePort.cpp */,
|
||||
8B8476B12EDA17E600F4D13A /* CARingBuffer.h */,
|
||||
8B8476B22EDA17E600F4D13A /* AUOutputBL.cpp */,
|
||||
8B8476B32EDA17E600F4D13A /* CABufferList.h */,
|
||||
8B8476B42EDA17E600F4D13A /* CASharedLibrary.h */,
|
||||
8B8476B52EDA17E600F4D13A /* CACFData.h */,
|
||||
8B8476B62EDA17E600F4D13A /* CAStreamRangedDescription.cpp */,
|
||||
8B8476B72EDA17E600F4D13A /* CAPThread.cpp */,
|
||||
8B8476B82EDA17E600F4D13A /* CAAutoDisposer.h */,
|
||||
8B8476B92EDA17E600F4D13A /* CACFPreferences.h */,
|
||||
8B8476BA2EDA17E600F4D13A /* CAVectorUnit.cpp */,
|
||||
8B8476BB2EDA17E600F4D13A /* CAComponentDescription.h */,
|
||||
8B8476BC2EDA17E600F4D13A /* CADebugMacros.h */,
|
||||
8B8476BD2EDA17E600F4D13A /* AUOutputBL.h */,
|
||||
8B8476BE2EDA17E600F4D13A /* CADebugPrintf.cpp */,
|
||||
8B8476BF2EDA17E600F4D13A /* CARingBuffer.cpp */,
|
||||
8B8476C02EDA17E600F4D13A /* CACFPlugIn.h */,
|
||||
8B8476C12EDA17E600F4D13A /* CASettingsStorage.cpp */,
|
||||
8B8476C22EDA17E600F4D13A /* CAMixMap.h */,
|
||||
8B8476C32EDA17E600F4D13A /* CACFDistributedNotification.h */,
|
||||
8B8476C42EDA17E600F4D13A /* CAFilePathUtils.h */,
|
||||
8B8476C52EDA17E600F4D13A /* CATink.h */,
|
||||
8B8476C62EDA17E600F4D13A /* CAStreamBasicDescription.cpp */,
|
||||
8B8476C72EDA17E600F4D13A /* CAAudioChannelLayout.h */,
|
||||
8B8476C82EDA17E600F4D13A /* CAProcess.cpp */,
|
||||
8B8476C92EDA17E600F4D13A /* CAHostTimeBase.cpp */,
|
||||
8B8476CA2EDA17E600F4D13A /* CAPersistence.cpp */,
|
||||
8B8476CB2EDA17E600F4D13A /* CAAudioBufferList.cpp */,
|
||||
8B8476CC2EDA17E600F4D13A /* CAAudioTimeStamp.cpp */,
|
||||
8B8476CD2EDA17E600F4D13A /* CAVectorUnit.h */,
|
||||
8B8476CE2EDA17E600F4D13A /* CAByteOrder.h */,
|
||||
8B8476CF2EDA17E600F4D13A /* CACFArray.h */,
|
||||
8B8476D02EDA17E600F4D13A /* CAAtomicStack.h */,
|
||||
8B8476D12EDA17E600F4D13A /* CAReferenceCounted.h */,
|
||||
8B8476D22EDA17E600F4D13A /* CACFMachPort.cpp */,
|
||||
8B8476D32EDA17E600F4D13A /* CABufferList.cpp */,
|
||||
8B8476D42EDA17E600F4D13A /* CAMutex.cpp */,
|
||||
8B8476D52EDA17E600F4D13A /* CADebugger.cpp */,
|
||||
8B8476D62EDA17E600F4D13A /* CABundleLocker.cpp */,
|
||||
8B8476D72EDA17E600F4D13A /* CAAudioFileFormats.cpp */,
|
||||
8B8476D82EDA17E600F4D13A /* CAMath.h */,
|
||||
8B8476D92EDA17E600F4D13A /* CACFArray.cpp */,
|
||||
8B8476DA2EDA17E600F4D13A /* CACFMessagePort.h */,
|
||||
8B8476DB2EDA17E600F4D13A /* CAAudioValueRange.cpp */,
|
||||
8B8476DC2EDA17E600F4D13A /* CAAudioUnit.cpp */,
|
||||
);
|
||||
path = PublicUtility;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476DD2EDA17E600F4D13A /* AudioUnits */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476DE2EDA17E600F4D13A /* AUPublic */,
|
||||
);
|
||||
path = AudioUnits;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476DE2EDA17E600F4D13A /* AUPublic */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476DF2EDA17E600F4D13A /* AUViewBase */,
|
||||
8B8476E12EDA17E600F4D13A /* AUBase */,
|
||||
8B8476F12EDA17E600F4D13A /* OtherBases */,
|
||||
8B8476F42EDA17E600F4D13A /* Utility */,
|
||||
);
|
||||
path = AUPublic;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476DF2EDA17E600F4D13A /* AUViewBase */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476E02EDA17E600F4D13A /* AUViewLocalizedStringKeys.h */,
|
||||
);
|
||||
path = AUViewBase;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476E12EDA17E600F4D13A /* AUBase */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476E22EDA17E600F4D13A /* ComponentBase.cpp */,
|
||||
8B8476E32EDA17E600F4D13A /* AUScopeElement.cpp */,
|
||||
8B8476E42EDA17E600F4D13A /* ComponentBase.h */,
|
||||
8B8476E52EDA17E600F4D13A /* AUBase.cpp */,
|
||||
8B8476E62EDA17E600F4D13A /* AUInputElement.h */,
|
||||
8B8476E72EDA17E600F4D13A /* AUBase.h */,
|
||||
8B8476E82EDA17E600F4D13A /* AUPlugInDispatch.h */,
|
||||
8B8476E92EDA17E600F4D13A /* AUDispatch.h */,
|
||||
8B8476EA2EDA17E600F4D13A /* AUOutputElement.cpp */,
|
||||
8B8476EB2EDA17E600F4D13A /* AUResources.r */,
|
||||
8B8476EC2EDA17E600F4D13A /* AUPlugInDispatch.cpp */,
|
||||
8B8476ED2EDA17E600F4D13A /* AUOutputElement.h */,
|
||||
8B8476EE2EDA17E600F4D13A /* AUDispatch.cpp */,
|
||||
8B8476EF2EDA17E600F4D13A /* AUScopeElement.h */,
|
||||
8B8476F02EDA17E600F4D13A /* AUInputElement.cpp */,
|
||||
);
|
||||
path = AUBase;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476F12EDA17E600F4D13A /* OtherBases */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476F22EDA17E600F4D13A /* AUEffectBase.cpp */,
|
||||
8B8476F32EDA17E600F4D13A /* AUEffectBase.h */,
|
||||
);
|
||||
path = OtherBases;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8B8476F42EDA17E600F4D13A /* Utility */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8B8476F52EDA17E600F4D13A /* AUTimestampGenerator.h */,
|
||||
8B8476F62EDA17E600F4D13A /* AUBaseHelper.cpp */,
|
||||
8B8476F72EDA17E600F4D13A /* AUSilentTimeout.h */,
|
||||
8B8476F82EDA17E600F4D13A /* AUInputFormatConverter.h */,
|
||||
8B8476F92EDA17E600F4D13A /* AUTimestampGenerator.cpp */,
|
||||
8B8476FA2EDA17E600F4D13A /* AUBuffer.cpp */,
|
||||
8B8476FB2EDA17E600F4D13A /* AUMIDIDefs.h */,
|
||||
8B8476FC2EDA17E600F4D13A /* AUBuffer.h */,
|
||||
8B8476FD2EDA17E600F4D13A /* AUBaseHelper.h */,
|
||||
);
|
||||
path = Utility;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8BC6025B073B072D006C4272 /* BitDualPan.h */,
|
||||
8BA05A660720730100365D66 /* BitDualPan.cpp */,
|
||||
8BA05A670720730100365D66 /* BitDualPan.exp */,
|
||||
8BA05A680720730100365D66 /* BitDualPan.r */,
|
||||
8BA05A690720730100365D66 /* BitDualPanVersion.h */,
|
||||
);
|
||||
name = "AU Source";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8B84772E2EDA17E600F4D13A /* CABundleLocker.h in Headers */,
|
||||
8B84774F2EDA17E600F4D13A /* CAAudioChannelLayout.h in Headers */,
|
||||
8B8477452EDA17E600F4D13A /* AUOutputBL.h in Headers */,
|
||||
8B8477202EDA17E600F4D13A /* CAHostTimeBase.h in Headers */,
|
||||
8B8477682EDA17E600F4D13A /* ComponentBase.h in Headers */,
|
||||
8B8477582EDA17E600F4D13A /* CAAtomicStack.h in Headers */,
|
||||
8B8477152EDA17E600F4D13A /* CAAudioTimeStamp.h in Headers */,
|
||||
8B8477322EDA17E600F4D13A /* CAThreadSafeList.h in Headers */,
|
||||
8B84770D2EDA17E600F4D13A /* CAAUParameter.h in Headers */,
|
||||
8B84777F2EDA17E600F4D13A /* AUBaseHelper.h in Headers */,
|
||||
8B8477772EDA17E600F4D13A /* AUTimestampGenerator.h in Headers */,
|
||||
8B8477282EDA17E600F4D13A /* CADebugPrintf.h in Headers */,
|
||||
8B8477622EDA17E600F4D13A /* CACFMessagePort.h in Headers */,
|
||||
8B8477102EDA17E600F4D13A /* CAAUProcessor.h in Headers */,
|
||||
8B84770C2EDA17E600F4D13A /* CAAudioUnit.h in Headers */,
|
||||
8B8477652EDA17E600F4D13A /* AUViewLocalizedStringKeys.h in Headers */,
|
||||
8B84774B2EDA17E600F4D13A /* CACFDistributedNotification.h in Headers */,
|
||||
8B84770A2EDA17E600F4D13A /* CAComponent.h in Headers */,
|
||||
8B8477182EDA17E600F4D13A /* CAVectorUnitTypes.h in Headers */,
|
||||
8BA05A6E0720730100365D66 /* BitDualPanVersion.h in Headers */,
|
||||
8B84774C2EDA17E600F4D13A /* CAFilePathUtils.h in Headers */,
|
||||
8B84770E2EDA17E600F4D13A /* CAException.h in Headers */,
|
||||
8B8477052EDA17E600F4D13A /* CAAtomic.h in Headers */,
|
||||
8B8477042EDA17E600F4D13A /* CAGuard.h in Headers */,
|
||||
8B84776A2EDA17E600F4D13A /* AUInputElement.h in Headers */,
|
||||
8B8477412EDA17E600F4D13A /* CACFPreferences.h in Headers */,
|
||||
8B8477562EDA17E600F4D13A /* CAByteOrder.h in Headers */,
|
||||
8B8477392EDA17E600F4D13A /* CARingBuffer.h in Headers */,
|
||||
8B8477002EDA17E600F4D13A /* CABool.h in Headers */,
|
||||
8B8477252EDA17E600F4D13A /* CAMutex.h in Headers */,
|
||||
8B84776B2EDA17E600F4D13A /* AUBase.h in Headers */,
|
||||
8BC6025C073B072D006C4272 /* BitDualPan.h in Headers */,
|
||||
8B84771D2EDA17E600F4D13A /* CACFString.h in Headers */,
|
||||
8B84773C2EDA17E600F4D13A /* CASharedLibrary.h in Headers */,
|
||||
8B8477092EDA17E600F4D13A /* CATokenMap.h in Headers */,
|
||||
8B8476FE2EDA17E600F4D13A /* CAExtAudioFile.h in Headers */,
|
||||
8B8477132EDA17E600F4D13A /* CAPThread.h in Headers */,
|
||||
8B84772F2EDA17E600F4D13A /* CAPropertyAddress.h in Headers */,
|
||||
8B8477592EDA17E600F4D13A /* CAReferenceCounted.h in Headers */,
|
||||
8B84777E2EDA17E600F4D13A /* AUBuffer.h in Headers */,
|
||||
8B8477602EDA17E600F4D13A /* CAMath.h in Headers */,
|
||||
8B8477402EDA17E600F4D13A /* CAAutoDisposer.h in Headers */,
|
||||
8B8477072EDA17E600F4D13A /* CACFObject.h in Headers */,
|
||||
8B8477272EDA17E600F4D13A /* CASettingsStorage.h in Headers */,
|
||||
8B8477302EDA17E600F4D13A /* CAXException.h in Headers */,
|
||||
8B84774D2EDA17E600F4D13A /* CATink.h in Headers */,
|
||||
8B84777A2EDA17E600F4D13A /* AUInputFormatConverter.h in Headers */,
|
||||
8B8477552EDA17E600F4D13A /* CAVectorUnit.h in Headers */,
|
||||
8B8477112EDA17E600F4D13A /* CAProcess.h in Headers */,
|
||||
8B8477172EDA17E600F4D13A /* CAAudioValueRange.h in Headers */,
|
||||
8B84772C2EDA17E600F4D13A /* CABitOperations.h in Headers */,
|
||||
8B8477222EDA17E600F4D13A /* CAAudioFileFormats.h in Headers */,
|
||||
8B84771B2EDA17E600F4D13A /* CACFNumber.h in Headers */,
|
||||
8B8477332EDA17E600F4D13A /* CAAudioUnitOutputCapturer.h in Headers */,
|
||||
8B8477442EDA17E600F4D13A /* CADebugMacros.h in Headers */,
|
||||
8B84777D2EDA17E600F4D13A /* AUMIDIDefs.h in Headers */,
|
||||
8B84773D2EDA17E600F4D13A /* CACFData.h in Headers */,
|
||||
8B8477062EDA17E600F4D13A /* CAStreamBasicDescription.h in Headers */,
|
||||
8B84776C2EDA17E600F4D13A /* AUPlugInDispatch.h in Headers */,
|
||||
8B8477082EDA17E600F4D13A /* CAStreamRangedDescription.h in Headers */,
|
||||
8B8477482EDA17E600F4D13A /* CACFPlugIn.h in Headers */,
|
||||
8B84770B2EDA17E600F4D13A /* CAAudioBufferList.h in Headers */,
|
||||
8B8477232EDA17E600F4D13A /* CAAUMIDIMapManager.h in Headers */,
|
||||
8B8477762EDA17E600F4D13A /* AUEffectBase.h in Headers */,
|
||||
8B8477122EDA17E600F4D13A /* CACFDictionary.h in Headers */,
|
||||
8B8477732EDA17E600F4D13A /* AUScopeElement.h in Headers */,
|
||||
8B8477432EDA17E600F4D13A /* CAComponentDescription.h in Headers */,
|
||||
8B8477792EDA17E600F4D13A /* AUSilentTimeout.h in Headers */,
|
||||
8B84773B2EDA17E600F4D13A /* CABufferList.h in Headers */,
|
||||
8B84776D2EDA17E600F4D13A /* AUDispatch.h in Headers */,
|
||||
8B8477712EDA17E600F4D13A /* AUOutputElement.h in Headers */,
|
||||
8B8477372EDA17E600F4D13A /* CALogMacros.h in Headers */,
|
||||
8B84772B2EDA17E600F4D13A /* AUParamInfo.h in Headers */,
|
||||
8B84774A2EDA17E600F4D13A /* CAMixMap.h in Headers */,
|
||||
8B8477572EDA17E600F4D13A /* CACFArray.h in Headers */,
|
||||
8B8476FF2EDA17E600F4D13A /* CACFMachPort.h in Headers */,
|
||||
8B84772A2EDA17E600F4D13A /* CAAUMIDIMap.h in Headers */,
|
||||
8B8477022EDA17E600F4D13A /* CADebugger.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D01CCC60486CAD60068D4B7 /* BitDualPan */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "BitDualPan" */;
|
||||
buildPhases = (
|
||||
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = BitDualPan;
|
||||
productInstallPath = "$(HOME)/Library/Bundles";
|
||||
productName = BitDualPan;
|
||||
productReference = 8D01CCD20486CAD60068D4B7 /* BitDualPan.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 "BitDualPan" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
Base,
|
||||
ja,
|
||||
de,
|
||||
en,
|
||||
fr,
|
||||
);
|
||||
mainGroup = 089C166AFE841209C02AAC07 /* BitDualPan */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D01CCC60486CAD60068D4B7 /* BitDualPan */,
|
||||
);
|
||||
};
|
||||
/* 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 = (
|
||||
8B84773A2EDA17E600F4D13A /* AUOutputBL.cpp in Sources */,
|
||||
8B84775F2EDA17E600F4D13A /* CAAudioFileFormats.cpp in Sources */,
|
||||
8B8477512EDA17E600F4D13A /* CAHostTimeBase.cpp in Sources */,
|
||||
8B8477292EDA17E600F4D13A /* CAXException.cpp in Sources */,
|
||||
8B8477532EDA17E600F4D13A /* CAAudioBufferList.cpp in Sources */,
|
||||
8B8477162EDA17E600F4D13A /* CAFilePathUtils.cpp in Sources */,
|
||||
8B8477142EDA17E600F4D13A /* CAAUParameter.cpp in Sources */,
|
||||
8B8477362EDA17E600F4D13A /* CAAUMIDIMap.cpp in Sources */,
|
||||
8B8477632EDA17E600F4D13A /* CAAudioValueRange.cpp in Sources */,
|
||||
8B8477722EDA17E600F4D13A /* AUDispatch.cpp in Sources */,
|
||||
8B84772D2EDA17E600F4D13A /* CACFPreferences.cpp in Sources */,
|
||||
8B8477702EDA17E600F4D13A /* AUPlugInDispatch.cpp in Sources */,
|
||||
8B84770F2EDA17E600F4D13A /* CAAUProcessor.cpp in Sources */,
|
||||
8B8477242EDA17E600F4D13A /* CACFDictionary.cpp in Sources */,
|
||||
8B8477782EDA17E600F4D13A /* AUBaseHelper.cpp in Sources */,
|
||||
8B84775D2EDA17E600F4D13A /* CADebugger.cpp in Sources */,
|
||||
8B8477312EDA17E600F4D13A /* CAAudioChannelLayout.cpp in Sources */,
|
||||
8B8477342EDA17E600F4D13A /* AUParamInfo.cpp in Sources */,
|
||||
8B8477522EDA17E600F4D13A /* CAPersistence.cpp in Sources */,
|
||||
8B8477462EDA17E600F4D13A /* CADebugPrintf.cpp in Sources */,
|
||||
8B84777B2EDA17E600F4D13A /* AUTimestampGenerator.cpp in Sources */,
|
||||
8B84774E2EDA17E600F4D13A /* CAStreamBasicDescription.cpp in Sources */,
|
||||
8B84771E2EDA17E600F4D13A /* CAAUMIDIMapManager.cpp in Sources */,
|
||||
8B8477492EDA17E600F4D13A /* CASettingsStorage.cpp in Sources */,
|
||||
8B84776E2EDA17E600F4D13A /* AUOutputElement.cpp in Sources */,
|
||||
8B84771A2EDA17E600F4D13A /* CAGuard.cpp in Sources */,
|
||||
8BA05A6B0720730100365D66 /* BitDualPan.cpp in Sources */,
|
||||
8B84775C2EDA17E600F4D13A /* CAMutex.cpp in Sources */,
|
||||
8B8477752EDA17E600F4D13A /* AUEffectBase.cpp in Sources */,
|
||||
8B84775A2EDA17E600F4D13A /* CACFMachPort.cpp in Sources */,
|
||||
8B8477692EDA17E600F4D13A /* AUBase.cpp in Sources */,
|
||||
8B8477352EDA17E600F4D13A /* CASharedLibrary.cpp in Sources */,
|
||||
8B84771C2EDA17E600F4D13A /* CACFDistributedNotification.cpp in Sources */,
|
||||
8B84771F2EDA17E600F4D13A /* CAComponentDescription.cpp in Sources */,
|
||||
8B8477262EDA17E600F4D13A /* CACFString.cpp in Sources */,
|
||||
8B8477662EDA17E600F4D13A /* ComponentBase.cpp in Sources */,
|
||||
8B8477472EDA17E600F4D13A /* CARingBuffer.cpp in Sources */,
|
||||
8B8477672EDA17E600F4D13A /* AUScopeElement.cpp in Sources */,
|
||||
8B8477642EDA17E600F4D13A /* CAAudioUnit.cpp in Sources */,
|
||||
8B8477612EDA17E600F4D13A /* CACFArray.cpp in Sources */,
|
||||
8B84775E2EDA17E600F4D13A /* CABundleLocker.cpp in Sources */,
|
||||
8B8477502EDA17E600F4D13A /* CAProcess.cpp in Sources */,
|
||||
8B84773E2EDA17E600F4D13A /* CAStreamRangedDescription.cpp in Sources */,
|
||||
8B84773F2EDA17E600F4D13A /* CAPThread.cpp in Sources */,
|
||||
8B8477012EDA17E600F4D13A /* CAComponent.cpp in Sources */,
|
||||
8B8477192EDA17E600F4D13A /* CAAudioChannelLayoutObject.cpp in Sources */,
|
||||
8B8477542EDA17E600F4D13A /* CAAudioTimeStamp.cpp in Sources */,
|
||||
8B84775B2EDA17E600F4D13A /* CABufferList.cpp in Sources */,
|
||||
8B8477382EDA17E600F4D13A /* CACFMessagePort.cpp in Sources */,
|
||||
8B8477422EDA17E600F4D13A /* CAVectorUnit.cpp in Sources */,
|
||||
8B8477742EDA17E600F4D13A /* AUInputElement.cpp in Sources */,
|
||||
8B84777C2EDA17E600F4D13A /* AUBuffer.cpp in Sources */,
|
||||
8B8477212EDA17E600F4D13A /* CADebugMacros.cpp in Sources */,
|
||||
8B8477032EDA17E600F4D13A /* CACFNumber.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
8B8477802EDA184600F4D13A /* 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 = BitDualPan.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 = BitDualPan;
|
||||
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 = BitDualPan.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 = BitDualPan;
|
||||
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 "BitDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA244089833B7007656EC /* Debug */,
|
||||
3E4BA245089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "BitDualPan" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3E4BA248089833B7007656EC /* Debug */,
|
||||
3E4BA249089833B7007656EC /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Debug;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||
}
|
||||
7
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
plugins/MacSignedAU/BitDualPan/BitDualPan.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -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>
|
||||
Binary file not shown.
|
|
@ -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 = "BitDualPan.component"
|
||||
BlueprintName = "BitDualPan"
|
||||
ReferencedContainer = "container:BitDualPan.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 = "BitDualPan.component"
|
||||
BlueprintName = "BitDualPan"
|
||||
ReferencedContainer = "container:BitDualPan.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
|
|
@ -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>BitDualPan.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>
|
||||
58
plugins/MacSignedAU/BitDualPan/BitDualPanVersion.h
Executable file
58
plugins/MacSignedAU/BitDualPan/BitDualPanVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* File: BitDualPanVersion.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/18/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 __BitDualPanVersion_h__
|
||||
#define __BitDualPanVersion_h__
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#define kBitDualPanVersion 0xFFFFFFFF
|
||||
#else
|
||||
#define kBitDualPanVersion 0x00010000
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||
#define BitDualPan_COMP_MANF 'Dthr'
|
||||
#define BitDualPan_COMP_SUBTYPE 'bitd'
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#endif
|
||||
|
||||
47
plugins/MacSignedAU/BitDualPan/Info.plist
Executable file
47
plugins/MacSignedAU/BitDualPan/Info.plist
Executable 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>bitd</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>
|
||||
5
plugins/MacSignedAU/BitDualPan/StarterAU_Prefix.pch
Executable file
5
plugins/MacSignedAU/BitDualPan/StarterAU_Prefix.pch
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
//
|
||||
// Prefix header for all source files of the '«PROJECTNAMEASIDENTIFIER»' target in the '«PROJECTNAMEASIDENTIFIER»' project.
|
||||
//
|
||||
|
||||
#include <CoreServices/CoreServices.h>
|
||||
BIN
plugins/MacSignedAU/BitDualPan/en.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacSignedAU/BitDualPan/en.lproj/InfoPlist.strings
Executable file
Binary file not shown.
16
plugins/MacSignedAU/BitDualPan/version.plist
Executable file
16
plugins/MacSignedAU/BitDualPan/version.plist
Executable 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>
|
||||
47
plugins/MacSignedAU/PurestDualPan/Info.plist
Executable file
47
plugins/MacSignedAU/PurestDualPan/Info.plist
Executable 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>pdpn</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>
|
||||
273
plugins/MacSignedAU/PurestDualPan/PurestDualPan.cpp
Executable file
273
plugins/MacSignedAU/PurestDualPan/PurestDualPan.cpp
Executable file
|
|
@ -0,0 +1,273 @@
|
|||
/*
|
||||
* File: PurestDualPan.cpp
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
/*=============================================================================
|
||||
PurestDualPan.cpp
|
||||
|
||||
=============================================================================*/
|
||||
#include "PurestDualPan.h"
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
AUDIOCOMPONENT_ENTRY(AUBaseFactory, PurestDualPan)
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::PurestDualPan
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
PurestDualPan::PurestDualPan(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
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetParameterValueStrings
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::GetParameterValueStrings(AudioUnitScope inScope,
|
||||
AudioUnitParameterID inParameterID,
|
||||
CFArrayRef * outStrings)
|
||||
{
|
||||
|
||||
return kAudioUnitErr_InvalidProperty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetParameterInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::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;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetPropertyInfo
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::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 PurestDualPan::SupportedNumChannels(const AUChannelInfo ** outInfo)
|
||||
{
|
||||
if (outInfo != NULL)
|
||||
{
|
||||
static AUChannelInfo info;
|
||||
info.inChannels = 2;
|
||||
info.outChannels = 2;
|
||||
*outInfo = &info;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::GetProperty
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::GetProperty( AudioUnitPropertyID inID,
|
||||
AudioUnitScope inScope,
|
||||
AudioUnitElement inElement,
|
||||
void * outData )
|
||||
{
|
||||
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||
}
|
||||
|
||||
// PurestDualPan::Initialize
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::Initialize()
|
||||
{
|
||||
ComponentResult result = AUEffectBase::Initialize();
|
||||
if (result == noErr)
|
||||
Reset(kAudioUnitScope_Global, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma mark ____PurestDualPanEffectKernel
|
||||
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::PurestDualPanKernel::Reset()
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
ComponentResult PurestDualPan::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
|
||||
{
|
||||
gainLA = gainLB = 0.5;
|
||||
panLA = panLB = 0.0;
|
||||
gainRA = gainRB = 0.5;
|
||||
panRA = panRB = 1.0;
|
||||
|
||||
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
|
||||
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
|
||||
return noErr;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// PurestDualPan::ProcessBufferLists
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
OSStatus PurestDualPan::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;
|
||||
|
||||
gainLA = gainLB; gainLB = GetParameter( kParam_A );
|
||||
panLA = panLB; panLB = GetParameter( kParam_B );
|
||||
gainRA = gainRB; gainRB = GetParameter( kParam_C );
|
||||
panRA = panRB; panRB = GetParameter( kParam_D );
|
||||
|
||||
while (nSampleFrames-- > 0) {
|
||||
long double inputSampleL = *inputL;
|
||||
long 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 temp = (double)nSampleFrames/inFramesToProcess;
|
||||
long double LpanR = ((panLA*temp) + (panLB*(1.0-temp)))*1.57079633;
|
||||
long double LpanL = 1.57079633 - LpanR;
|
||||
LpanR = sin(LpanR); LpanL = sin(LpanL);
|
||||
long double gainL = ((gainLA*temp) + (gainLB*(1.0-temp)))*2.0;
|
||||
gainL = pow(gainL,gainL + 0.618033988749894848204586);
|
||||
long double RpanR = ((panRA*temp) + (panRB*(1.0-temp)))*1.57079633;
|
||||
long double RpanL = 1.57079633 - RpanR;
|
||||
RpanR = sin(RpanR); RpanL = sin(RpanL);
|
||||
long double gainR = ((gainRA*temp) + (gainRB*(1.0-temp)))*2.0;
|
||||
gainR = pow(gainR,gainR + 0.618033988749894848204586);
|
||||
long double LoutL = LpanL*gainL*inputSampleL;
|
||||
long double LoutR = LpanR*gainL*inputSampleL;
|
||||
long double RoutL = RpanL*gainR*inputSampleR;
|
||||
long double RoutR = RpanR*gainR*inputSampleR;
|
||||
inputSampleL = LoutL + RoutL;
|
||||
inputSampleR = LoutR + RoutR;
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
2
plugins/MacSignedAU/PurestDualPan/PurestDualPan.exp
Executable file
2
plugins/MacSignedAU/PurestDualPan/PurestDualPan.exp
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
_PurestDualPanEntry
|
||||
_PurestDualPanFactory
|
||||
133
plugins/MacSignedAU/PurestDualPan/PurestDualPan.h
Executable file
133
plugins/MacSignedAU/PurestDualPan/PurestDualPan.h
Executable file
|
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* File: PurestDualPan.h
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#include "AUEffectBase.h"
|
||||
#include "PurestDualPanVersion.h"
|
||||
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
#include "AUDebugDispatcher.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __PurestDualPan_h__
|
||||
#define __PurestDualPan_h__
|
||||
|
||||
|
||||
#pragma mark ____PurestDualPan 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("L Vol");
|
||||
static CFStringRef kParameterBName = CFSTR("L Pan");
|
||||
static CFStringRef kParameterCName = CFSTR("R Vol");
|
||||
static CFStringRef kParameterDName = CFSTR("R Pan");
|
||||
|
||||
enum {
|
||||
kParam_A =0,
|
||||
kParam_B =1,
|
||||
kParam_C =2,
|
||||
kParam_D =3,
|
||||
//Add your parameters here...
|
||||
kNumberOfParameters=4
|
||||
};
|
||||
|
||||
#pragma mark ____PurestDualPan
|
||||
class PurestDualPan : public AUEffectBase
|
||||
{
|
||||
public:
|
||||
PurestDualPan(AudioUnit component);
|
||||
#if AU_DEBUG_DISPATCHER
|
||||
virtual ~PurestDualPan () { 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 kPurestDualPanVersion; }
|
||||
|
||||
private:
|
||||
|
||||
double gainLA, gainLB;
|
||||
double gainRA, gainRB;
|
||||
double panLA, panLB;
|
||||
double panRA, panRB;
|
||||
|
||||
uint32_t fpdL;
|
||||
uint32_t fpdR;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#endif
|
||||
61
plugins/MacSignedAU/PurestDualPan/PurestDualPan.r
Executable file
61
plugins/MacSignedAU/PurestDualPan/PurestDualPan.r
Executable file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* File: PurestDualPan.r
|
||||
*
|
||||
* Version: 1.0
|
||||
*
|
||||
* Created: 11/20/25
|
||||
*
|
||||
* Copyright: Copyright © 2025 Airwindows, Airwindows uses the MIT license
|
||||
*
|
||||
* Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
|
||||
* consideration of your agreement to the following terms, and your use, installation, modification
|
||||
* or redistribution of this Apple software constitutes acceptance of these terms. If you do
|
||||
* not agree with these terms, please do not use, install, modify or redistribute this Apple
|
||||
* software.
|
||||
*
|
||||
* In consideration of your agreement to abide by the following terms, and subject to these terms,
|
||||
* Apple grants you a personal, non-exclusive license, under Apple's copyrights in this
|
||||
* original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the
|
||||
* Apple Software, with or without modifications, in source and/or binary forms; provided that if you
|
||||
* redistribute the Apple Software in its entirety and without modifications, you must retain this
|
||||
* notice and the following text and disclaimers in all such redistributions of the Apple Software.
|
||||
* Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to
|
||||
* endorse or promote products derived from the Apple Software without specific prior written
|
||||
* permission from Apple. Except as expressly stated in this notice, no other rights or
|
||||
* licenses, express or implied, are granted by Apple herein, including but not limited to any
|
||||
* patent rights that may be infringed by your derivative works or by other works in which the
|
||||
* Apple Software may be incorporated.
|
||||
*
|
||||
* The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE
|
||||
* OR IN COMBINATION WITH YOUR PRODUCTS.
|
||||
*
|
||||
* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
|
||||
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER
|
||||
* UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN
|
||||
* IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#include <AudioUnit/AudioUnit.r>
|
||||
|
||||
#include "PurestDualPanVersion.h"
|
||||
|
||||
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||
#define kAudioUnitResID_PurestDualPan 1000
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PurestDualPan~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#define RES_ID kAudioUnitResID_PurestDualPan
|
||||
#define COMP_TYPE kAudioUnitType_Effect
|
||||
#define COMP_SUBTYPE PurestDualPan_COMP_SUBTYPE
|
||||
#define COMP_MANUF PurestDualPan_COMP_MANF
|
||||
|
||||
#define VERSION kPurestDualPanVersion
|
||||
#define NAME "Airwindows: PurestDualPan"
|
||||
#define DESCRIPTION "PurestDualPan AU"
|
||||
#define ENTRY_POINT "PurestDualPanEntry"
|
||||
|
||||
#include "AUResources.r"
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue