ChimeyDeluxe

This commit is contained in:
Christopher Johnson 2025-11-07 19:47:00 -05:00
parent d27f470c07
commit 4d76432e93
289 changed files with 82528 additions and 3674 deletions

View file

@ -116,6 +116,9 @@ add_airwindows_plugin(Console8SubIn)
add_airwindows_plugin(Console8SubOut)
add_airwindows_plugin(Console9Buss)
add_airwindows_plugin(Console9Channel)
add_airwindows_plugin(ConsoleHBuss)
add_airwindows_plugin(ConsoleHChannel)
add_airwindows_plugin(ConsoleHPre)
add_airwindows_plugin(ConsoleLABuss)
add_airwindows_plugin(ConsoleLAChannel)
add_airwindows_plugin(ConsoleMCBuss)

View file

@ -24,17 +24,16 @@ ChimeyDeluxe::ChimeyDeluxe(audioMasterCallback audioMaster) :
J = 0.5;
for(int x=0; x<17; x++) {
for (int w = 0; w < bez_total; w++) bezComp[w][x] = 0.0;
bezComp[bez_cycle][x] = 1.0;
for(int y=0; y<14; y++) {
angSL[x][y] = 0.0;angAL[x][y] = 0.0;
angSR[x][y] = 0.0;angAR[x][y] = 0.0;
angSL[x][y] = 0.0;
angAL[x][y] = 0.0;
angSR[x][y] = 0.0;
angAR[x][y] = 0.0;
}
}
for(int y=0; y<14; y++) angG[y] = 0.0;
muCompL = 1.0;
muSpdL = 100.0;
muCompR = 1.0;
muSpdR = 100.0;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;

View file

@ -74,15 +74,29 @@ private:
double angSL[18][15];
double angAL[18][15];
double muCompL;
double muSpdL;
double angSR[18][15];
double angAR[18][15];
double muCompR;
double muSpdR;
double angG[15];
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezComp[bez_total][18];
uint32_t fpdL;
uint32_t fpdR;

View file

@ -20,43 +20,46 @@ void ChimeyDeluxe::processReplacing(float **inputs, float **outputs, VstInt32 sa
double drive = 1.0;
double pad = 1.0;
angG[1] = A+0.5;
angG[1] = (A+1.5)*0.5;
if (pad > angG[1]) pad = angG[1];
if (drive < angG[1]) drive = angG[1];
angG[0] = (1.0+angG[1])*0.5; //if boost, boost half
if (angG[0] > angG[1]) angG[0] = angG[1];
angG[2] = B+0.5;
angG[2] = (B+1.5)*0.5;
if (pad > angG[2]) pad = angG[2];
if (drive < angG[2]) drive = angG[2];
angG[3] = C+0.5;
angG[3] = (C+1.5)*0.5;
if (pad > angG[3]) pad = angG[3];
if (drive < angG[3]) drive = angG[3];
angG[4] = D+0.5;
angG[4] = (D+1.5)*0.5;
if (pad > angG[4]) pad = angG[4];
if (drive < angG[4]) drive = angG[4];
angG[5] = E+0.5;
angG[5] = (E+1.5)*0.5;
if (pad > angG[5]) pad = angG[5];
if (drive < angG[5]) drive = angG[5];
angG[6] = F+0.5;
angG[6] = (F+1.5)*0.5;
if (pad > angG[6]) pad = angG[6];
if (drive < angG[6]) drive = angG[6];
angG[7] = G+0.5;
angG[7] = (G+1.5)*0.5;
if (pad > angG[7]) pad = angG[7];
if (drive < angG[7]) drive = angG[7];
angG[8] = H+0.5;
angG[8] = (H+1.5)*0.5;
if (pad > angG[8]) pad = angG[8];
if (drive < angG[8]) drive = angG[8];
angG[9] = I+0.5;
angG[9] = (I+1.5)*0.5;
if (pad > angG[9]) pad = angG[9];
if (drive < angG[9]) drive = angG[9];
angG[10] = J+0.5;
angG[10] = (J+1.5)*0.5;
if (pad > angG[10]) pad = angG[10];
if (drive < angG[10]) drive = angG[10];
angG[11] = (angG[10]+1.0)*0.5;
angG[12] = (angG[11]+1.0)*0.5;
double tune = 0.618+(overallscale*0.0055);
double threshold = 1.0-(drive*0.23);
double adjSpd = ((drive*120.0)+50.0)*overallscale;
angG[12] = angG[11] = angG[10];
if (drive > 1.0) drive = pow(drive,drive*2.0);
double tune = 0.618+(overallscale*0.0055);
double bezRez = (pad * drive * 0.0005)/overallscale;
int bezFreqFraction = (int)(1.0/bezRez);
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
bezRez = 1.0 / bezFreqFraction;
bezFreqTrim = 1.0-(bezRez*bezFreqTrim);
while (--sampleFrames >= 0)
{
@ -67,64 +70,56 @@ void ChimeyDeluxe::processReplacing(float **inputs, float **outputs, VstInt32 sa
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSampleL; inputSampleL = 0.0;
double bandL = inputSampleL; inputSampleL = 0.0;
double bandR = inputSampleR; inputSampleR = 0.0;
for (int y = 0; y < 12; y++) {
angAL[x][y] = (angAL[x][y]*(1.0-fr)) + ((band-angSL[x][y])*fr);
double temp = band; band = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(band*fr);
angSL[x][y] = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSampleL += ((temp-band)*angG[y]);
angAL[x][y] = (angAL[x][y]*(1.0-fr)) + ((bandL-angSL[x][y])*fr);
double tempL = bandL; bandL = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(bandL*fr);
angSL[x][y] = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(bandL*fr);
inputSampleL += ((tempL-bandL)*angG[y]);
angAR[x][y] = (angAR[x][y]*(1.0-fr)) + ((bandR-angSR[x][y])*fr);
double tempR = bandR; bandR = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(bandR*fr);
angSR[x][y] = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(bandR*fr);
inputSampleR += ((tempR-bandR)*angG[y]);
fr *= tune;
}
inputSampleL += band;
inputSampleL *= threshold;
inputSampleL *= (muCompL/threshold);
if (fabs(inputSampleL) > threshold)
{
muCompL *= muSpdL;
if (threshold/fabs(inputSampleL) < threshold) muCompL += threshold*fabs(inputSampleL);
else muCompL -= threshold/fabs(inputSampleL);
muCompL /= muSpdL;
} else {
muCompL *= (muSpdL*muSpdL);
muCompL += ((1.1+threshold)-fabs(inputSampleL));
muCompL /= (muSpdL*muSpdL);
inputSampleL += bandL;
inputSampleR += bandR; //end of filter part
bezComp[bez_cycle][x] += bezRez;
bezComp[bez_SampL][x] += (fabs(inputSampleL) * bezRez);
bezComp[bez_SampR][x] += (fabs(inputSampleR) * bezRez);
if (bezComp[bez_cycle][x] > 1.0) {
bezComp[bez_cycle][x] = 0.0;
bezComp[bez_CL][x] = bezComp[bez_BL][x];
bezComp[bez_BL][x] = bezComp[bez_AL][x];
bezComp[bez_AL][x] = bezComp[bez_SampL][x];
bezComp[bez_SampL][x] = 0.0;
bezComp[bez_CR][x] = bezComp[bez_BR][x];
bezComp[bez_BR][x] = bezComp[bez_AR][x];
bezComp[bez_AR][x] = bezComp[bez_SampR][x];
bezComp[bez_SampR][x] = 0.0;
}
muCompL = fmax(fmin(muCompL,1.0),threshold);
inputSampleL *= (muCompL*muCompL);
muSpdL = fmax(fmin(((muSpdL*(muSpdL-1.0))+(fabs(inputSampleL*adjSpd)))/muSpdL,adjSpd*2.0),adjSpd);
double z = bezComp[bez_cycle][x]*bezFreqTrim;
double CBL = (bezComp[bez_CL][x]*(1.0-z))+(bezComp[bez_BL][x]*z);
double BAL = (bezComp[bez_BL][x]*(1.0-z))+(bezComp[bez_AL][x]*z);
double CBAL = (bezComp[bez_BL][x]+(CBL*(1.0-z))+(BAL*z));
double CBR = (bezComp[bez_CR][x]*(1.0-z))+(bezComp[bez_BR][x]*z);
double BAR = (bezComp[bez_BR][x]*(1.0-z))+(bezComp[bez_AR][x]*z);
double CBAR = (bezComp[bez_BR][x]+(CBR*(1.0-z))+(BAR*z));
CBAL = fmin(fmax(CBAL*drive*0.23,0.0),M_PI_2);
CBAR = fmin(fmax(CBAR*drive*0.23,0.0),M_PI_2);
inputSampleL *= 1.0-sin(CBAL);
inputSampleR *= 1.0-sin(CBAR);
}
inputSampleL = sin(fmin(fmax(inputSampleL,-M_PI_2),M_PI_2));
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSampleR; inputSampleR = 0.0;
for (int y = 0; y < 12; y++) {
angAR[x][y] = (angAR[x][y]*(1.0-fr)) + ((band-angSR[x][y])*fr);
double temp = band; band = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(band*fr);
angSR[x][y] = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSampleR += ((temp-band)*angG[y]);
fr *= tune;
}
inputSampleR += band;
inputSampleR *= threshold;
inputSampleR *= (muCompR/threshold);
if (fabs(inputSampleR) > threshold)
{
muCompR *= muSpdR;
if (threshold/fabs(inputSampleR) < threshold) muCompR += threshold*fabs(inputSampleR);
else muCompR -= threshold/fabs(inputSampleR);
muCompR /= muSpdR;
} else {
muCompR *= (muSpdR*muSpdR);
muCompR += ((1.1+threshold)-fabs(inputSampleR));
muCompR /= (muSpdR*muSpdR);
}
muCompR = fmax(fmin(muCompR,1.0),threshold);
inputSampleR *= (muCompR*muCompR);
muSpdR = fmax(fmin(((muSpdR*(muSpdR-1.0))+(fabs(inputSampleR*adjSpd)))/muSpdR,adjSpd*2.0),adjSpd);
}
inputSampleR = sin(fmin(fmax(inputSampleR,-M_PI_2),M_PI_2));
inputSampleL /= drive;
inputSampleR /= drive;
inputSampleL = fmin(fmax(inputSampleL*pad,-1.0),1.0);
inputSampleR = fmin(fmax(inputSampleR*pad,-1.0),1.0);
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
@ -157,43 +152,46 @@ void ChimeyDeluxe::processDoubleReplacing(double **inputs, double **outputs, Vst
double drive = 1.0;
double pad = 1.0;
angG[1] = A+0.5;
angG[1] = (A+1.5)*0.5;
if (pad > angG[1]) pad = angG[1];
if (drive < angG[1]) drive = angG[1];
angG[0] = (1.0+angG[1])*0.5; //if boost, boost half
if (angG[0] > angG[1]) angG[0] = angG[1];
angG[2] = B+0.5;
angG[2] = (B+1.5)*0.5;
if (pad > angG[2]) pad = angG[2];
if (drive < angG[2]) drive = angG[2];
angG[3] = C+0.5;
angG[3] = (C+1.5)*0.5;
if (pad > angG[3]) pad = angG[3];
if (drive < angG[3]) drive = angG[3];
angG[4] = D+0.5;
angG[4] = (D+1.5)*0.5;
if (pad > angG[4]) pad = angG[4];
if (drive < angG[4]) drive = angG[4];
angG[5] = E+0.5;
angG[5] = (E+1.5)*0.5;
if (pad > angG[5]) pad = angG[5];
if (drive < angG[5]) drive = angG[5];
angG[6] = F+0.5;
angG[6] = (F+1.5)*0.5;
if (pad > angG[6]) pad = angG[6];
if (drive < angG[6]) drive = angG[6];
angG[7] = G+0.5;
angG[7] = (G+1.5)*0.5;
if (pad > angG[7]) pad = angG[7];
if (drive < angG[7]) drive = angG[7];
angG[8] = H+0.5;
angG[8] = (H+1.5)*0.5;
if (pad > angG[8]) pad = angG[8];
if (drive < angG[8]) drive = angG[8];
angG[9] = I+0.5;
angG[9] = (I+1.5)*0.5;
if (pad > angG[9]) pad = angG[9];
if (drive < angG[9]) drive = angG[9];
angG[10] = J+0.5;
angG[10] = (J+1.5)*0.5;
if (pad > angG[10]) pad = angG[10];
if (drive < angG[10]) drive = angG[10];
angG[11] = (angG[10]+1.0)*0.5;
angG[12] = (angG[11]+1.0)*0.5;
double tune = 0.618+(overallscale*0.0055);
double threshold = 1.0-(drive*0.23);
double adjSpd = ((drive*120.0)+50.0)*overallscale;
angG[12] = angG[11] = angG[10];
if (drive > 1.0) drive = pow(drive,drive*2.0);
double tune = 0.618+(overallscale*0.0055);
double bezRez = (pad * drive * 0.0005)/overallscale;
int bezFreqFraction = (int)(1.0/bezRez);
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
bezRez = 1.0 / bezFreqFraction;
bezFreqTrim = 1.0-(bezRez*bezFreqTrim);
while (--sampleFrames >= 0)
{
@ -204,63 +202,55 @@ void ChimeyDeluxe::processDoubleReplacing(double **inputs, double **outputs, Vst
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSampleL; inputSampleL = 0.0;
double bandL = inputSampleL; inputSampleL = 0.0;
double bandR = inputSampleR; inputSampleR = 0.0;
for (int y = 0; y < 12; y++) {
angAL[x][y] = (angAL[x][y]*(1.0-fr)) + ((band-angSL[x][y])*fr);
double temp = band; band = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(band*fr);
angSL[x][y] = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSampleL += ((temp-band)*angG[y]);
angAL[x][y] = (angAL[x][y]*(1.0-fr)) + ((bandL-angSL[x][y])*fr);
double tempL = bandL; bandL = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(bandL*fr);
angSL[x][y] = ((angSL[x][y]+(angAL[x][y]*fr)) * (1.0-fr))+(bandL*fr);
inputSampleL += ((tempL-bandL)*angG[y]);
angAR[x][y] = (angAR[x][y]*(1.0-fr)) + ((bandR-angSR[x][y])*fr);
double tempR = bandR; bandR = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(bandR*fr);
angSR[x][y] = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(bandR*fr);
inputSampleR += ((tempR-bandR)*angG[y]);
fr *= tune;
}
inputSampleL += band;
inputSampleL *= threshold;
inputSampleL *= (muCompL/threshold);
if (fabs(inputSampleL) > threshold)
{
muCompL *= muSpdL;
if (threshold/fabs(inputSampleL) < threshold) muCompL += threshold*fabs(inputSampleL);
else muCompL -= threshold/fabs(inputSampleL);
muCompL /= muSpdL;
} else {
muCompL *= (muSpdL*muSpdL);
muCompL += ((1.1+threshold)-fabs(inputSampleL));
muCompL /= (muSpdL*muSpdL);
inputSampleL += bandL;
inputSampleR += bandR; //end of filter part
bezComp[bez_cycle][x] += bezRez;
bezComp[bez_SampL][x] += (fabs(inputSampleL) * bezRez);
bezComp[bez_SampR][x] += (fabs(inputSampleR) * bezRez);
if (bezComp[bez_cycle][x] > 1.0) {
bezComp[bez_cycle][x] = 0.0;
bezComp[bez_CL][x] = bezComp[bez_BL][x];
bezComp[bez_BL][x] = bezComp[bez_AL][x];
bezComp[bez_AL][x] = bezComp[bez_SampL][x];
bezComp[bez_SampL][x] = 0.0;
bezComp[bez_CR][x] = bezComp[bez_BR][x];
bezComp[bez_BR][x] = bezComp[bez_AR][x];
bezComp[bez_AR][x] = bezComp[bez_SampR][x];
bezComp[bez_SampR][x] = 0.0;
}
muCompL = fmax(fmin(muCompL,1.0),threshold);
inputSampleL *= (muCompL*muCompL);
muSpdL = fmax(fmin(((muSpdL*(muSpdL-1.0))+(fabs(inputSampleL*adjSpd)))/muSpdL,adjSpd*2.0),adjSpd);
double z = bezComp[bez_cycle][x]*bezFreqTrim;
double CBL = (bezComp[bez_CL][x]*(1.0-z))+(bezComp[bez_BL][x]*z);
double BAL = (bezComp[bez_BL][x]*(1.0-z))+(bezComp[bez_AL][x]*z);
double CBAL = (bezComp[bez_BL][x]+(CBL*(1.0-z))+(BAL*z));
double CBR = (bezComp[bez_CR][x]*(1.0-z))+(bezComp[bez_BR][x]*z);
double BAR = (bezComp[bez_BR][x]*(1.0-z))+(bezComp[bez_AR][x]*z);
double CBAR = (bezComp[bez_BR][x]+(CBR*(1.0-z))+(BAR*z));
CBAL = fmin(fmax(CBAL*drive*0.23,0.0),M_PI_2);
CBAR = fmin(fmax(CBAR*drive*0.23,0.0),M_PI_2);
inputSampleL *= 1.0-sin(CBAL);
inputSampleR *= 1.0-sin(CBAR);
}
inputSampleL = sin(fmin(fmax(inputSampleL,-M_PI_2),M_PI_2));
inputSampleL /= drive;
inputSampleR /= drive;
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSampleR; inputSampleR = 0.0;
for (int y = 0; y < 12; y++) {
angAR[x][y] = (angAR[x][y]*(1.0-fr)) + ((band-angSR[x][y])*fr);
double temp = band; band = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(band*fr);
angSR[x][y] = ((angSR[x][y]+(angAR[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSampleR += ((temp-band)*angG[y]);
fr *= tune;
}
inputSampleR += band;
inputSampleR *= threshold;
inputSampleR *= (muCompR/threshold);
if (fabs(inputSampleR) > threshold)
{
muCompR *= muSpdR;
if (threshold/fabs(inputSampleR) < threshold) muCompR += threshold*fabs(inputSampleR);
else muCompR -= threshold/fabs(inputSampleR);
muCompR /= muSpdR;
} else {
muCompR *= (muSpdR*muSpdR);
muCompR += ((1.1+threshold)-fabs(inputSampleR));
muCompR /= (muSpdR*muSpdR);
}
muCompR = fmax(fmin(muCompR,1.0),threshold);
inputSampleR *= (muCompR*muCompR);
muSpdR = fmax(fmin(((muSpdR*(muSpdR-1.0))+(fabs(inputSampleR*adjSpd)))/muSpdR,adjSpd*2.0),adjSpd);
}
inputSampleR = sin(fmin(fmax(inputSampleR,-M_PI_2),M_PI_2));
inputSampleL = fmin(fmax(inputSampleL*pad,-1.0),1.0);
inputSampleR = fmin(fmax(inputSampleR*pad,-1.0),1.0);
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);

View file

@ -0,0 +1,211 @@
/* ========================================
* ConsoleHBuss - ConsoleHBuss.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHBuss_H
#include "ConsoleHBuss.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new ConsoleHBuss(audioMaster);}
ConsoleHBuss::ConsoleHBuss(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
HIG = 0.5;
MID = 0.5;
LOW = 0.5;
THR = 1.0;
LOP = 1.0;
HIP = 0.0;
PAN = 0.5;
FAD = 0.5;
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
highFastRIIR = 0.0;
lowFastLIIR = 0.0;
lowFastRIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0;
//Dynamics2
for (int x = 0; x < hilp_total; x++) {
highpass[x] = 0.0;
lowpass[x] = 0.0;
}
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0; avg32R[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0; avg16R[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0; avg8R[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0; avg4R[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0; avg2R[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0; lastSlewR = 0.0;
lastSlewpleL = 0.0; lastSlewpleR = 0.0;
//preTapeHack
panA = 0.5; panB = 0.5;
inTrimA = 0.5; inTrimB = 0.5;
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
}
ConsoleHBuss::~ConsoleHBuss() {}
VstInt32 ConsoleHBuss::getVendorVersion () {return 1000;}
void ConsoleHBuss::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void ConsoleHBuss::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 ConsoleHBuss::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = HIG;
chunkData[1] = MID;
chunkData[2] = LOW;
chunkData[3] = THR;
chunkData[4] = LOP;
chunkData[5] = HIP;
chunkData[6] = PAN;
chunkData[7] = FAD;
/* 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 ConsoleHBuss::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
HIG = pinParameter(chunkData[0]);
MID = pinParameter(chunkData[1]);
LOW = pinParameter(chunkData[2]);
THR = pinParameter(chunkData[3]);
LOP = pinParameter(chunkData[4]);
HIP = pinParameter(chunkData[5]);
PAN = pinParameter(chunkData[6]);
FAD = pinParameter(chunkData[7]);
/* 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 ConsoleHBuss::setParameter(VstInt32 index, float value) {
switch (index) {
case kParam_HIG: HIG = value; break;
case kParam_MID: MID = value; break;
case kParam_LOW: LOW = value; break;
case kParam_THR: THR = value; break;
case kParam_LOP: LOP = value; break;
case kParam_HIP: HIP = value; break;
case kParam_PAN: PAN = value; break;
case kParam_FAD: FAD = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float ConsoleHBuss::getParameter(VstInt32 index) {
switch (index) {
case kParam_HIG: return HIG; break;
case kParam_MID: return MID; break;
case kParam_LOW: return LOW; break;
case kParam_THR: return THR; break;
case kParam_LOP: return LOP; break;
case kParam_HIP: return HIP; break;
case kParam_PAN: return PAN; break;
case kParam_FAD: return FAD; 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 ConsoleHBuss::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParam_HIG: vst_strncpy (text, "High", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "Mid", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "Low", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "Thresh", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "Lowpass", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "Hipass", kVstMaxParamStrLen); break;
case kParam_PAN: vst_strncpy (text, "Pan", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "Fader", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void ConsoleHBuss::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParam_HIG: float2string (HIG, text, kVstMaxParamStrLen); break;
case kParam_MID: float2string (MID, text, kVstMaxParamStrLen); break;
case kParam_LOW: float2string (LOW, text, kVstMaxParamStrLen); break;
case kParam_THR: float2string (THR, text, kVstMaxParamStrLen); break;
case kParam_LOP: float2string (LOP, text, kVstMaxParamStrLen); break;
case kParam_HIP: float2string (HIP, text, kVstMaxParamStrLen); break;
case kParam_PAN: float2string (PAN, text, kVstMaxParamStrLen); break;
case kParam_FAD: float2string (FAD, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void ConsoleHBuss::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParam_HIG: vst_strncpy (text, "eq", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "dyn", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "fltr", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_PAN: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 ConsoleHBuss::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool ConsoleHBuss::getEffectName(char* name) {
vst_strncpy(name, "ConsoleHBuss", kVstMaxProductStrLen); return true;
}
VstPlugCategory ConsoleHBuss::getPlugCategory() {return kPlugCategEffect;}
bool ConsoleHBuss::getProductString(char* text) {
vst_strncpy (text, "airwindows ConsoleHBuss", kVstMaxProductStrLen); return true;
}
bool ConsoleHBuss::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,158 @@
/* ========================================
* ConsoleHBuss - ConsoleHBuss.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHBuss_H
#define __ConsoleHBuss_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParam_HIG =0,
kParam_MID =1,
kParam_LOW =2,
kParam_THR =3,
kParam_LOP =4,
kParam_HIP =5,
kParam_PAN =6,
kParam_FAD =7,
//Add your parameters here...
kNumParameters=8
};
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'chpb'; //Change this to what the AU identity is!
class ConsoleHBuss :
public AudioEffectX
{
public:
ConsoleHBuss(audioMasterCallback audioMaster);
~ConsoleHBuss();
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 HIG;
float MID;
float LOW;
float THR;
float LOP;
float HIP;
float PAN;
float FAD;
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
//Dynamics2
enum {
hilp_freq, hilp_temp,
hilp_a0, hilp_aA0, hilp_aB0, hilp_a1, hilp_aA1, hilp_aB1, hilp_b1, hilp_bA1, hilp_bB1, hilp_b2, hilp_bA2, hilp_bB2,
hilp_c0, hilp_cA0, hilp_cB0, hilp_c1, hilp_cA1, hilp_cB1, hilp_d1, hilp_dA1, hilp_dB1, hilp_d2, hilp_dA2, hilp_dB2,
hilp_e0, hilp_eA0, hilp_eB0, hilp_e1, hilp_eA1, hilp_eB1, hilp_f1, hilp_fA1, hilp_fB1, hilp_f2, hilp_fA2, hilp_fB2,
hilp_aL1, hilp_aL2, hilp_aR1, hilp_aR2,
hilp_cL1, hilp_cL2, hilp_cR1, hilp_cR2,
hilp_eL1, hilp_eL2, hilp_eR1, hilp_eR2,
hilp_total
};
double highpass[hilp_total];
double lowpass[hilp_total];
double panA;
double panB;
double inTrimA;
double inTrimB;
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

View file

@ -0,0 +1,926 @@
/* ========================================
* ConsoleHBuss - ConsoleHBuss.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHBuss_H
#include "ConsoleHBuss.h"
#endif
void ConsoleHBuss::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
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double trebleGain = (HIG-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (MID-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (LOW-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/getSampleRate());
double omega = 2.0*M_PI*(4000.0/getSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/getSampleRate());
omega = 2.0*M_PI*(200.0/getSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
//SmoothEQ3
double bezCThresh = pow(1.0-THR, 6.0) * 8.0;
double bezRez = pow(1.0-THR, 12.360679774997898) / overallscale;
double sloRez = pow(1.0-THR,10.0) / overallscale;
sloRez = fmin(fmax(sloRez,0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.00001),1.0);
//Dynamics2
highpass[hilp_freq] = ((pow(HIP,3)*24000.0)+10.0)/getSampleRate();
if (highpass[hilp_freq] > 0.495) highpass[hilp_freq] = 0.495;
bool highpassEngage = true; if (HIP == 0.0) highpassEngage = false;
lowpass[hilp_freq] = ((pow(LOP,3)*24000.0)+10.0)/getSampleRate();
if (lowpass[hilp_freq] > 0.495) lowpass[hilp_freq] = 0.495;
bool lowpassEngage = true; if (LOP == 0.0) lowpassEngage = false;
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
//previous run through the buffer is still in the filter, so we move it
//to the A section and now it's the new starting point.
//On the buss, highpass and lowpass are isolators meant to be moved,
//so they are interpolated where the channels are not
biqK = tan(M_PI * highpass[hilp_freq]); //highpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
highpass[hilp_aB0] = norm;
highpass[hilp_aB1] = -2.0 * highpass[hilp_aB0];
highpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
highpass[hilp_cB0] = norm;
highpass[hilp_cB1] = -2.0 * highpass[hilp_cB0];
highpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
highpass[hilp_eB0] = norm;
highpass[hilp_eB1] = -2.0 * highpass[hilp_eB0];
highpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
biqK = tan(M_PI * lowpass[hilp_freq]); //lowpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
lowpass[hilp_aB0] = biqK * biqK * norm;
lowpass[hilp_aB1] = 2.0 * lowpass[hilp_aB0];
lowpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
lowpass[hilp_cB0] = biqK * biqK * norm;
lowpass[hilp_cB1] = 2.0 * lowpass[hilp_cB0];
lowpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
lowpass[hilp_eB0] = biqK * biqK * norm;
lowpass[hilp_eB1] = 2.0 * lowpass[hilp_eB0];
lowpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
if (highpass[hilp_aA0] == 0.0) { // if we have just started, start directly with raw info
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
}
panA = panB; panB = PAN*1.57079633;
inTrimA = inTrimB; inTrimB = FAD*2.0;
//Console
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;
const double temp = (double)sampleFrames/inFramesToProcess;
highpass[hilp_a0] = (highpass[hilp_aA0]*temp)+(highpass[hilp_aB0]*(1.0-temp));
highpass[hilp_a1] = (highpass[hilp_aA1]*temp)+(highpass[hilp_aB1]*(1.0-temp));
highpass[hilp_b1] = (highpass[hilp_bA1]*temp)+(highpass[hilp_bB1]*(1.0-temp));
highpass[hilp_b2] = (highpass[hilp_bA2]*temp)+(highpass[hilp_bB2]*(1.0-temp));
highpass[hilp_c0] = (highpass[hilp_cA0]*temp)+(highpass[hilp_cB0]*(1.0-temp));
highpass[hilp_c1] = (highpass[hilp_cA1]*temp)+(highpass[hilp_cB1]*(1.0-temp));
highpass[hilp_d1] = (highpass[hilp_dA1]*temp)+(highpass[hilp_dB1]*(1.0-temp));
highpass[hilp_d2] = (highpass[hilp_dA2]*temp)+(highpass[hilp_dB2]*(1.0-temp));
highpass[hilp_e0] = (highpass[hilp_eA0]*temp)+(highpass[hilp_eB0]*(1.0-temp));
highpass[hilp_e1] = (highpass[hilp_eA1]*temp)+(highpass[hilp_eB1]*(1.0-temp));
highpass[hilp_f1] = (highpass[hilp_fA1]*temp)+(highpass[hilp_fB1]*(1.0-temp));
highpass[hilp_f2] = (highpass[hilp_fA2]*temp)+(highpass[hilp_fB2]*(1.0-temp));
lowpass[hilp_a0] = (lowpass[hilp_aA0]*temp)+(lowpass[hilp_aB0]*(1.0-temp));
lowpass[hilp_a1] = (lowpass[hilp_aA1]*temp)+(lowpass[hilp_aB1]*(1.0-temp));
lowpass[hilp_b1] = (lowpass[hilp_bA1]*temp)+(lowpass[hilp_bB1]*(1.0-temp));
lowpass[hilp_b2] = (lowpass[hilp_bA2]*temp)+(lowpass[hilp_bB2]*(1.0-temp));
lowpass[hilp_c0] = (lowpass[hilp_cA0]*temp)+(lowpass[hilp_cB0]*(1.0-temp));
lowpass[hilp_c1] = (lowpass[hilp_cA1]*temp)+(lowpass[hilp_cB1]*(1.0-temp));
lowpass[hilp_d1] = (lowpass[hilp_dA1]*temp)+(lowpass[hilp_dB1]*(1.0-temp));
lowpass[hilp_d2] = (lowpass[hilp_dA2]*temp)+(lowpass[hilp_dB2]*(1.0-temp));
lowpass[hilp_e0] = (lowpass[hilp_eA0]*temp)+(lowpass[hilp_eB0]*(1.0-temp));
lowpass[hilp_e1] = (lowpass[hilp_eA1]*temp)+(lowpass[hilp_eB1]*(1.0-temp));
lowpass[hilp_f1] = (lowpass[hilp_fA1]*temp)+(lowpass[hilp_fB1]*(1.0-temp));
lowpass[hilp_f2] = (lowpass[hilp_fA2]*temp)+(lowpass[hilp_fB2]*(1.0-temp));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_a0])+highpass[hilp_aL1];
highpass[hilp_aL1] = (inputSampleL*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aL2];
highpass[hilp_aL2] = (inputSampleL*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_a0])+highpass[hilp_aR1];
highpass[hilp_aR1] = (inputSampleR*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aR2];
highpass[hilp_aR2] = (inputSampleR*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_aR1] = highpass[hilp_aR2] = highpass[hilp_aL1] = highpass[hilp_aL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_a0])+lowpass[hilp_aL1];
lowpass[hilp_aL1] = (inputSampleL*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aL2];
lowpass[hilp_aL2] = (inputSampleL*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_a0])+lowpass[hilp_aR1];
lowpass[hilp_aR1] = (inputSampleR*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aR2];
lowpass[hilp_aR2] = (inputSampleR*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_aR1] = lowpass[hilp_aR2] = lowpass[hilp_aL1] = lowpass[hilp_aL2] = 0.0;
//first Highpass/Lowpass blocks aliasing before the nonlinearity of ConsoleXBuss and Parametric
if (inputSampleL > 1.0) inputSampleL = 1.0;
else if (inputSampleL > 0.0) inputSampleL = -expm1((log1p(-inputSampleL) * 0.6180339887498949));
if (inputSampleL < -1.0) inputSampleL = -1.0;
else if (inputSampleL < 0.0) inputSampleL = expm1((log1p(inputSampleL) * 0.6180339887498949));
if (inputSampleR > 1.0) inputSampleR = 1.0;
else if (inputSampleR > 0.0) inputSampleR = -expm1((log1p(-inputSampleR) * 0.6180339887498949));
if (inputSampleR < -1.0) inputSampleR = -1.0;
else if (inputSampleR < 0.0) inputSampleR = expm1((log1p(inputSampleR) * 0.6180339887498949));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_c0])+highpass[hilp_cL1];
highpass[hilp_cL1] = (inputSampleL*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cL2];
highpass[hilp_cL2] = (inputSampleL*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_c0])+highpass[hilp_cR1];
highpass[hilp_cR1] = (inputSampleR*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cR2];
highpass[hilp_cR2] = (inputSampleR*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_cR1] = highpass[hilp_cR2] = highpass[hilp_cL1] = highpass[hilp_cL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_c0])+lowpass[hilp_cL1];
lowpass[hilp_cL1] = (inputSampleL*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cL2];
lowpass[hilp_cL2] = (inputSampleL*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_c0])+lowpass[hilp_cR1];
lowpass[hilp_cR1] = (inputSampleR*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cR2];
lowpass[hilp_cR2] = (inputSampleR*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_cR1] = lowpass[hilp_cR2] = lowpass[hilp_cL1] = lowpass[hilp_cL2] = 0.0;
//another stage of Highpass/Lowpass before bringing in the parametric bands
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
inputSampleL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
double trebleFastR = inputSampleR;
outSample = (trebleFastR * highFast[biq_a0]) + highFast[biq_sR1];
highFast[biq_sR1] = (trebleFastR * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sR2];
highFast[biq_sR2] = (trebleFastR * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastR = outSample; trebleFastR -= midFastR;
outSample = (midFastR * lowFast[biq_a0]) + lowFast[biq_sR1];
lowFast[biq_sR1] = (midFastR * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sR2];
lowFast[biq_sR2] = (midFastR * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastR = outSample; midFastR -= bassFastR;
trebleFastR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastRIIR = (highFastRIIR*highCoef) + (trebleFastR*(1.0-highCoef));
midFastR = highFastRIIR; trebleFastR -= midFastR;
lowFastRIIR = (lowFastRIIR*lowCoef) + (midFastR*(1.0-lowCoef));
bassFastR = lowFastRIIR; midFastR -= bassFastR;
inputSampleR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
//Dynamics2
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_e0])+highpass[hilp_eL1];
highpass[hilp_eL1] = (inputSampleL*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eL2];
highpass[hilp_eL2] = (inputSampleL*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_e0])+highpass[hilp_eR1];
highpass[hilp_eR1] = (inputSampleR*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eR2];
highpass[hilp_eR2] = (inputSampleR*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_eR1] = highpass[hilp_eR2] = highpass[hilp_eL1] = highpass[hilp_eL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_e0])+lowpass[hilp_eL1];
lowpass[hilp_eL1] = (inputSampleL*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eL2];
lowpass[hilp_eL2] = (inputSampleL*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_e0])+lowpass[hilp_eR1];
lowpass[hilp_eR1] = (inputSampleR*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eR2];
lowpass[hilp_eR2] = (inputSampleR*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_eR1] = lowpass[hilp_eR2] = lowpass[hilp_eL1] = lowpass[hilp_eL2] = 0.0;
//final Highpass/Lowpass continues to address aliasing
//final stacked biquad section is the softest Q for smoothness
double gainR = (panA*temp)+(panB*(1.0-temp));
double gainL = 1.57079633-gainR;
gainR = sin(gainR); gainL = sin(gainL);
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 2.0;
inputSampleL = inputSampleL * gainL * gain;
inputSampleR = inputSampleR * gainR * gain;
//applies pan section, and smoothed fader gain
double darkSampleL = inputSampleL;
double darkSampleR = inputSampleR;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL; avg32R[avgPos] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x]; darkSampleR += avg32R[x];}
darkSampleL /= 32.0; darkSampleR /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL; avg16R[avgPos%16] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x]; darkSampleR += avg16R[x];}
darkSampleL /= 16.0; darkSampleR /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL; avg8R[avgPos%8] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x]; darkSampleR += avg8R[x];}
darkSampleL /= 8.0; darkSampleR /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL; avg4R[avgPos%4] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x]; darkSampleR += avg4R[x];}
darkSampleL /= 4.0; darkSampleR /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL; avg2R[avgPos%2] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x]; darkSampleR += avg2R[x];}
darkSampleL /= 2.0; darkSampleR /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223);
lastSlewR += fabs(lastSlewpleR-inputSampleR); lastSlewpleR = inputSampleR;
double avgSlewR = fmin(lastSlewR,1.0);
lastSlewR = fmax(lastSlewR*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
inputSampleR = (inputSampleR*(1.0-avgSlewR)) + (darkSampleR*avgSlewR);
//begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleL *= 0.92;
//end TapeHack section
//begin TapeHack section
inputSampleR = fmax(fmin(inputSampleR,2.305929007734908),-2.305929007734908);
addtwo = inputSampleR * inputSampleR;
empower = inputSampleR * addtwo; // inputSampleR to the third power
inputSampleR -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleR += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleR -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleR += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleR -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleR *= 0.92;
//end TapeHack section
//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 ConsoleHBuss::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
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= getSampleRate();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double trebleGain = (HIG-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (MID-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (LOW-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/getSampleRate());
double omega = 2.0*M_PI*(4000.0/getSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/getSampleRate());
omega = 2.0*M_PI*(200.0/getSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
//SmoothEQ3
double bezCThresh = pow(1.0-THR, 6.0) * 8.0;
double bezRez = pow(1.0-THR, 12.360679774997898) / overallscale;
double sloRez = pow(1.0-THR,10.0) / overallscale;
sloRez = fmin(fmax(sloRez,0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.00001),1.0);
//Dynamics2
highpass[hilp_freq] = ((pow(HIP,3)*24000.0)+10.0)/getSampleRate();
if (highpass[hilp_freq] > 0.495) highpass[hilp_freq] = 0.495;
bool highpassEngage = true; if (HIP == 0.0) highpassEngage = false;
lowpass[hilp_freq] = ((pow(LOP,3)*24000.0)+10.0)/getSampleRate();
if (lowpass[hilp_freq] > 0.495) lowpass[hilp_freq] = 0.495;
bool lowpassEngage = true; if (LOP == 0.0) lowpassEngage = false;
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
//previous run through the buffer is still in the filter, so we move it
//to the A section and now it's the new starting point.
//On the buss, highpass and lowpass are isolators meant to be moved,
//so they are interpolated where the channels are not
biqK = tan(M_PI * highpass[hilp_freq]); //highpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
highpass[hilp_aB0] = norm;
highpass[hilp_aB1] = -2.0 * highpass[hilp_aB0];
highpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
highpass[hilp_cB0] = norm;
highpass[hilp_cB1] = -2.0 * highpass[hilp_cB0];
highpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
highpass[hilp_eB0] = norm;
highpass[hilp_eB1] = -2.0 * highpass[hilp_eB0];
highpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
biqK = tan(M_PI * lowpass[hilp_freq]); //lowpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
lowpass[hilp_aB0] = biqK * biqK * norm;
lowpass[hilp_aB1] = 2.0 * lowpass[hilp_aB0];
lowpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
lowpass[hilp_cB0] = biqK * biqK * norm;
lowpass[hilp_cB1] = 2.0 * lowpass[hilp_cB0];
lowpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
lowpass[hilp_eB0] = biqK * biqK * norm;
lowpass[hilp_eB1] = 2.0 * lowpass[hilp_eB0];
lowpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
if (highpass[hilp_aA0] == 0.0) { // if we have just started, start directly with raw info
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
}
panA = panB; panB = PAN*1.57079633;
inTrimA = inTrimB; inTrimB = FAD*2.0;
//Console
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;
const double temp = (double)sampleFrames/inFramesToProcess;
highpass[hilp_a0] = (highpass[hilp_aA0]*temp)+(highpass[hilp_aB0]*(1.0-temp));
highpass[hilp_a1] = (highpass[hilp_aA1]*temp)+(highpass[hilp_aB1]*(1.0-temp));
highpass[hilp_b1] = (highpass[hilp_bA1]*temp)+(highpass[hilp_bB1]*(1.0-temp));
highpass[hilp_b2] = (highpass[hilp_bA2]*temp)+(highpass[hilp_bB2]*(1.0-temp));
highpass[hilp_c0] = (highpass[hilp_cA0]*temp)+(highpass[hilp_cB0]*(1.0-temp));
highpass[hilp_c1] = (highpass[hilp_cA1]*temp)+(highpass[hilp_cB1]*(1.0-temp));
highpass[hilp_d1] = (highpass[hilp_dA1]*temp)+(highpass[hilp_dB1]*(1.0-temp));
highpass[hilp_d2] = (highpass[hilp_dA2]*temp)+(highpass[hilp_dB2]*(1.0-temp));
highpass[hilp_e0] = (highpass[hilp_eA0]*temp)+(highpass[hilp_eB0]*(1.0-temp));
highpass[hilp_e1] = (highpass[hilp_eA1]*temp)+(highpass[hilp_eB1]*(1.0-temp));
highpass[hilp_f1] = (highpass[hilp_fA1]*temp)+(highpass[hilp_fB1]*(1.0-temp));
highpass[hilp_f2] = (highpass[hilp_fA2]*temp)+(highpass[hilp_fB2]*(1.0-temp));
lowpass[hilp_a0] = (lowpass[hilp_aA0]*temp)+(lowpass[hilp_aB0]*(1.0-temp));
lowpass[hilp_a1] = (lowpass[hilp_aA1]*temp)+(lowpass[hilp_aB1]*(1.0-temp));
lowpass[hilp_b1] = (lowpass[hilp_bA1]*temp)+(lowpass[hilp_bB1]*(1.0-temp));
lowpass[hilp_b2] = (lowpass[hilp_bA2]*temp)+(lowpass[hilp_bB2]*(1.0-temp));
lowpass[hilp_c0] = (lowpass[hilp_cA0]*temp)+(lowpass[hilp_cB0]*(1.0-temp));
lowpass[hilp_c1] = (lowpass[hilp_cA1]*temp)+(lowpass[hilp_cB1]*(1.0-temp));
lowpass[hilp_d1] = (lowpass[hilp_dA1]*temp)+(lowpass[hilp_dB1]*(1.0-temp));
lowpass[hilp_d2] = (lowpass[hilp_dA2]*temp)+(lowpass[hilp_dB2]*(1.0-temp));
lowpass[hilp_e0] = (lowpass[hilp_eA0]*temp)+(lowpass[hilp_eB0]*(1.0-temp));
lowpass[hilp_e1] = (lowpass[hilp_eA1]*temp)+(lowpass[hilp_eB1]*(1.0-temp));
lowpass[hilp_f1] = (lowpass[hilp_fA1]*temp)+(lowpass[hilp_fB1]*(1.0-temp));
lowpass[hilp_f2] = (lowpass[hilp_fA2]*temp)+(lowpass[hilp_fB2]*(1.0-temp));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_a0])+highpass[hilp_aL1];
highpass[hilp_aL1] = (inputSampleL*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aL2];
highpass[hilp_aL2] = (inputSampleL*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_a0])+highpass[hilp_aR1];
highpass[hilp_aR1] = (inputSampleR*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aR2];
highpass[hilp_aR2] = (inputSampleR*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_aR1] = highpass[hilp_aR2] = highpass[hilp_aL1] = highpass[hilp_aL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_a0])+lowpass[hilp_aL1];
lowpass[hilp_aL1] = (inputSampleL*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aL2];
lowpass[hilp_aL2] = (inputSampleL*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_a0])+lowpass[hilp_aR1];
lowpass[hilp_aR1] = (inputSampleR*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aR2];
lowpass[hilp_aR2] = (inputSampleR*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_aR1] = lowpass[hilp_aR2] = lowpass[hilp_aL1] = lowpass[hilp_aL2] = 0.0;
//first Highpass/Lowpass blocks aliasing before the nonlinearity of ConsoleXBuss and Parametric
if (inputSampleL > 1.0) inputSampleL = 1.0;
else if (inputSampleL > 0.0) inputSampleL = -expm1((log1p(-inputSampleL) * 0.6180339887498949));
if (inputSampleL < -1.0) inputSampleL = -1.0;
else if (inputSampleL < 0.0) inputSampleL = expm1((log1p(inputSampleL) * 0.6180339887498949));
if (inputSampleR > 1.0) inputSampleR = 1.0;
else if (inputSampleR > 0.0) inputSampleR = -expm1((log1p(-inputSampleR) * 0.6180339887498949));
if (inputSampleR < -1.0) inputSampleR = -1.0;
else if (inputSampleR < 0.0) inputSampleR = expm1((log1p(inputSampleR) * 0.6180339887498949));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_c0])+highpass[hilp_cL1];
highpass[hilp_cL1] = (inputSampleL*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cL2];
highpass[hilp_cL2] = (inputSampleL*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_c0])+highpass[hilp_cR1];
highpass[hilp_cR1] = (inputSampleR*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cR2];
highpass[hilp_cR2] = (inputSampleR*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_cR1] = highpass[hilp_cR2] = highpass[hilp_cL1] = highpass[hilp_cL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_c0])+lowpass[hilp_cL1];
lowpass[hilp_cL1] = (inputSampleL*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cL2];
lowpass[hilp_cL2] = (inputSampleL*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_c0])+lowpass[hilp_cR1];
lowpass[hilp_cR1] = (inputSampleR*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cR2];
lowpass[hilp_cR2] = (inputSampleR*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_cR1] = lowpass[hilp_cR2] = lowpass[hilp_cL1] = lowpass[hilp_cL2] = 0.0;
//another stage of Highpass/Lowpass before bringing in the parametric bands
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
inputSampleL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
double trebleFastR = inputSampleR;
outSample = (trebleFastR * highFast[biq_a0]) + highFast[biq_sR1];
highFast[biq_sR1] = (trebleFastR * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sR2];
highFast[biq_sR2] = (trebleFastR * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastR = outSample; trebleFastR -= midFastR;
outSample = (midFastR * lowFast[biq_a0]) + lowFast[biq_sR1];
lowFast[biq_sR1] = (midFastR * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sR2];
lowFast[biq_sR2] = (midFastR * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastR = outSample; midFastR -= bassFastR;
trebleFastR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastRIIR = (highFastRIIR*highCoef) + (trebleFastR*(1.0-highCoef));
midFastR = highFastRIIR; trebleFastR -= midFastR;
lowFastRIIR = (lowFastRIIR*lowCoef) + (midFastR*(1.0-lowCoef));
bassFastR = lowFastRIIR; midFastR -= bassFastR;
inputSampleR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
//Dynamics2
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_e0])+highpass[hilp_eL1];
highpass[hilp_eL1] = (inputSampleL*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eL2];
highpass[hilp_eL2] = (inputSampleL*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_e0])+highpass[hilp_eR1];
highpass[hilp_eR1] = (inputSampleR*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eR2];
highpass[hilp_eR2] = (inputSampleR*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_eR1] = highpass[hilp_eR2] = highpass[hilp_eL1] = highpass[hilp_eL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_e0])+lowpass[hilp_eL1];
lowpass[hilp_eL1] = (inputSampleL*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eL2];
lowpass[hilp_eL2] = (inputSampleL*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_e0])+lowpass[hilp_eR1];
lowpass[hilp_eR1] = (inputSampleR*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eR2];
lowpass[hilp_eR2] = (inputSampleR*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_eR1] = lowpass[hilp_eR2] = lowpass[hilp_eL1] = lowpass[hilp_eL2] = 0.0;
//final Highpass/Lowpass continues to address aliasing
//final stacked biquad section is the softest Q for smoothness
double gainR = (panA*temp)+(panB*(1.0-temp));
double gainL = 1.57079633-gainR;
gainR = sin(gainR); gainL = sin(gainL);
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 2.0;
inputSampleL = inputSampleL * gainL * gain;
inputSampleR = inputSampleR * gainR * gain;
//applies pan section, and smoothed fader gain
double darkSampleL = inputSampleL;
double darkSampleR = inputSampleR;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL; avg32R[avgPos] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x]; darkSampleR += avg32R[x];}
darkSampleL /= 32.0; darkSampleR /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL; avg16R[avgPos%16] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x]; darkSampleR += avg16R[x];}
darkSampleL /= 16.0; darkSampleR /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL; avg8R[avgPos%8] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x]; darkSampleR += avg8R[x];}
darkSampleL /= 8.0; darkSampleR /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL; avg4R[avgPos%4] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x]; darkSampleR += avg4R[x];}
darkSampleL /= 4.0; darkSampleR /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL; avg2R[avgPos%2] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x]; darkSampleR += avg2R[x];}
darkSampleL /= 2.0; darkSampleR /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223);
lastSlewR += fabs(lastSlewpleR-inputSampleR); lastSlewpleR = inputSampleR;
double avgSlewR = fmin(lastSlewR,1.0);
lastSlewR = fmax(lastSlewR*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
inputSampleR = (inputSampleR*(1.0-avgSlewR)) + (darkSampleR*avgSlewR);
//begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleL *= 0.92;
//end TapeHack section
//begin TapeHack section
inputSampleR = fmax(fmin(inputSampleR,2.305929007734908),-2.305929007734908);
addtwo = inputSampleR * inputSampleR;
empower = inputSampleR * addtwo; // inputSampleR to the third power
inputSampleR -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleR += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleR -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleR += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleR -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleR *= 0.92;
//end TapeHack section
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;
*out2 = inputSampleR;
in1++;
in2++;
out1++;
out2++;
}
}

View file

@ -0,0 +1,389 @@
/* ========================================
* ConsoleHChannel - ConsoleHChannel.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHChannel_H
#include "ConsoleHChannel.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new ConsoleHChannel(audioMaster);}
ConsoleHChannel::ConsoleHChannel(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
TRM = 0.25;
MOR = 0.0;
HIG = 0.5;
MID = 0.5;
LOW = 0.5;
CRS = 0.0;
TRF = 0.5;
TRG = 0.0;
TRB = 0.5;
HMF = 0.5;
HMG = 0.0;
HMB = 0.5;
LMF = 0.5;
LMG = 0.0;
LMB = 0.5;
BSF = 0.5;
BSG = 0.0;
BSB = 0.5;
THR = 1.0;
ATK = 0.5;
RLS = 0.5;
GAT = 0.0;
LOP = 1.0;
HIP = 0.0;
PAN = 0.5;
FAD = 0.5;
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
highFastRIIR = 0.0;
lowFastLIIR = 0.0;
lowFastRIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < biqs_total; x++) {
high[x] = 0.0;
hmid[x] = 0.0;
lmid[x] = 0.0;
bass[x] = 0.0;
}
//HipCrush with four bands
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
//Dynamics2
for(int count = 0; count < 22; count++) {
iirHPositionL[count] = 0.0;
iirHAngleL[count] = 0.0;
iirHPositionR[count] = 0.0;
iirHAngleR[count] = 0.0;
}
hBypass = false;
for(int count = 0; count < 14; count++) {
iirLPositionL[count] = 0.0;
iirLAngleL[count] = 0.0;
iirLPositionR[count] = 0.0;
iirLAngleR[count] = 0.0;
}
lBypass = false;
//Cabs2
for(int count = 0; count < dscBuf+2; count++) {
dBaL[count] = 0.0;
dBaR[count] = 0.0;
}
dBaPosL = 0.0;
dBaPosR = 0.0;
dBaXL = 1;
dBaXR = 1;
//Discontapeity
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0; avg32R[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0; avg16R[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0; avg8R[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0; avg4R[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0; avg2R[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0; lastSlewR = 0.0;
lastSlewpleL = 0.0; lastSlewpleR = 0.0;
//preTapeHack
lFreqA = 1.0; lFreqB = 1.0;
hFreqA = 0.0; hFreqB = 0.0;
panA = 0.5; panB = 0.5;
inTrimA = 0.5; inTrimB = 0.5;
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
}
ConsoleHChannel::~ConsoleHChannel() {}
VstInt32 ConsoleHChannel::getVendorVersion () {return 1000;}
void ConsoleHChannel::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void ConsoleHChannel::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 ConsoleHChannel::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = TRM;
chunkData[1] = MOR;
chunkData[2] = HIG;
chunkData[3] = MID;
chunkData[4] = LOW;
chunkData[5] = CRS;
chunkData[6] = TRF;
chunkData[7] = TRG;
chunkData[8] = TRB;
chunkData[9] = HMF;
chunkData[10] = HMG;
chunkData[11] = HMB;
chunkData[12] = LMF;
chunkData[13] = LMG;
chunkData[14] = LMB;
chunkData[15] = BSF;
chunkData[16] = BSG;
chunkData[17] = BSB;
chunkData[18] = THR;
chunkData[19] = ATK;
chunkData[20] = RLS;
chunkData[21] = GAT;
chunkData[22] = LOP;
chunkData[23] = HIP;
chunkData[24] = PAN;
chunkData[25] = FAD;
/* 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 ConsoleHChannel::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
TRM = pinParameter(chunkData[0]);
MOR = pinParameter(chunkData[1]);
HIG = pinParameter(chunkData[2]);
MID = pinParameter(chunkData[3]);
LOW = pinParameter(chunkData[4]);
CRS = pinParameter(chunkData[5]);
TRF = pinParameter(chunkData[6]);
TRG = pinParameter(chunkData[7]);
TRB = pinParameter(chunkData[8]);
HMF = pinParameter(chunkData[9]);
HMG = pinParameter(chunkData[10]);
HMB = pinParameter(chunkData[11]);
LMF = pinParameter(chunkData[12]);
LMG = pinParameter(chunkData[13]);
LMB = pinParameter(chunkData[14]);
BSF = pinParameter(chunkData[15]);
BSG = pinParameter(chunkData[16]);
BSB = pinParameter(chunkData[17]);
THR = pinParameter(chunkData[18]);
ATK = pinParameter(chunkData[19]);
RLS = pinParameter(chunkData[20]);
GAT = pinParameter(chunkData[21]);
LOP = pinParameter(chunkData[22]);
HIP = pinParameter(chunkData[23]);
PAN = pinParameter(chunkData[24]);
FAD = pinParameter(chunkData[25]);
/* 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 ConsoleHChannel::setParameter(VstInt32 index, float value) {
switch (index) {
case kParam_TRM: TRM = value; break;
case kParam_MOR: MOR = value; break;
case kParam_HIG: HIG = value; break;
case kParam_MID: MID = value; break;
case kParam_LOW: LOW = value; break;
case kParam_CRS: CRS = value; break;
case kParam_TRF: TRF = value; break;
case kParam_TRG: TRG = value; break;
case kParam_TRB: TRB = value; break;
case kParam_HMF: HMF = value; break;
case kParam_HMG: HMG = value; break;
case kParam_HMB: HMB = value; break;
case kParam_LMF: LMF = value; break;
case kParam_LMG: LMG = value; break;
case kParam_LMB: LMB = value; break;
case kParam_BSF: BSF = value; break;
case kParam_BSG: BSG = value; break;
case kParam_BSB: BSB = value; break;
case kParam_THR: THR = value; break;
case kParam_ATK: ATK = value; break;
case kParam_RLS: RLS = value; break;
case kParam_GAT: GAT = value; break;
case kParam_LOP: LOP = value; break;
case kParam_HIP: HIP = value; break;
case kParam_PAN: PAN = value; break;
case kParam_FAD: FAD = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float ConsoleHChannel::getParameter(VstInt32 index) {
switch (index) {
case kParam_TRM: return TRM; break;
case kParam_MOR: return MOR; break;
case kParam_HIG: return HIG; break;
case kParam_MID: return MID; break;
case kParam_LOW: return LOW; break;
case kParam_CRS: return CRS; break;
case kParam_TRF: return TRF; break;
case kParam_TRG: return TRG; break;
case kParam_TRB: return TRB; break;
case kParam_HMF: return HMF; break;
case kParam_HMG: return HMG; break;
case kParam_HMB: return HMB; break;
case kParam_LMF: return LMF; break;
case kParam_LMG: return LMG; break;
case kParam_LMB: return LMB; break;
case kParam_BSF: return BSF; break;
case kParam_BSG: return BSG; break;
case kParam_BSB: return BSB; break;
case kParam_THR: return THR; break;
case kParam_ATK: return ATK; break;
case kParam_RLS: return RLS; break;
case kParam_GAT: return GAT; break;
case kParam_LOP: return LOP; break;
case kParam_HIP: return HIP; break;
case kParam_PAN: return PAN; break;
case kParam_FAD: return FAD; 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 ConsoleHChannel::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: vst_strncpy (text, "Trim", kVstMaxParamStrLen); break;
case kParam_MOR: vst_strncpy (text, "More", kVstMaxParamStrLen); break;
case kParam_HIG: vst_strncpy (text, "High", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "Mid", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "Low", kVstMaxParamStrLen); break;
case kParam_CRS: vst_strncpy (text, "CrossFd", kVstMaxParamStrLen); break;
case kParam_TRF: vst_strncpy (text, "Tr Freq", kVstMaxParamStrLen); break;
case kParam_TRG: vst_strncpy (text, "Treble", kVstMaxParamStrLen); break;
case kParam_TRB: vst_strncpy (text, "TrCrush", kVstMaxParamStrLen); break;
case kParam_HMF: vst_strncpy (text, "HM Freq", kVstMaxParamStrLen); break;
case kParam_HMG: vst_strncpy (text, "HighMid", kVstMaxParamStrLen); break;
case kParam_HMB: vst_strncpy (text, "HMCrush", kVstMaxParamStrLen); break;
case kParam_LMF: vst_strncpy (text, "LM Freq", kVstMaxParamStrLen); break;
case kParam_LMG: vst_strncpy (text, "LowMid", kVstMaxParamStrLen); break;
case kParam_LMB: vst_strncpy (text, "LMCrush", kVstMaxParamStrLen); break;
case kParam_BSF: vst_strncpy (text, "Bs Freq", kVstMaxParamStrLen); break;
case kParam_BSG: vst_strncpy (text, "Bass", kVstMaxParamStrLen); break;
case kParam_BSB: vst_strncpy (text, "BsCrush", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "Thresh", kVstMaxParamStrLen); break;
case kParam_ATK: vst_strncpy (text, "Attack", kVstMaxParamStrLen); break;
case kParam_RLS: vst_strncpy (text, "Release", kVstMaxParamStrLen); break;
case kParam_GAT: vst_strncpy (text, "Gate", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "Lowpass", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "Hipass", kVstMaxParamStrLen); break;
case kParam_PAN: vst_strncpy (text, "Pan", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "Fader", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void ConsoleHChannel::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: int2string ((int)(TRM*4.0), text, kVstMaxParamStrLen); break;
case kParam_MOR: float2string (MOR, text, kVstMaxParamStrLen); break;
case kParam_HIG: float2string (HIG, text, kVstMaxParamStrLen); break;
case kParam_MID: float2string (MID, text, kVstMaxParamStrLen); break;
case kParam_LOW: float2string (LOW, text, kVstMaxParamStrLen); break;
case kParam_CRS: float2string (CRS, text, kVstMaxParamStrLen); break;
case kParam_TRF: float2string (TRF, text, kVstMaxParamStrLen); break;
case kParam_TRG: float2string (TRG, text, kVstMaxParamStrLen); break;
case kParam_TRB: float2string (TRB, text, kVstMaxParamStrLen); break;
case kParam_HMF: float2string (HMF, text, kVstMaxParamStrLen); break;
case kParam_HMG: float2string (HMG, text, kVstMaxParamStrLen); break;
case kParam_HMB: float2string (HMB, text, kVstMaxParamStrLen); break;
case kParam_LMF: float2string (LMF, text, kVstMaxParamStrLen); break;
case kParam_LMG: float2string (LMG, text, kVstMaxParamStrLen); break;
case kParam_LMB: float2string (LMB, text, kVstMaxParamStrLen); break;
case kParam_BSF: float2string (BSF, text, kVstMaxParamStrLen); break;
case kParam_BSG: float2string (BSG, text, kVstMaxParamStrLen); break;
case kParam_BSB: float2string (BSB, text, kVstMaxParamStrLen); break;
case kParam_THR: float2string (THR, text, kVstMaxParamStrLen); break;
case kParam_ATK: float2string (ATK, text, kVstMaxParamStrLen); break;
case kParam_RLS: float2string (RLS, text, kVstMaxParamStrLen); break;
case kParam_GAT: float2string (GAT, text, kVstMaxParamStrLen); break;
case kParam_LOP: float2string (LOP, text, kVstMaxParamStrLen); break;
case kParam_HIP: float2string (HIP, text, kVstMaxParamStrLen); break;
case kParam_PAN: float2string (PAN, text, kVstMaxParamStrLen); break;
case kParam_FAD: float2string (FAD, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void ConsoleHChannel::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_MOR: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HIG: vst_strncpy (text, "eq", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_CRS: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_TRF: vst_strncpy (text, "crush", kVstMaxParamStrLen); break;
case kParam_TRG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_TRB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "dyn", kVstMaxParamStrLen); break;
case kParam_ATK: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_RLS: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_GAT: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "fltr", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_PAN: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 ConsoleHChannel::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool ConsoleHChannel::getEffectName(char* name) {
vst_strncpy(name, "ConsoleHChannel", kVstMaxProductStrLen); return true;
}
VstPlugCategory ConsoleHChannel::getPlugCategory() {return kPlugCategEffect;}
bool ConsoleHChannel::getProductString(char* text) {
vst_strncpy (text, "airwindows ConsoleHChannel", kVstMaxProductStrLen); return true;
}
bool ConsoleHChannel::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,220 @@
/* ========================================
* ConsoleHChannel - ConsoleHChannel.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHChannel_H
#define __ConsoleHChannel_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_PAN =24,
kParam_FAD =25,
//Add your parameters here...
kNumParameters=26
};
const int dscBuf = 256;
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'chpc'; //Change this to what the AU identity is!
class ConsoleHChannel :
public AudioEffectX
{
public:
ConsoleHChannel(audioMasterCallback audioMaster);
~ConsoleHChannel();
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 TRM;
float MOR;
float HIG;
float MID;
float LOW;
float CRS;
float TRF;
float TRG;
float TRB;
float HMF;
float HMG;
float HMB;
float LMF;
float LMG;
float LMB;
float BSF;
float BSG;
float BSB;
float THR;
float ATK;
float RLS;
float GAT;
float LOP;
float HIP;
float PAN;
float FAD;
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2, biqs_aR1, biqs_aR2,
biqs_cL1, biqs_cL2, biqs_cR1, biqs_cR2,
biqs_outL, biqs_outR, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
//Dynamics2
double iirHPositionL[23];
double iirHAngleL[23];
double iirHPositionR[23];
double iirHAngleR[23];
bool hBypass;
double iirLPositionL[15];
double iirLAngleL[15];
double iirLPositionR[15];
double iirLAngleR[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
double dBaR[dscBuf+5];
double dBaPosR;
int dBaXR;
//Discontapeity
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
double panA;
double panB;
double inTrimA;
double inTrimB;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,380 @@
/* ========================================
* ConsoleHPre - ConsoleHPre.h
* Copyright (c) airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHPre_H
#include "ConsoleHPre.h"
#endif
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new ConsoleHPre(audioMaster);}
ConsoleHPre::ConsoleHPre(audioMasterCallback audioMaster) :
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
{
TRM = 0.25;
MOR = 0.0;
HIG = 0.5;
MID = 0.5;
LOW = 0.5;
CRS = 0.0;
TRF = 0.5;
TRG = 0.0;
TRB = 0.5;
HMF = 0.5;
HMG = 0.0;
HMB = 0.5;
LMF = 0.5;
LMG = 0.0;
LMB = 0.5;
BSF = 0.5;
BSG = 0.0;
BSB = 0.5;
THR = 1.0;
ATK = 0.5;
RLS = 0.5;
GAT = 0.0;
LOP = 1.0;
HIP = 0.0;
FAD = 0.5;
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
highFastRIIR = 0.0;
lowFastLIIR = 0.0;
lowFastRIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < biqs_total; x++) {
high[x] = 0.0;
hmid[x] = 0.0;
lmid[x] = 0.0;
bass[x] = 0.0;
}
//HipCrush with four bands
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxFL = 0.0; bezMaxFR = 0.0;
bezCompS[bez_cycle] = 1.0; bezGateL = 2.0; bezGateR = 2.0;
//Dynamics2
for(int count = 0; count < 22; count++) {
iirHPositionL[count] = 0.0;
iirHAngleL[count] = 0.0;
iirHPositionR[count] = 0.0;
iirHAngleR[count] = 0.0;
}
hBypass = false;
for(int count = 0; count < 14; count++) {
iirLPositionL[count] = 0.0;
iirLAngleL[count] = 0.0;
iirLPositionR[count] = 0.0;
iirLAngleR[count] = 0.0;
}
lBypass = false;
//Cabs2
for(int count = 0; count < dscBuf+2; count++) {
dBaL[count] = 0.0;
dBaR[count] = 0.0;
}
dBaPosL = 0.0;
dBaPosR = 0.0;
dBaXL = 1;
dBaXR = 1;
//Discontapeity
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0; avg32R[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0; avg16R[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0; avg8R[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0; avg4R[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0; avg2R[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0; lastSlewR = 0.0;
lastSlewpleL = 0.0; lastSlewpleR = 0.0;
//preTapeHack
lFreqA = 1.0; lFreqB = 1.0;
hFreqA = 0.0; hFreqB = 0.0;
inTrimA = 0.5; inTrimB = 0.5;
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
}
ConsoleHPre::~ConsoleHPre() {}
VstInt32 ConsoleHPre::getVendorVersion () {return 1000;}
void ConsoleHPre::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
void ConsoleHPre::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 ConsoleHPre::getChunk (void** data, bool isPreset)
{
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
chunkData[0] = TRM;
chunkData[1] = MOR;
chunkData[2] = HIG;
chunkData[3] = MID;
chunkData[4] = LOW;
chunkData[5] = CRS;
chunkData[6] = TRF;
chunkData[7] = TRG;
chunkData[8] = TRB;
chunkData[9] = HMF;
chunkData[10] = HMG;
chunkData[11] = HMB;
chunkData[12] = LMF;
chunkData[13] = LMG;
chunkData[14] = LMB;
chunkData[15] = BSF;
chunkData[16] = BSG;
chunkData[17] = BSB;
chunkData[18] = THR;
chunkData[19] = ATK;
chunkData[20] = RLS;
chunkData[21] = GAT;
chunkData[22] = LOP;
chunkData[23] = HIP;
chunkData[24] = FAD;
/* 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 ConsoleHPre::setChunk (void* data, VstInt32 byteSize, bool isPreset)
{
float *chunkData = (float *)data;
TRM = pinParameter(chunkData[0]);
MOR = pinParameter(chunkData[1]);
HIG = pinParameter(chunkData[2]);
MID = pinParameter(chunkData[3]);
LOW = pinParameter(chunkData[4]);
CRS = pinParameter(chunkData[5]);
TRF = pinParameter(chunkData[6]);
TRG = pinParameter(chunkData[7]);
TRB = pinParameter(chunkData[8]);
HMF = pinParameter(chunkData[9]);
HMG = pinParameter(chunkData[10]);
HMB = pinParameter(chunkData[11]);
LMF = pinParameter(chunkData[12]);
LMG = pinParameter(chunkData[13]);
LMB = pinParameter(chunkData[14]);
BSF = pinParameter(chunkData[15]);
BSG = pinParameter(chunkData[16]);
BSB = pinParameter(chunkData[17]);
THR = pinParameter(chunkData[18]);
ATK = pinParameter(chunkData[19]);
RLS = pinParameter(chunkData[20]);
GAT = pinParameter(chunkData[21]);
LOP = pinParameter(chunkData[22]);
HIP = pinParameter(chunkData[23]);
FAD = pinParameter(chunkData[24]);
/* 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 ConsoleHPre::setParameter(VstInt32 index, float value) {
switch (index) {
case kParam_TRM: TRM = value; break;
case kParam_MOR: MOR = value; break;
case kParam_HIG: HIG = value; break;
case kParam_MID: MID = value; break;
case kParam_LOW: LOW = value; break;
case kParam_CRS: CRS = value; break;
case kParam_TRF: TRF = value; break;
case kParam_TRG: TRG = value; break;
case kParam_TRB: TRB = value; break;
case kParam_HMF: HMF = value; break;
case kParam_HMG: HMG = value; break;
case kParam_HMB: HMB = value; break;
case kParam_LMF: LMF = value; break;
case kParam_LMG: LMG = value; break;
case kParam_LMB: LMB = value; break;
case kParam_BSF: BSF = value; break;
case kParam_BSG: BSG = value; break;
case kParam_BSB: BSB = value; break;
case kParam_THR: THR = value; break;
case kParam_ATK: ATK = value; break;
case kParam_RLS: RLS = value; break;
case kParam_GAT: GAT = value; break;
case kParam_LOP: LOP = value; break;
case kParam_HIP: HIP = value; break;
case kParam_FAD: FAD = value; break;
default: throw; // unknown parameter, shouldn't happen!
}
}
float ConsoleHPre::getParameter(VstInt32 index) {
switch (index) {
case kParam_TRM: return TRM; break;
case kParam_MOR: return MOR; break;
case kParam_HIG: return HIG; break;
case kParam_MID: return MID; break;
case kParam_LOW: return LOW; break;
case kParam_CRS: return CRS; break;
case kParam_TRF: return TRF; break;
case kParam_TRG: return TRG; break;
case kParam_TRB: return TRB; break;
case kParam_HMF: return HMF; break;
case kParam_HMG: return HMG; break;
case kParam_HMB: return HMB; break;
case kParam_LMF: return LMF; break;
case kParam_LMG: return LMG; break;
case kParam_LMB: return LMB; break;
case kParam_BSF: return BSF; break;
case kParam_BSG: return BSG; break;
case kParam_BSB: return BSB; break;
case kParam_THR: return THR; break;
case kParam_ATK: return ATK; break;
case kParam_RLS: return RLS; break;
case kParam_GAT: return GAT; break;
case kParam_LOP: return LOP; break;
case kParam_HIP: return HIP; break;
case kParam_FAD: return FAD; 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 ConsoleHPre::getParameterName(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: vst_strncpy (text, "Trim", kVstMaxParamStrLen); break;
case kParam_MOR: vst_strncpy (text, "More", kVstMaxParamStrLen); break;
case kParam_HIG: vst_strncpy (text, "High", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "Mid", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "Low", kVstMaxParamStrLen); break;
case kParam_CRS: vst_strncpy (text, "CrossFd", kVstMaxParamStrLen); break;
case kParam_TRF: vst_strncpy (text, "Tr Freq", kVstMaxParamStrLen); break;
case kParam_TRG: vst_strncpy (text, "Treble", kVstMaxParamStrLen); break;
case kParam_TRB: vst_strncpy (text, "TrCrush", kVstMaxParamStrLen); break;
case kParam_HMF: vst_strncpy (text, "HM Freq", kVstMaxParamStrLen); break;
case kParam_HMG: vst_strncpy (text, "HighMid", kVstMaxParamStrLen); break;
case kParam_HMB: vst_strncpy (text, "HMCrush", kVstMaxParamStrLen); break;
case kParam_LMF: vst_strncpy (text, "LM Freq", kVstMaxParamStrLen); break;
case kParam_LMG: vst_strncpy (text, "LowMid", kVstMaxParamStrLen); break;
case kParam_LMB: vst_strncpy (text, "LMCrush", kVstMaxParamStrLen); break;
case kParam_BSF: vst_strncpy (text, "Bs Freq", kVstMaxParamStrLen); break;
case kParam_BSG: vst_strncpy (text, "Bass", kVstMaxParamStrLen); break;
case kParam_BSB: vst_strncpy (text, "BsCrush", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "Thresh", kVstMaxParamStrLen); break;
case kParam_ATK: vst_strncpy (text, "Attack", kVstMaxParamStrLen); break;
case kParam_RLS: vst_strncpy (text, "Release", kVstMaxParamStrLen); break;
case kParam_GAT: vst_strncpy (text, "Gate", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "Lowpass", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "Hipass", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "Fader", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this is our labels for displaying in the VST host
}
void ConsoleHPre::getParameterDisplay(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: int2string ((int)(TRM*4.0), text, kVstMaxParamStrLen); break;
case kParam_MOR: float2string (MOR, text, kVstMaxParamStrLen); break;
case kParam_HIG: float2string (HIG, text, kVstMaxParamStrLen); break;
case kParam_MID: float2string (MID, text, kVstMaxParamStrLen); break;
case kParam_LOW: float2string (LOW, text, kVstMaxParamStrLen); break;
case kParam_CRS: float2string (CRS, text, kVstMaxParamStrLen); break;
case kParam_TRF: float2string (TRF, text, kVstMaxParamStrLen); break;
case kParam_TRG: float2string (TRG, text, kVstMaxParamStrLen); break;
case kParam_TRB: float2string (TRB, text, kVstMaxParamStrLen); break;
case kParam_HMF: float2string (HMF, text, kVstMaxParamStrLen); break;
case kParam_HMG: float2string (HMG, text, kVstMaxParamStrLen); break;
case kParam_HMB: float2string (HMB, text, kVstMaxParamStrLen); break;
case kParam_LMF: float2string (LMF, text, kVstMaxParamStrLen); break;
case kParam_LMG: float2string (LMG, text, kVstMaxParamStrLen); break;
case kParam_LMB: float2string (LMB, text, kVstMaxParamStrLen); break;
case kParam_BSF: float2string (BSF, text, kVstMaxParamStrLen); break;
case kParam_BSG: float2string (BSG, text, kVstMaxParamStrLen); break;
case kParam_BSB: float2string (BSB, text, kVstMaxParamStrLen); break;
case kParam_THR: float2string (THR, text, kVstMaxParamStrLen); break;
case kParam_ATK: float2string (ATK, text, kVstMaxParamStrLen); break;
case kParam_RLS: float2string (RLS, text, kVstMaxParamStrLen); break;
case kParam_GAT: float2string (GAT, text, kVstMaxParamStrLen); break;
case kParam_LOP: float2string (LOP, text, kVstMaxParamStrLen); break;
case kParam_HIP: float2string (HIP, text, kVstMaxParamStrLen); break;
case kParam_FAD: float2string (FAD, text, kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
} //this displays the values and handles 'popups' where it's discrete choices
}
void ConsoleHPre::getParameterLabel(VstInt32 index, char *text) {
switch (index) {
case kParam_TRM: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_MOR: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HIG: vst_strncpy (text, "eq", kVstMaxParamStrLen); break;
case kParam_MID: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LOW: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_CRS: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_TRF: vst_strncpy (text, "crush", kVstMaxParamStrLen); break;
case kParam_TRG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_TRB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_HMB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LMB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSF: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSG: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_BSB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_THR: vst_strncpy (text, "dyn", kVstMaxParamStrLen); break;
case kParam_ATK: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_RLS: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_GAT: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_LOP: vst_strncpy (text, "fltr", kVstMaxParamStrLen); break;
case kParam_HIP: vst_strncpy (text, "", kVstMaxParamStrLen); break;
case kParam_FAD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
default: break; // unknown parameter, shouldn't happen!
}
}
VstInt32 ConsoleHPre::canDo(char *text)
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
bool ConsoleHPre::getEffectName(char* name) {
vst_strncpy(name, "ConsoleHPre", kVstMaxProductStrLen); return true;
}
VstPlugCategory ConsoleHPre::getPlugCategory() {return kPlugCategEffect;}
bool ConsoleHPre::getProductString(char* text) {
vst_strncpy (text, "airwindows ConsoleHPre", kVstMaxProductStrLen); return true;
}
bool ConsoleHPre::getVendorString(char* text) {
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
}

View file

@ -0,0 +1,218 @@
/* ========================================
* ConsoleHPre - ConsoleHPre.h
* Created 8/12/11 by SPIAdmin
* Copyright (c) Airwindows, Airwindows uses the MIT license
* ======================================== */
#ifndef __ConsoleHPre_H
#define __ConsoleHPre_H
#ifndef __audioeffect__
#include "audioeffectx.h"
#endif
#include <set>
#include <string>
#include <math.h>
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_FAD =24,
//Add your parameters here...
kNumParameters=25
};
const int dscBuf = 256;
const int kNumPrograms = 0;
const int kNumInputs = 2;
const int kNumOutputs = 2;
const unsigned long kUniqueId = 'chpp'; //Change this to what the AU identity is!
class ConsoleHPre :
public AudioEffectX
{
public:
ConsoleHPre(audioMasterCallback audioMaster);
~ConsoleHPre();
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 TRM;
float MOR;
float HIG;
float MID;
float LOW;
float CRS;
float TRF;
float TRG;
float TRB;
float HMF;
float HMG;
float HMB;
float LMF;
float LMG;
float LMB;
float BSF;
float BSG;
float BSB;
float THR;
float ATK;
float RLS;
float GAT;
float LOP;
float HIP;
float FAD;
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2, biqs_aR1, biqs_aR2,
biqs_cL1, biqs_cL2, biqs_cR1, biqs_cR2,
biqs_outL, biqs_outR, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxFL;
double bezMaxFR;
double bezCompS[bez_total];
double bezGateL;
double bezGateR;
//Dynamics2
double iirHPositionL[23];
double iirHAngleL[23];
double iirHPositionR[23];
double iirHAngleR[23];
bool hBypass;
double iirLPositionL[15];
double iirLAngleL[15];
double iirLPositionR[15];
double iirLAngleR[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
double dBaR[dscBuf+5];
double dBaPosR;
int dBaXR;
//Discontapeity
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
double inTrimA;
double inTrimB;
uint32_t fpdL;
uint32_t fpdR;
//default stuff
};
#endif

File diff suppressed because it is too large Load diff

View file

@ -231,17 +231,15 @@ ComponentResult ChimeyDeluxe::Initialize()
void ChimeyDeluxe::ChimeyDeluxeKernel::Reset()
{
for(int x=0; x<17; x++) {
for (int w = 0; w < bez_total; w++) bezComp[w][x] = 0.0;
bezComp[bez_cycle][x] = 1.0;
for(int y=0; y<14; y++) {
angS[x][y] = 0.0;angA[x][y] = 0.0;
angS[x][y] = 0.0;
angA[x][y] = 0.0;
}
}
for(int y=0; y<14; y++) {
angG[y] = 0.0;
}
muComp = 1.0;
muSpd = 100.0;
for(int y=0; y<14; y++) angG[y] = 0.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
@ -263,85 +261,88 @@ void ChimeyDeluxe::ChimeyDeluxeKernel::Process( const Float32 *inSourceP,
double drive = 1.0;
double pad = 1.0;
angG[1] = GetParameter( kParam_A )+0.5;
angG[1] = (GetParameter( kParam_A )+1.5)*0.5;
if (pad > angG[1]) pad = angG[1];
if (drive < angG[1]) drive = angG[1];
angG[0] = (1.0+angG[1])*0.5; //if boost, boost half
if (angG[0] > angG[1]) angG[0] = angG[1];
angG[2] = GetParameter( kParam_B )+0.5;
angG[2] = (GetParameter( kParam_B )+1.5)*0.5;
if (pad > angG[2]) pad = angG[2];
if (drive < angG[2]) drive = angG[2];
angG[3] = GetParameter( kParam_C )+0.5;
angG[3] = (GetParameter( kParam_C )+1.5)*0.5;
if (pad > angG[3]) pad = angG[3];
if (drive < angG[3]) drive = angG[3];
angG[4] = GetParameter( kParam_D )+0.5;
angG[4] = (GetParameter( kParam_D )+1.5)*0.5;
if (pad > angG[4]) pad = angG[4];
if (drive < angG[4]) drive = angG[4];
angG[5] = GetParameter( kParam_E )+0.5;
angG[5] = (GetParameter( kParam_E )+1.5)*0.5;
if (pad > angG[5]) pad = angG[5];
if (drive < angG[5]) drive = angG[5];
angG[6] = GetParameter( kParam_F )+0.5;
angG[6] = (GetParameter( kParam_F )+1.5)*0.5;
if (pad > angG[6]) pad = angG[6];
if (drive < angG[6]) drive = angG[6];
angG[7] = GetParameter( kParam_G )+0.5;
angG[7] = (GetParameter( kParam_G )+1.5)*0.5;
if (pad > angG[7]) pad = angG[7];
if (drive < angG[7]) drive = angG[7];
angG[8] = GetParameter( kParam_H )+0.5;
angG[8] = (GetParameter( kParam_H )+1.5)*0.5;
if (pad > angG[8]) pad = angG[8];
if (drive < angG[8]) drive = angG[8];
angG[9] = GetParameter( kParam_I )+0.5;
angG[9] = (GetParameter( kParam_I )+1.5)*0.5;
if (pad > angG[9]) pad = angG[9];
if (drive < angG[9]) drive = angG[9];
angG[10] = GetParameter( kParam_J )+0.5;
angG[10] = (GetParameter( kParam_J )+1.5)*0.5;
if (pad > angG[10]) pad = angG[10];
if (drive < angG[10]) drive = angG[10];
angG[11] = (angG[10]+1.0)*0.5;
angG[12] = (angG[11]+1.0)*0.5;
double tune = 0.618+(overallscale*0.0055);
double threshold = 1.0-(drive*0.23);
double adjSpd = ((drive*120.0)+50.0)*overallscale;
angG[12] = angG[11] = angG[10];
if (drive > 1.0) drive = pow(drive,drive*2.0);
double tune = 0.618+(overallscale*0.0055);
double bezRez = (pad * drive * 0.0005)/overallscale;
int bezFreqFraction = (int)(1.0/bezRez);
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
bezRez = 1.0 / bezFreqFraction;
bezFreqTrim = 1.0-(bezRez*bezFreqTrim);
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSample; inputSample = 0.0;
double band = inputSampleL; inputSampleL = 0.0;
for (int y = 0; y < 12; y++) {
angA[x][y] = (angA[x][y]*(1.0-fr)) + ((band-angS[x][y])*fr);
double temp = band; band = ((angS[x][y]+(angA[x][y]*fr)) * (1.0-fr))+(band*fr);
angS[x][y] = ((angS[x][y]+(angA[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSample += ((temp-band)*angG[y]);
inputSampleL += ((temp-band)*angG[y]);
fr *= tune;
}
inputSample += band;
inputSample *= threshold;
inputSample *= (muComp/threshold);
if (fabs(inputSample) > threshold)
{
muComp *= muSpd;
if (threshold/fabs(inputSample) < threshold) muComp += threshold*fabs(inputSample);
else muComp -= threshold/fabs(inputSample);
muComp /= muSpd;
} else {
muComp *= (muSpd*muSpd);
muComp += ((1.1+threshold)-fabs(inputSample));
muComp /= (muSpd*muSpd);
inputSampleL += band; //end of filter part
bezComp[bez_cycle][x] += bezRez;
bezComp[bez_SampL][x] += (fabs(inputSampleL) * bezRez);
if (bezComp[bez_cycle][x] > 1.0) {
bezComp[bez_cycle][x] = 0.0;
bezComp[bez_CL][x] = bezComp[bez_BL][x];
bezComp[bez_BL][x] = bezComp[bez_AL][x];
bezComp[bez_AL][x] = bezComp[bez_SampL][x];
bezComp[bez_SampL][x] = 0.0;
}
muComp = fmax(fmin(muComp,1.0),threshold);
inputSample *= (muComp*muComp);
muSpd = fmax(fmin(((muSpd*(muSpd-1.0))+(fabs(inputSample*adjSpd)))/muSpd,adjSpd*2.0),adjSpd);
double z = bezComp[bez_cycle][x]*bezFreqTrim;
double CBL = (bezComp[bez_CL][x]*(1.0-z))+(bezComp[bez_BL][x]*z);
double BAL = (bezComp[bez_BL][x]*(1.0-z))+(bezComp[bez_AL][x]*z);
double CBAL = (bezComp[bez_BL][x]+(CBL*(1.0-z))+(BAL*z));
CBAL = fmin(fmax(CBAL*drive*0.23,0.0),M_PI_2);
inputSampleL *= 1.0-sin(CBAL);
}
inputSample = sin(fmin(fmax(inputSample*pad,-M_PI_2),M_PI_2));
inputSampleL /= drive;
inputSampleL = fmin(fmax(inputSampleL*pad,-1.0),1.0); //let's do an output clip
//begin 32 bit floating point dither
int expon; frexpf((float)inputSample, &expon);
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSample;
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}

View file

@ -154,9 +154,18 @@ public:
double angS[18][15];
double angA[18][15];
double angG[15];
double muComp;
double muSpd;
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezComp[bez_total][18];
uint32_t fpd;
};

View file

@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 776427414;
PBXWorkspaceStateSaveDate = 776427414;
PBXPerProjectTemplateStateSaveDate = 784153881;
PBXWorkspaceStateSaveDate = 784153881;
};
perUserProjectItems = {
8B33D58F2DF3AB1D0044A4FF /* PlistBookmark */ = 8B33D58F2DF3AB1D0044A4FF /* PlistBookmark */;
8B42CBD92E315A03001C0B57 /* PBXTextBookmark */ = 8B42CBD92E315A03001C0B57 /* PBXTextBookmark */;
8BB158F92E4759DF00D27777 /* PBXTextBookmark */ = 8BB158F92E4759DF00D27777 /* PBXTextBookmark */;
8BB158FA2E4759DF00D27777 /* PBXTextBookmark */ = 8BB158FA2E4759DF00D27777 /* PBXTextBookmark */;
8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */ = 8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */;
8B7D6E612EBD420A000B38FA /* PBXTextBookmark */ = 8B7D6E612EBD420A000B38FA /* PBXTextBookmark */;
8B7D6E622EBD420A000B38FA /* PBXTextBookmark */ = 8B7D6E622EBD420A000B38FA /* PBXTextBookmark */;
8BFD341B2E058DBA00CA61BB /* PBXTextBookmark */ = 8BFD341B2E058DBA00CA61BB /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@ -75,58 +75,58 @@
rLen = 0;
rLoc = 9223372036854775808;
};
8B42CBD92E315A03001C0B57 /* PBXTextBookmark */ = {
8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 299";
rLen = 0;
rLoc = 13653;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8B7D6E612EBD420A000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */;
name = "ChimeyDeluxe.h: 166";
name = "ChimeyDeluxe.h: 170";
rLen = 0;
rLoc = 6181;
rLoc = 6368;
rType = 0;
vrLen = 148;
vrLen = 45;
vrLoc = 3;
};
8B7D6E622EBD420A000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 298";
rLen = 0;
rLoc = 13653;
rType = 0;
vrLen = 47;
vrLoc = 0;
};
8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {920, 6696}}";
sepNavSelRange = "{13457, 64}";
sepNavVisRange = "{12723, 1520}";
sepNavWindowFrame = "{{755, 74}, {967, 804}}";
sepNavIntBoundsRect = "{{0, 0}, {948, 6390}}";
sepNavSelRange = "{13653, 0}";
sepNavVisRange = "{0, 47}";
sepNavWindowFrame = "{{1, 38}, {737, 837}}";
};
};
8BA05A690720730100365D66 /* ChimeyDeluxeVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{2738, 251}";
sepNavVisRange = "{1174, 1815}";
sepNavWindowFrame = "{{38, 48}, {967, 804}}";
};
};
8BB158F92E4759DF00D27777 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 305";
rLen = 0;
rLoc = 13521;
rType = 0;
vrLen = 45;
vrLoc = 13609;
};
8BB158FA2E4759DF00D27777 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */;
name = "ChimeyDeluxe.h: 161";
rLen = 0;
rLoc = 6181;
rType = 0;
vrLen = 103;
vrLoc = 147;
};
8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 3006}}";
sepNavSelRange = "{6181, 0}";
sepNavVisRange = "{147, 103}";
sepNavWindowFrame = "{{783, 74}, {967, 804}}";
sepNavIntBoundsRect = "{{0, 0}, {948, 3258}}";
sepNavSelRange = "{6368, 0}";
sepNavVisRange = "{3, 45}";
sepNavWindowFrame = "{{9, 74}, {967, 804}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
<integer>841</integer>
<integer>841</integer>
<integer>737</integer>
<integer>737</integer>
</array>
<key>Perspectives</key>
<array>
@ -326,7 +326,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -342,7 +342,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
<string>ChimeyDeluxe.h</string>
<string>ChimeyDeluxe.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -350,17 +350,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
<string>ChimeyDeluxe.h</string>
<string>ChimeyDeluxe.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8BB158FA2E4759DF00D27777</string>
<string>8B7D6E622EBD420A000B38FA</string>
<key>history</key>
<array>
<string>8B33D58F2DF3AB1D0044A4FF</string>
<string>8BFD341B2E058DBA00CA61BB</string>
<string>8BB158F92E4759DF00D27777</string>
<string>8B42CBD92E315A03001C0B57</string>
<string>8B7D6E612EBD420A000B38FA</string>
<string>8B7D6E1E2EBD3C70000B38FA</string>
</array>
</dict>
<key>SplitCount</key>
@ -374,18 +374,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {427, 47}}</string>
<string>{{0, 0}, {427, 95}}</string>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>47pt</string>
<string>95pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>270pt</string>
<string>222pt</string>
<key>Tabs</key>
<array>
<dict>
@ -399,9 +399,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {427, 243}}</string>
<string>{{10, 27}, {427, 195}}</string>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -455,7 +455,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 352}}</string>
<string>{{10, 27}, {427, 261}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -483,11 +483,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8BB158FB2E4759DF00D27777</string>
<string>8B7D6E632EBD420A000B38FA</string>
<string>1CA23ED40692098700951B8B</string>
<string>8BB158FC2E4759DF00D27777</string>
<string>8B7D6E642EBD420A000B38FA</string>
<string>8BD7274A1D46E5A5000176F0</string>
<string>8BB158FD2E4759DF00D27777</string>
<string>8B7D6E652EBD420A000B38FA</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -660,7 +660,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>776427999.45691097</real>
<real>784155146.916085</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -680,7 +680,7 @@
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/ChimeyDeluxe/ChimeyDeluxe.xcodeproj</string>
</array>
<key>WindowString</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -0,0 +1,744 @@
/*
* File: ConsoleHBuss.cpp
*
* Version: 1.0
*
* Created: 11/4/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.
*
*/
/*=============================================================================
ConsoleHBuss.cpp
=============================================================================*/
#include "ConsoleHBuss.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(ConsoleHBuss)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ConsoleHBuss
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ConsoleHBuss::ConsoleHBuss(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_HIG, kDefaultValue_ParamHIG );
SetParameter(kParam_MID, kDefaultValue_ParamMID );
SetParameter(kParam_LOW, kDefaultValue_ParamLOW );
SetParameter(kParam_THR, kDefaultValue_ParamTHR );
SetParameter(kParam_LOP, kDefaultValue_ParamLOP );
SetParameter(kParam_HIP, kDefaultValue_ParamHIP );
SetParameter(kParam_PAN, kDefaultValue_ParamPAN );
SetParameter(kParam_FAD, kDefaultValue_ParamFAD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_HIG:
AUBase::FillInParameterName (outParameterInfo, kParameterHIGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterHIGUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIG;
break;
case kParam_MID:
AUBase::FillInParameterName (outParameterInfo, kParameterMIDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMID;
break;
case kParam_LOW:
AUBase::FillInParameterName (outParameterInfo, kParameterLOWName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOW;
break;
case kParam_THR:
AUBase::FillInParameterName (outParameterInfo, kParameterTHRName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTHRUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTHR;
break;
case kParam_LOP:
AUBase::FillInParameterName (outParameterInfo, kParameterLOPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterLOPUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOP;
break;
case kParam_HIP:
AUBase::FillInParameterName (outParameterInfo, kParameterHIPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIP;
break;
case kParam_PAN:
AUBase::FillInParameterName (outParameterInfo, kParameterPANName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamPAN;
break;
case kParam_FAD:
AUBase::FillInParameterName (outParameterInfo, kParameterFADName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamFAD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::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 ConsoleHBuss::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// ConsoleHBuss::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____ConsoleHBussEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ConsoleHBussKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
highFastRIIR = 0.0;
lowFastLIIR = 0.0;
lowFastRIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0;
//Dynamics2
for (int x = 0; x < hilp_total; x++) {
highpass[x] = 0.0;
lowpass[x] = 0.0;
}
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0; avg32R[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0; avg16R[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0; avg8R[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0; avg4R[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0; avg2R[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0; lastSlewR = 0.0;
lastSlewpleL = 0.0; lastSlewpleR = 0.0;
//preTapeHack
panA = 0.5; panB = 0.5;
inTrimA = 0.5; inTrimB = 0.5;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus ConsoleHBuss::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();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double trebleGain = (GetParameter( kParam_HIG )-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (GetParameter( kParam_MID )-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (GetParameter( kParam_LOW )-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/GetSampleRate());
double omega = 2.0*M_PI*(4000.0/GetSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/GetSampleRate());
omega = 2.0*M_PI*(200.0/GetSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
//SmoothEQ3
double bezCThresh = pow(1.0-GetParameter( kParam_THR ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_THR ), 12.360679774997898) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_THR ),10.0) / overallscale;
sloRez = fmin(fmax(sloRez,0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.00001),1.0);
//Dynamics2
highpass[hilp_freq] = ((pow(GetParameter( kParam_HIP ),3)*24000.0)+10.0)/GetSampleRate();
if (highpass[hilp_freq] > 0.495) highpass[hilp_freq] = 0.495;
bool highpassEngage = true; if (GetParameter( kParam_HIP ) == 0.0) highpassEngage = false;
lowpass[hilp_freq] = ((pow(GetParameter( kParam_LOP ),3)*24000.0)+10.0)/GetSampleRate();
if (lowpass[hilp_freq] > 0.495) lowpass[hilp_freq] = 0.495;
bool lowpassEngage = true; if (GetParameter( kParam_LOP ) == 0.0) lowpassEngage = false;
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
//previous run through the buffer is still in the filter, so we move it
//to the A section and now it's the new starting point.
//On the buss, highpass and lowpass are isolators meant to be moved,
//so they are interpolated where the channels are not
biqK = tan(M_PI * highpass[hilp_freq]); //highpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
highpass[hilp_aB0] = norm;
highpass[hilp_aB1] = -2.0 * highpass[hilp_aB0];
highpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
highpass[hilp_cB0] = norm;
highpass[hilp_cB1] = -2.0 * highpass[hilp_cB0];
highpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
highpass[hilp_eB0] = norm;
highpass[hilp_eB1] = -2.0 * highpass[hilp_eB0];
highpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
biqK = tan(M_PI * lowpass[hilp_freq]); //lowpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
lowpass[hilp_aB0] = biqK * biqK * norm;
lowpass[hilp_aB1] = 2.0 * lowpass[hilp_aB0];
lowpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
lowpass[hilp_cB0] = biqK * biqK * norm;
lowpass[hilp_cB1] = 2.0 * lowpass[hilp_cB0];
lowpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
lowpass[hilp_eB0] = biqK * biqK * norm;
lowpass[hilp_eB1] = 2.0 * lowpass[hilp_eB0];
lowpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
if (highpass[hilp_aA0] == 0.0) { // if we have just started, start directly with raw info
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
}
panA = panB; panB = GetParameter( kParam_PAN )*1.57079633;
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
//Console
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;
const double temp = (double)nSampleFrames/inFramesToProcess;
highpass[hilp_a0] = (highpass[hilp_aA0]*temp)+(highpass[hilp_aB0]*(1.0-temp));
highpass[hilp_a1] = (highpass[hilp_aA1]*temp)+(highpass[hilp_aB1]*(1.0-temp));
highpass[hilp_b1] = (highpass[hilp_bA1]*temp)+(highpass[hilp_bB1]*(1.0-temp));
highpass[hilp_b2] = (highpass[hilp_bA2]*temp)+(highpass[hilp_bB2]*(1.0-temp));
highpass[hilp_c0] = (highpass[hilp_cA0]*temp)+(highpass[hilp_cB0]*(1.0-temp));
highpass[hilp_c1] = (highpass[hilp_cA1]*temp)+(highpass[hilp_cB1]*(1.0-temp));
highpass[hilp_d1] = (highpass[hilp_dA1]*temp)+(highpass[hilp_dB1]*(1.0-temp));
highpass[hilp_d2] = (highpass[hilp_dA2]*temp)+(highpass[hilp_dB2]*(1.0-temp));
highpass[hilp_e0] = (highpass[hilp_eA0]*temp)+(highpass[hilp_eB0]*(1.0-temp));
highpass[hilp_e1] = (highpass[hilp_eA1]*temp)+(highpass[hilp_eB1]*(1.0-temp));
highpass[hilp_f1] = (highpass[hilp_fA1]*temp)+(highpass[hilp_fB1]*(1.0-temp));
highpass[hilp_f2] = (highpass[hilp_fA2]*temp)+(highpass[hilp_fB2]*(1.0-temp));
lowpass[hilp_a0] = (lowpass[hilp_aA0]*temp)+(lowpass[hilp_aB0]*(1.0-temp));
lowpass[hilp_a1] = (lowpass[hilp_aA1]*temp)+(lowpass[hilp_aB1]*(1.0-temp));
lowpass[hilp_b1] = (lowpass[hilp_bA1]*temp)+(lowpass[hilp_bB1]*(1.0-temp));
lowpass[hilp_b2] = (lowpass[hilp_bA2]*temp)+(lowpass[hilp_bB2]*(1.0-temp));
lowpass[hilp_c0] = (lowpass[hilp_cA0]*temp)+(lowpass[hilp_cB0]*(1.0-temp));
lowpass[hilp_c1] = (lowpass[hilp_cA1]*temp)+(lowpass[hilp_cB1]*(1.0-temp));
lowpass[hilp_d1] = (lowpass[hilp_dA1]*temp)+(lowpass[hilp_dB1]*(1.0-temp));
lowpass[hilp_d2] = (lowpass[hilp_dA2]*temp)+(lowpass[hilp_dB2]*(1.0-temp));
lowpass[hilp_e0] = (lowpass[hilp_eA0]*temp)+(lowpass[hilp_eB0]*(1.0-temp));
lowpass[hilp_e1] = (lowpass[hilp_eA1]*temp)+(lowpass[hilp_eB1]*(1.0-temp));
lowpass[hilp_f1] = (lowpass[hilp_fA1]*temp)+(lowpass[hilp_fB1]*(1.0-temp));
lowpass[hilp_f2] = (lowpass[hilp_fA2]*temp)+(lowpass[hilp_fB2]*(1.0-temp));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_a0])+highpass[hilp_aL1];
highpass[hilp_aL1] = (inputSampleL*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aL2];
highpass[hilp_aL2] = (inputSampleL*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_a0])+highpass[hilp_aR1];
highpass[hilp_aR1] = (inputSampleR*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aR2];
highpass[hilp_aR2] = (inputSampleR*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_aR1] = highpass[hilp_aR2] = highpass[hilp_aL1] = highpass[hilp_aL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_a0])+lowpass[hilp_aL1];
lowpass[hilp_aL1] = (inputSampleL*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aL2];
lowpass[hilp_aL2] = (inputSampleL*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_a0])+lowpass[hilp_aR1];
lowpass[hilp_aR1] = (inputSampleR*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aR2];
lowpass[hilp_aR2] = (inputSampleR*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_aR1] = lowpass[hilp_aR2] = lowpass[hilp_aL1] = lowpass[hilp_aL2] = 0.0;
//first Highpass/Lowpass blocks aliasing before the nonlinearity of ConsoleXBuss and Parametric
if (inputSampleL > 1.0) inputSampleL = 1.0;
else if (inputSampleL > 0.0) inputSampleL = -expm1((log1p(-inputSampleL) * 0.6180339887498949));
if (inputSampleL < -1.0) inputSampleL = -1.0;
else if (inputSampleL < 0.0) inputSampleL = expm1((log1p(inputSampleL) * 0.6180339887498949));
if (inputSampleR > 1.0) inputSampleR = 1.0;
else if (inputSampleR > 0.0) inputSampleR = -expm1((log1p(-inputSampleR) * 0.6180339887498949));
if (inputSampleR < -1.0) inputSampleR = -1.0;
else if (inputSampleR < 0.0) inputSampleR = expm1((log1p(inputSampleR) * 0.6180339887498949));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_c0])+highpass[hilp_cL1];
highpass[hilp_cL1] = (inputSampleL*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cL2];
highpass[hilp_cL2] = (inputSampleL*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_c0])+highpass[hilp_cR1];
highpass[hilp_cR1] = (inputSampleR*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cR2];
highpass[hilp_cR2] = (inputSampleR*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_cR1] = highpass[hilp_cR2] = highpass[hilp_cL1] = highpass[hilp_cL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_c0])+lowpass[hilp_cL1];
lowpass[hilp_cL1] = (inputSampleL*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cL2];
lowpass[hilp_cL2] = (inputSampleL*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_c0])+lowpass[hilp_cR1];
lowpass[hilp_cR1] = (inputSampleR*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cR2];
lowpass[hilp_cR2] = (inputSampleR*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_cR1] = lowpass[hilp_cR2] = lowpass[hilp_cL1] = lowpass[hilp_cL2] = 0.0;
//another stage of Highpass/Lowpass before bringing in the parametric bands
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
inputSampleL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
double trebleFastR = inputSampleR;
outSample = (trebleFastR * highFast[biq_a0]) + highFast[biq_sR1];
highFast[biq_sR1] = (trebleFastR * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sR2];
highFast[biq_sR2] = (trebleFastR * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastR = outSample; trebleFastR -= midFastR;
outSample = (midFastR * lowFast[biq_a0]) + lowFast[biq_sR1];
lowFast[biq_sR1] = (midFastR * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sR2];
lowFast[biq_sR2] = (midFastR * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastR = outSample; midFastR -= bassFastR;
trebleFastR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastRIIR = (highFastRIIR*highCoef) + (trebleFastR*(1.0-highCoef));
midFastR = highFastRIIR; trebleFastR -= midFastR;
lowFastRIIR = (lowFastRIIR*lowCoef) + (midFastR*(1.0-lowCoef));
bassFastR = lowFastRIIR; midFastR -= bassFastR;
inputSampleR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
//Dynamics2
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_e0])+highpass[hilp_eL1];
highpass[hilp_eL1] = (inputSampleL*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eL2];
highpass[hilp_eL2] = (inputSampleL*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_e0])+highpass[hilp_eR1];
highpass[hilp_eR1] = (inputSampleR*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eR2];
highpass[hilp_eR2] = (inputSampleR*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_eR1] = highpass[hilp_eR2] = highpass[hilp_eL1] = highpass[hilp_eL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_e0])+lowpass[hilp_eL1];
lowpass[hilp_eL1] = (inputSampleL*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eL2];
lowpass[hilp_eL2] = (inputSampleL*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_e0])+lowpass[hilp_eR1];
lowpass[hilp_eR1] = (inputSampleR*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eR2];
lowpass[hilp_eR2] = (inputSampleR*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_eR1] = lowpass[hilp_eR2] = lowpass[hilp_eL1] = lowpass[hilp_eL2] = 0.0;
//final Highpass/Lowpass continues to address aliasing
//final stacked biquad section is the softest Q for smoothness
double gainR = (panA*temp)+(panB*(1.0-temp));
double gainL = 1.57079633-gainR;
gainR = sin(gainR); gainL = sin(gainL);
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 2.0;
inputSampleL = inputSampleL * gainL * gain;
inputSampleR = inputSampleR * gainR * gain;
//applies pan section, and smoothed fader gain
double darkSampleL = inputSampleL;
double darkSampleR = inputSampleR;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL; avg32R[avgPos] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x]; darkSampleR += avg32R[x];}
darkSampleL /= 32.0; darkSampleR /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL; avg16R[avgPos%16] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x]; darkSampleR += avg16R[x];}
darkSampleL /= 16.0; darkSampleR /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL; avg8R[avgPos%8] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x]; darkSampleR += avg8R[x];}
darkSampleL /= 8.0; darkSampleR /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL; avg4R[avgPos%4] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x]; darkSampleR += avg4R[x];}
darkSampleL /= 4.0; darkSampleR /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL; avg2R[avgPos%2] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x]; darkSampleR += avg2R[x];}
darkSampleL /= 2.0; darkSampleR /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223);
lastSlewR += fabs(lastSlewpleR-inputSampleR); lastSlewpleR = inputSampleR;
double avgSlewR = fmin(lastSlewR,1.0);
lastSlewR = fmax(lastSlewR*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
inputSampleR = (inputSampleR*(1.0-avgSlewR)) + (darkSampleR*avgSlewR);
//begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleL *= 0.92;
//end TapeHack section
//begin TapeHack section
inputSampleR = fmax(fmin(inputSampleR,2.305929007734908),-2.305929007734908);
addtwo = inputSampleR * inputSampleR;
empower = inputSampleR * addtwo; // inputSampleR to the third power
inputSampleR -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleR += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleR -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleR += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleR -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleR *= 0.92;
//end TapeHack section
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*outputL = inputSampleL;
*outputR = inputSampleR;
//direct stereo out
inputL += 1;
inputR += 1;
outputL += 1;
outputR += 1;
}
return noErr;
}

View file

@ -0,0 +1 @@
_ConsoleHBussEntry

View file

@ -0,0 +1,226 @@
/*
* File: ConsoleHBuss.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHBussVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHBuss_h__
#define __ConsoleHBuss_h__
#pragma mark ____ConsoleHBuss Parameters
// parameters
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamPAN = 0.5;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterPANName = CFSTR("Pan");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_HIG =0,
kParam_MID =1,
kParam_LOW =2,
kParam_THR =3,
kParam_LOP =4,
kParam_HIP =5,
kParam_PAN =6,
kParam_FAD =7,
//Add your parameters here...
kNumberOfParameters=8
};
#pragma mark ____ConsoleHBuss
class ConsoleHBuss : public AUEffectBase
{
public:
ConsoleHBuss(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHBuss () { 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 kConsoleHBussVersion; }
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
//Dynamics2
enum {
hilp_freq, hilp_temp,
hilp_a0, hilp_aA0, hilp_aB0, hilp_a1, hilp_aA1, hilp_aB1, hilp_b1, hilp_bA1, hilp_bB1, hilp_b2, hilp_bA2, hilp_bB2,
hilp_c0, hilp_cA0, hilp_cB0, hilp_c1, hilp_cA1, hilp_cB1, hilp_d1, hilp_dA1, hilp_dB1, hilp_d2, hilp_dA2, hilp_dB2,
hilp_e0, hilp_eA0, hilp_eB0, hilp_e1, hilp_eA1, hilp_eB1, hilp_f1, hilp_fA1, hilp_fB1, hilp_f2, hilp_fA2, hilp_fB2,
hilp_aL1, hilp_aL2, hilp_aR1, hilp_aR2,
hilp_cL1, hilp_cL2, hilp_cR1, hilp_cR2,
hilp_eL1, hilp_eL2, hilp_eR1, hilp_eR2,
hilp_total
};
double highpass[hilp_total];
double lowpass[hilp_total];
double panA;
double panB;
double inTrimA;
double inTrimB;
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: ConsoleHBuss.r
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHBussVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_ConsoleHBuss 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ConsoleHBuss~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_ConsoleHBuss
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE ConsoleHBuss_COMP_SUBTYPE
#define COMP_MANUF ConsoleHBuss_COMP_MANF
#define VERSION kConsoleHBussVersion
#define NAME "Airwindows: ConsoleHBuss"
#define DESCRIPTION "ConsoleHBuss AU"
#define ENTRY_POINT "ConsoleHBussEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,136 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */;
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 = 784133817;
PBXWorkspaceStateSaveDate = 784133817;
};
perUserProjectItems = {
8B7D6D372EBCF553000B38FA /* PBXTextBookmark */ = 8B7D6D372EBCF553000B38FA /* PBXTextBookmark */;
8B7D6D382EBCF553000B38FA /* PBXBookmark */ = 8B7D6D382EBCF553000B38FA /* PBXBookmark */;
8B7D6D392EBCF553000B38FA /* PBXTextBookmark */ = 8B7D6D392EBCF553000B38FA /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B7D6D372EBCF553000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ConsoleHBussVersion.h */;
name = "ConsoleHBussVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 37;
vrLoc = 0;
};
8B7D6D382EBCF553000B38FA /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHBuss.cpp */;
};
8B7D6D392EBCF553000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHBuss.cpp */;
name = "ConsoleHBuss.cpp: 523";
rLen = 0;
rLoc = 25931;
rType = 0;
vrLen = 64;
vrLoc = 33450;
};
8BA05A660720730100365D66 /* ConsoleHBuss.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {858, 13752}}";
sepNavSelRange = "{25931, 0}";
sepNavVisRange = "{33450, 64}";
sepNavWindowFrame = "{{22, 52}, {912, 826}}";
};
};
8BA05A690720730100365D66 /* ConsoleHBussVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{1072, 1918}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* ConsoleHBuss.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 4068}}";
sepNavSelRange = "{6440, 589}";
sepNavVisRange = "{5857, 1011}";
sepNavWindowFrame = "{{7, 35}, {912, 826}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

View file

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

View file

@ -0,0 +1,58 @@
/*
* File: ConsoleHBussVersion.h
*
* Version: 1.0
*
* Created: 11/4/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 __ConsoleHBussVersion_h__
#define __ConsoleHBussVersion_h__
#ifdef DEBUG
#define kConsoleHBussVersion 0xFFFFFFFF
#else
#define kConsoleHBussVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define ConsoleHBuss_COMP_MANF 'Dthr'
#define ConsoleHBuss_COMP_SUBTYPE 'chpb'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

Binary file not shown.

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>Dthr</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
_ConsoleHChannelEntry

View file

@ -0,0 +1,313 @@
/*
* File: ConsoleHChannel.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHChannelVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHChannel_h__
#define __ConsoleHChannel_h__
#pragma mark ____ConsoleHChannel Parameters
// parameters
static const int kDefaultValue_ParamTRM = 1;
static const float kDefaultValue_ParamMOR = 0.0;
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamCRS = 0.0;
static const float kDefaultValue_ParamTRF = 0.5;
static const float kDefaultValue_ParamTRG = 0.0;
static const float kDefaultValue_ParamTRB = 0.5;
static const float kDefaultValue_ParamHMF = 0.5;
static const float kDefaultValue_ParamHMG = 0.0;
static const float kDefaultValue_ParamHMB = 0.5;
static const float kDefaultValue_ParamLMF = 0.5;
static const float kDefaultValue_ParamLMG = 0.0;
static const float kDefaultValue_ParamLMB = 0.5;
static const float kDefaultValue_ParamBSF = 0.5;
static const float kDefaultValue_ParamBSG = 0.0;
static const float kDefaultValue_ParamBSB = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamATK = 0.5;
static const float kDefaultValue_ParamRLS = 0.5;
static const float kDefaultValue_ParamGAT = 0.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamPAN = 0.5;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterTRMName = CFSTR("Trim");
static CFStringRef kParameterMORName = CFSTR("More");
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterCRSName = CFSTR("CrossFd");
static CFStringRef kParameterTRFUnit = CFSTR("crush");
static CFStringRef kParameterTRFName = CFSTR("Tr Freq");
static CFStringRef kParameterTRGName = CFSTR("Treble");
static CFStringRef kParameterTRBName = CFSTR("TrCrush");
static CFStringRef kParameterHMFName = CFSTR("HM Freq");
static CFStringRef kParameterHMGName = CFSTR("HighMid");
static CFStringRef kParameterHMBName = CFSTR("HMCrush");
static CFStringRef kParameterLMFName = CFSTR("LM Freq");
static CFStringRef kParameterLMGName = CFSTR("LowMid");
static CFStringRef kParameterLMBName = CFSTR("LMCrush");
static CFStringRef kParameterBSFName = CFSTR("Bs Freq");
static CFStringRef kParameterBSGName = CFSTR("Bass");
static CFStringRef kParameterBSBName = CFSTR("BsCrush");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterATKName = CFSTR("Attack");
static CFStringRef kParameterRLSName = CFSTR("Release");
static CFStringRef kParameterGATName = CFSTR("Gate");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterPANName = CFSTR("Pan");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_PAN =24,
kParam_FAD =25,
//Add your parameters here...
kNumberOfParameters=26
};
const int dscBuf = 256;
#pragma mark ____ConsoleHChannel
class ConsoleHChannel : public AUEffectBase
{
public:
ConsoleHChannel(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHChannel () { 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 kConsoleHChannelVersion; }
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2, biqs_aR1, biqs_aR2,
biqs_cL1, biqs_cL2, biqs_cR1, biqs_cR2,
biqs_outL, biqs_outR, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
//Dynamics2
double iirHPositionL[23];
double iirHAngleL[23];
double iirHPositionR[23];
double iirHAngleR[23];
bool hBypass;
double iirLPositionL[15];
double iirLAngleL[15];
double iirLPositionR[15];
double iirLAngleR[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
double dBaR[dscBuf+5];
double dBaPosR;
int dBaXR;
//Discontapeity
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
double panA;
double panB;
double inTrimA;
double inTrimB;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: ConsoleHChannel.r
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHChannelVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_ConsoleHChannel 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ConsoleHChannel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_ConsoleHChannel
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE ConsoleHChannel_COMP_SUBTYPE
#define COMP_MANUF ConsoleHChannel_COMP_MANF
#define VERSION kConsoleHChannelVersion
#define NAME "Airwindows: ConsoleHChannel"
#define DESCRIPTION "ConsoleHChannel AU"
#define ENTRY_POINT "ConsoleHChannelEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,107 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
303,
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 = 784126220;
PBXWorkspaceStateSaveDate = 784126220;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* ConsoleHChannel.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1308, 19872}}";
sepNavSelRange = "{29117, 23722}";
sepNavVisRange = "{52032, 1445}";
sepNavWindowFrame = "{{5, 52}, {912, 826}}";
};
};
8BA05A690720730100365D66 /* ConsoleHChannelVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2948, 0}";
sepNavVisRange = "{1075, 1936}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* ConsoleHChannel.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 4878}}";
sepNavSelRange = "{6299, 25}";
sepNavVisRange = "{5969, 1043}";
sepNavWindowFrame = "{{7, 52}, {912, 826}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */ = {
activeExec = 0;
};
}

View file

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

View file

@ -0,0 +1,58 @@
/*
* File: ConsoleHChannelVersion.h
*
* Version: 1.0
*
* Created: 11/4/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 __ConsoleHChannelVersion_h__
#define __ConsoleHChannelVersion_h__
#ifdef DEBUG
#define kConsoleHChannelVersion 0xFFFFFFFF
#else
#define kConsoleHChannelVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define ConsoleHChannel_COMP_MANF 'Dthr'
#define ConsoleHChannel_COMP_SUBTYPE 'chpc'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>Dthr</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

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

View file

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

View file

@ -0,0 +1,847 @@
/*
* File: ConsoleHPre.cpp
*
* Version: 1.0
*
* Created: 11/4/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.
*
*/
/*=============================================================================
ConsoleHPre.cpp
=============================================================================*/
#include "ConsoleHPre.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COMPONENT_ENTRY(ConsoleHPre)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPre
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ConsoleHPre::ConsoleHPre(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_TRM, kDefaultValue_ParamTRM );
SetParameter(kParam_MOR, kDefaultValue_ParamMOR );
SetParameter(kParam_HIG, kDefaultValue_ParamHIG );
SetParameter(kParam_MID, kDefaultValue_ParamMID );
SetParameter(kParam_LOW, kDefaultValue_ParamLOW );
SetParameter(kParam_CRS, kDefaultValue_ParamCRS );
SetParameter(kParam_TRF, kDefaultValue_ParamTRF );
SetParameter(kParam_TRG, kDefaultValue_ParamTRG );
SetParameter(kParam_TRB, kDefaultValue_ParamTRB );
SetParameter(kParam_HMF, kDefaultValue_ParamHMF );
SetParameter(kParam_HMG, kDefaultValue_ParamHMG );
SetParameter(kParam_HMB, kDefaultValue_ParamHMB );
SetParameter(kParam_LMF, kDefaultValue_ParamLMF );
SetParameter(kParam_LMG, kDefaultValue_ParamLMG );
SetParameter(kParam_LMB, kDefaultValue_ParamLMB );
SetParameter(kParam_BSF, kDefaultValue_ParamBSF );
SetParameter(kParam_BSG, kDefaultValue_ParamBSG );
SetParameter(kParam_BSB, kDefaultValue_ParamBSB );
SetParameter(kParam_THR, kDefaultValue_ParamTHR );
SetParameter(kParam_ATK, kDefaultValue_ParamATK );
SetParameter(kParam_RLS, kDefaultValue_ParamRLS );
SetParameter(kParam_GAT, kDefaultValue_ParamGAT );
SetParameter(kParam_LOP, kDefaultValue_ParamLOP );
SetParameter(kParam_HIP, kDefaultValue_ParamHIP );
SetParameter(kParam_FAD, kDefaultValue_ParamFAD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_TRM:
AUBase::FillInParameterName (outParameterInfo, kParameterTRMName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Indexed;
outParameterInfo.minValue = 0;
outParameterInfo.maxValue = 4;
outParameterInfo.defaultValue = kDefaultValue_ParamTRM;
break;
case kParam_MOR:
AUBase::FillInParameterName (outParameterInfo, kParameterMORName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMOR;
break;
case kParam_HIG:
AUBase::FillInParameterName (outParameterInfo, kParameterHIGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterHIGUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIG;
break;
case kParam_MID:
AUBase::FillInParameterName (outParameterInfo, kParameterMIDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMID;
break;
case kParam_LOW:
AUBase::FillInParameterName (outParameterInfo, kParameterLOWName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOW;
break;
case kParam_CRS:
AUBase::FillInParameterName (outParameterInfo, kParameterCRSName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamCRS;
break;
case kParam_TRF:
AUBase::FillInParameterName (outParameterInfo, kParameterTRFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTRFUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRF;
break;
case kParam_TRG:
AUBase::FillInParameterName (outParameterInfo, kParameterTRGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRG;
break;
case kParam_TRB:
AUBase::FillInParameterName (outParameterInfo, kParameterTRBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRB;
break;
case kParam_HMF:
AUBase::FillInParameterName (outParameterInfo, kParameterHMFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMF;
break;
case kParam_HMG:
AUBase::FillInParameterName (outParameterInfo, kParameterHMGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMG;
break;
case kParam_HMB:
AUBase::FillInParameterName (outParameterInfo, kParameterHMBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMB;
break;
case kParam_LMF:
AUBase::FillInParameterName (outParameterInfo, kParameterLMFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMF;
break;
case kParam_LMG:
AUBase::FillInParameterName (outParameterInfo, kParameterLMGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMG;
break;
case kParam_LMB:
AUBase::FillInParameterName (outParameterInfo, kParameterLMBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMB;
break;
case kParam_BSF:
AUBase::FillInParameterName (outParameterInfo, kParameterBSFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSF;
break;
case kParam_BSG:
AUBase::FillInParameterName (outParameterInfo, kParameterBSGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSG;
break;
case kParam_BSB:
AUBase::FillInParameterName (outParameterInfo, kParameterBSBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSB;
break;
case kParam_THR:
AUBase::FillInParameterName (outParameterInfo, kParameterTHRName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTHRUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTHR;
break;
case kParam_ATK:
AUBase::FillInParameterName (outParameterInfo, kParameterATKName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamATK;
break;
case kParam_RLS:
AUBase::FillInParameterName (outParameterInfo, kParameterRLSName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamRLS;
break;
case kParam_GAT:
AUBase::FillInParameterName (outParameterInfo, kParameterGATName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamGAT;
break;
case kParam_LOP:
AUBase::FillInParameterName (outParameterInfo, kParameterLOPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterLOPUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOP;
break;
case kParam_HIP:
AUBase::FillInParameterName (outParameterInfo, kParameterHIPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIP;
break;
case kParam_FAD:
AUBase::FillInParameterName (outParameterInfo, kParameterFADName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamFAD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// ConsoleHPre::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____ConsoleHPreEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPreKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void ConsoleHPre::ConsoleHPreKernel::Reset()
{
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
lowFastLIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < biqs_total; x++) {
high[x] = 0.0;
hmid[x] = 0.0;
lmid[x] = 0.0;
bass[x] = 0.0;
}
//HipCrush with four bands
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
//Dynamics2
for(int count = 0; count < 22; count++) {
iirHPosition[count] = 0.0;
iirHAngle[count] = 0.0;
}
hBypass = false;
for(int count = 0; count < 14; count++) {
iirLPosition[count] = 0.0;
iirLAngle[count] = 0.0;
}
lBypass = false;
//Cabs2
for(int count = 0; count < dscBuf+2; count++) {
dBaL[count] = 0.0;
}
dBaPosL = 0.0;
dBaXL = 1;
//Discontapeity
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0;
lastSlewpleL = 0.0;
//preTapeHack
lFreqA = 1.0; lFreqB = 1.0;
hFreqA = 0.0; hFreqB = 0.0;
inTrimA = 0.5; inTrimB = 0.5;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPreKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void ConsoleHPre::ConsoleHPreKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double moreTapeHack = (GetParameter( kParam_MOR )*2.0)+1.0;
switch ((int)GetParameter( kParam_TRM )){
case 0: moreTapeHack *= 0.5; break;
case 1: break;
case 2: moreTapeHack *= 2.0; break;
case 3: moreTapeHack *= 4.0; break;
case 4: moreTapeHack *= 8.0; break;
}
double moreDiscontinuity = fmax(pow(GetParameter( kParam_MOR )*0.42,3.0)*overallscale,0.00001);
//Discontapeity
double trebleGain = (GetParameter( kParam_HIG )-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (GetParameter( kParam_MID )-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (GetParameter( kParam_LOW )-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/GetSampleRate());
double omega = 2.0*M_PI*(4000.0/GetSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/GetSampleRate());
omega = 2.0*M_PI*(200.0/GetSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
high[biqs_freq] = (((pow(GetParameter( kParam_TRF ),2.0)*16000.0)+1000.0)/GetSampleRate());
if (high[biqs_freq] < 0.0001) high[biqs_freq] = 0.0001;
high[biqs_bit] = (GetParameter( kParam_TRB )*2.0)-1.0;
high[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_TRG ),2.0))*1.618033988749894848204586;
high[biqs_reso] = pow(GetParameter( kParam_TRG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * high[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (high[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
high[biqs_a0] = biqK / (high[biqs_reso]*0.618033988749894848204586) * norm;
high[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
high[biqs_b2] = (1.0 - biqK / (high[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (high[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
high[biqs_c0] = biqK / (high[biqs_reso]*1.618033988749894848204586) * norm;
high[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
high[biqs_d2] = (1.0 - biqK / (high[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//high
hmid[biqs_freq] = (((pow(GetParameter( kParam_HMF ),3.0)*7000.0)+300.0)/GetSampleRate());
if (hmid[biqs_freq] < 0.0001) hmid[biqs_freq] = 0.0001;
hmid[biqs_bit] = (GetParameter( kParam_HMB )*2.0)-1.0;
hmid[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_HMG ),2.0))*1.618033988749894848204586;
hmid[biqs_reso] = pow(GetParameter( kParam_HMG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * hmid[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (hmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
hmid[biqs_a0] = biqK / (hmid[biqs_reso]*0.618033988749894848204586) * norm;
hmid[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
hmid[biqs_b2] = (1.0 - biqK / (hmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (hmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
hmid[biqs_c0] = biqK / (hmid[biqs_reso]*1.618033988749894848204586) * norm;
hmid[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
hmid[biqs_d2] = (1.0 - biqK / (hmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//hmid
lmid[biqs_freq] = (((pow(GetParameter( kParam_LMF ),3.0)*3000.0)+40.0)/GetSampleRate());
if (lmid[biqs_freq] < 0.00001) lmid[biqs_freq] = 0.00001;
lmid[biqs_bit] = (GetParameter( kParam_LMB )*2.0)-1.0;
lmid[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_LMG ),2.0))*1.618033988749894848204586;
lmid[biqs_reso] = pow(GetParameter( kParam_LMG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * lmid[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (lmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
lmid[biqs_a0] = biqK / (lmid[biqs_reso]*0.618033988749894848204586) * norm;
lmid[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
lmid[biqs_b2] = (1.0 - biqK / (lmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (lmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
lmid[biqs_c0] = biqK / (lmid[biqs_reso]*1.618033988749894848204586) * norm;
lmid[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
lmid[biqs_d2] = (1.0 - biqK / (lmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//lmid
bass[biqs_freq] = (((pow(GetParameter( kParam_BSF ),4.0)*1000.0)+20.0)/GetSampleRate());
if (bass[biqs_freq] < 0.00001) bass[biqs_freq] = 0.00001;
bass[biqs_bit] = (GetParameter( kParam_BSB )*2.0)-1.0;
bass[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_BSG ),2.0))*1.618033988749894848204586;
bass[biqs_reso] = pow(GetParameter( kParam_BSG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * bass[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (bass[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
bass[biqs_a0] = biqK / (bass[biqs_reso]*0.618033988749894848204586) * norm;
bass[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
bass[biqs_b2] = (1.0 - biqK / (bass[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (bass[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
bass[biqs_c0] = biqK / (bass[biqs_reso]*1.618033988749894848204586) * norm;
bass[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
bass[biqs_d2] = (1.0 - biqK / (bass[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//bass
double crossFade = GetParameter( kParam_CRS );
//HipCrush with four bands
double bezCThresh = pow(1.0-GetParameter( kParam_THR ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_ATK ), 8.0) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_RLS ),12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(GetParameter( kParam_GAT ),4.0),sqrt(bezCThresh+1.0));
//Dynamics2
lFreqA = lFreqB; lFreqB = pow(fmax(GetParameter( kParam_LOP ),0.002),overallscale); //the lowpass
hFreqA = hFreqB; hFreqB = pow(GetParameter( kParam_HIP ),overallscale+2.0); //the highpass
//Cabs2
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
//Console
while (nSampleFrames-- > 0) {
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
double darkSampleL = inputSampleL;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x];}
darkSampleL /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x];}
darkSampleL /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x];}
darkSampleL /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x];}
darkSampleL /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x];}
darkSampleL /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
//begin Discontinuity section
inputSampleL *= moreTapeHack;
inputSampleL *= moreDiscontinuity;
dBaL[dBaXL] = inputSampleL; dBaPosL *= 0.5; dBaPosL += fabs((inputSampleL*((inputSampleL*0.25)-0.5))*0.5);
dBaPosL = fmin(dBaPosL,1.0);
int dBdly = floor(dBaPosL*dscBuf);
double dBi = (dBaPosL*dscBuf)-dBdly;
inputSampleL = dBaL[dBaXL-dBdly +((dBaXL-dBdly < 0)?dscBuf:0)]*(1.0-dBi);
dBdly++; inputSampleL += dBaL[dBaXL-dBdly +((dBaXL-dBdly < 0)?dscBuf:0)]*dBi;
dBaXL++; if (dBaXL < 0 || dBaXL >= dscBuf) dBaXL = 0;
inputSampleL /= moreDiscontinuity;
//end Discontinuity section, begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
//end TapeHack section
//Discontapeity
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
double smoothEQL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
//begin Stacked Biquad With Reversed Neutron Flow L
high[biqs_outL] = inputSampleL * fabs(high[biqs_level]);
high[biqs_temp] = (high[biqs_outL] * high[biqs_a0]) + high[biqs_aL1];
high[biqs_aL1] = high[biqs_aL2] - (high[biqs_temp]*high[biqs_b1]);
high[biqs_aL2] = (high[biqs_outL] * -high[biqs_a0]) - (high[biqs_temp]*high[biqs_b2]);
high[biqs_outL] = high[biqs_temp];
if (high[biqs_bit] != 0.0) {
double bitFactor = high[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
high[biqs_outL] *= bitFactor;
high[biqs_outL] = floor(high[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
high[biqs_outL] /= bitFactor;
}
high[biqs_temp] = (high[biqs_outL] * high[biqs_c0]) + high[biqs_cL1];
high[biqs_cL1] = high[biqs_cL2] - (high[biqs_temp]*high[biqs_d1]);
high[biqs_cL2] = (high[biqs_outL] * -high[biqs_c0]) - (high[biqs_temp]*high[biqs_d2]);
high[biqs_outL] = high[biqs_temp];
high[biqs_outL] *= high[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
hmid[biqs_outL] = inputSampleL * fabs(hmid[biqs_level]);
hmid[biqs_temp] = (hmid[biqs_outL] * hmid[biqs_a0]) + hmid[biqs_aL1];
hmid[biqs_aL1] = hmid[biqs_aL2] - (hmid[biqs_temp]*hmid[biqs_b1]);
hmid[biqs_aL2] = (hmid[biqs_outL] * -hmid[biqs_a0]) - (hmid[biqs_temp]*hmid[biqs_b2]);
hmid[biqs_outL] = hmid[biqs_temp];
if (hmid[biqs_bit] != 0.0) {
double bitFactor = hmid[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
hmid[biqs_outL] *= bitFactor;
hmid[biqs_outL] = floor(hmid[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
hmid[biqs_outL] /= bitFactor;
}
hmid[biqs_temp] = (hmid[biqs_outL] * hmid[biqs_c0]) + hmid[biqs_cL1];
hmid[biqs_cL1] = hmid[biqs_cL2] - (hmid[biqs_temp]*hmid[biqs_d1]);
hmid[biqs_cL2] = (hmid[biqs_outL] * -hmid[biqs_c0]) - (hmid[biqs_temp]*hmid[biqs_d2]);
hmid[biqs_outL] = hmid[biqs_temp];
hmid[biqs_outL] *= hmid[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
lmid[biqs_outL] = inputSampleL * fabs(lmid[biqs_level]);
lmid[biqs_temp] = (lmid[biqs_outL] * lmid[biqs_a0]) + lmid[biqs_aL1];
lmid[biqs_aL1] = lmid[biqs_aL2] - (lmid[biqs_temp]*lmid[biqs_b1]);
lmid[biqs_aL2] = (lmid[biqs_outL] * -lmid[biqs_a0]) - (lmid[biqs_temp]*lmid[biqs_b2]);
lmid[biqs_outL] = lmid[biqs_temp];
if (lmid[biqs_bit] != 0.0) {
double bitFactor = lmid[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
lmid[biqs_outL] *= bitFactor;
lmid[biqs_outL] = floor(lmid[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
lmid[biqs_outL] /= bitFactor;
}
lmid[biqs_temp] = (lmid[biqs_outL] * lmid[biqs_c0]) + lmid[biqs_cL1];
lmid[biqs_cL1] = lmid[biqs_cL2] - (lmid[biqs_temp]*lmid[biqs_d1]);
lmid[biqs_cL2] = (lmid[biqs_outL] * -lmid[biqs_c0]) - (lmid[biqs_temp]*lmid[biqs_d2]);
lmid[biqs_outL] = lmid[biqs_temp];
lmid[biqs_outL] *= lmid[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
bass[biqs_outL] = inputSampleL * fabs(bass[biqs_level]);
bass[biqs_temp] = (bass[biqs_outL] * bass[biqs_a0]) + bass[biqs_aL1];
bass[biqs_aL1] = bass[biqs_aL2] - (bass[biqs_temp]*bass[biqs_b1]);
bass[biqs_aL2] = (bass[biqs_outL] * -bass[biqs_a0]) - (bass[biqs_temp]*bass[biqs_b2]);
bass[biqs_outL] = bass[biqs_temp];
if (bass[biqs_bit] != 0.0) {
double bitFactor = bass[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
bass[biqs_outL] *= bitFactor;
bass[biqs_outL] = floor(bass[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
bass[biqs_outL] /= bitFactor;
}
bass[biqs_temp] = (bass[biqs_outL] * bass[biqs_c0]) + bass[biqs_cL1];
bass[biqs_cL1] = bass[biqs_cL2] - (bass[biqs_temp]*bass[biqs_d1]);
bass[biqs_cL2] = (bass[biqs_outL] * -bass[biqs_c0]) - (bass[biqs_temp]*bass[biqs_d2]);
bass[biqs_outL] = bass[biqs_temp];
bass[biqs_outL] *= bass[biqs_level];
double parametricL = high[biqs_outL] + hmid[biqs_outL] + lmid[biqs_outL] + bass[biqs_outL];
//end Stacked Biquad With Reversed Neutron Flow L
//end HipCrush as four band
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
smoothEQL *= ((bezCThresh*0.5)+1.0);
parametricL *= ((bezCThresh*0.5)+1.0);
} //makeup gain
if (fabs(inputSampleL) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezMaxF = fmax(bezMaxF,fabs(inputSampleL));
if (bezCompF[bez_cycle] > 1.0) {
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage.
if (bezCompS[bez_cycle] > 1.0) {
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
//switch over to the EQed or HipCrushed sound and compress
inputSampleL = (smoothEQL * (1.0-crossFade)) + (parametricL * crossFade);
//apply filtration to what was just the unfiltered sound
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
//apply compression worked out using unfiltered sound
if (bezGate < 1.0 && gate > 0.0) inputSampleL *= bezGate;
//Dynamics2
const double temp = (double)nSampleFrames/inFramesToProcess;
const double hFreq = (hFreqA*temp)+(hFreqB*(1.0-temp));
if (hFreq > 0.0) {
double lowSample = inputSampleL;
for(int count = 0; count < 21; count++) {
iirHAngle[count] = (iirHAngle[count]*(1.0-hFreq))+((lowSample-iirHPosition[count])*hFreq);
lowSample = ((iirHPosition[count]+(iirHAngle[count]*hFreq))*(1.0-hFreq))+(lowSample*hFreq);
iirHPosition[count] = ((iirHPosition[count]+(iirHAngle[count]*hFreq))*(1.0-hFreq))+(lowSample*hFreq);
inputSampleL -= (lowSample * (1.0/21.0));
} //the highpass
hBypass = false;
} else {
if (!hBypass) {
hBypass = true;
for(int count = 0; count < 22; count++) {
iirHPosition[count] = 0.0;
iirHAngle[count] = 0.0;
}
} //blank out highpass if jut switched off
}
const double lFreq = (lFreqA*temp)+(lFreqB*(1.0-temp));
if (lFreq < 1.0) {
for(int count = 0; count < 13; count++) {
iirLAngle[count] = (iirLAngle[count]*(1.0-lFreq))+((inputSampleL-iirLPosition[count])*lFreq);
inputSampleL = ((iirLPosition[count]+(iirLAngle[count]*lFreq))*(1.0-lFreq))+(inputSampleL*lFreq);
iirLPosition[count] = ((iirLPosition[count]+(iirLAngle[count]*lFreq))*(1.0-lFreq))+(inputSampleL*lFreq);
} //the lowpass
lBypass = false;
} else {
if (!lBypass) {
lBypass = true;
for(int count = 0; count < 14; count++) {
iirLPosition[count] = 0.0;
iirLAngle[count] = 0.0;
}
} //blank out lowpass if just switched off
}
//Cabs2
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
inputSampleL *= gain;
//applies smoothed fader gain
//begin 32 bit floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1 @@
_ConsoleHPreEntry

View file

@ -0,0 +1,300 @@
/*
* File: ConsoleHPre.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHPreVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHPre_h__
#define __ConsoleHPre_h__
#pragma mark ____ConsoleHPre Parameters
// parameters
static const int kDefaultValue_ParamTRM = 1;
static const float kDefaultValue_ParamMOR = 0.0;
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamCRS = 0.0;
static const float kDefaultValue_ParamTRF = 0.5;
static const float kDefaultValue_ParamTRG = 0.0;
static const float kDefaultValue_ParamTRB = 0.5;
static const float kDefaultValue_ParamHMF = 0.5;
static const float kDefaultValue_ParamHMG = 0.0;
static const float kDefaultValue_ParamHMB = 0.5;
static const float kDefaultValue_ParamLMF = 0.5;
static const float kDefaultValue_ParamLMG = 0.0;
static const float kDefaultValue_ParamLMB = 0.5;
static const float kDefaultValue_ParamBSF = 0.5;
static const float kDefaultValue_ParamBSG = 0.0;
static const float kDefaultValue_ParamBSB = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamATK = 0.5;
static const float kDefaultValue_ParamRLS = 0.5;
static const float kDefaultValue_ParamGAT = 0.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterTRMName = CFSTR("Trim");
static CFStringRef kParameterMORName = CFSTR("More");
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterCRSName = CFSTR("CrossFd");
static CFStringRef kParameterTRFUnit = CFSTR("crush");
static CFStringRef kParameterTRFName = CFSTR("Tr Freq");
static CFStringRef kParameterTRGName = CFSTR("Treble");
static CFStringRef kParameterTRBName = CFSTR("TrCrush");
static CFStringRef kParameterHMFName = CFSTR("HM Freq");
static CFStringRef kParameterHMGName = CFSTR("HighMid");
static CFStringRef kParameterHMBName = CFSTR("HMCrush");
static CFStringRef kParameterLMFName = CFSTR("LM Freq");
static CFStringRef kParameterLMGName = CFSTR("LowMid");
static CFStringRef kParameterLMBName = CFSTR("LMCrush");
static CFStringRef kParameterBSFName = CFSTR("Bs Freq");
static CFStringRef kParameterBSGName = CFSTR("Bass");
static CFStringRef kParameterBSBName = CFSTR("BsCrush");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterATKName = CFSTR("Attack");
static CFStringRef kParameterRLSName = CFSTR("Release");
static CFStringRef kParameterGATName = CFSTR("Gate");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_FAD =24,
//Add your parameters here...
kNumberOfParameters=25
};
const int dscBuf = 256;
#pragma mark ____ConsoleHPre
class ConsoleHPre : public AUEffectBase
{
public:
ConsoleHPre(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHPre () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new ConsoleHPreKernel(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 kConsoleHPreVersion; }
protected:
class ConsoleHPreKernel : public AUKernelBase // most of the real work happens here
{
public:
ConsoleHPreKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double lowFastLIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2,
biqs_cL1, biqs_cL2,
biqs_outL, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
//Dynamics2
double iirHPosition[23];
double iirHAngle[23];
bool hBypass;
double iirLPosition[15];
double iirLAngle[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
//Discontapeity
double avg32L[33];
double avg16L[17];
double avg8L[9];
double avg4L[5];
double avg2L[3];
int avgPos;
double lastSlewL;
double lastSlewpleL;
//preTapeHack
double inTrimA;
double inTrimB;
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: ConsoleHPre.r
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHPreVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_ConsoleHPre 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ConsoleHPre~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_ConsoleHPre
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE ConsoleHPre_COMP_SUBTYPE
#define COMP_MANUF ConsoleHPre_COMP_MANF
#define VERSION kConsoleHPreVersion
#define NAME "Airwindows: ConsoleHPre"
#define DESCRIPTION "ConsoleHPre AU"
#define ENTRY_POINT "ConsoleHPreEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,131 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleHPre */;
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 = 784132118;
PBXWorkspaceStateSaveDate = 784132118;
};
perUserProjectItems = {
8B7D6CFB2EBCEAA2000B38FA /* PlistBookmark */ = 8B7D6CFB2EBCEAA2000B38FA /* PlistBookmark */;
8B7D6CFC2EBCEAA2000B38FA /* PBXBookmark */ = 8B7D6CFC2EBCEAA2000B38FA /* PBXBookmark */;
8B7D6CFD2EBCEAA2000B38FA /* PBXTextBookmark */ = 8B7D6CFD2EBCEAA2000B38FA /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B7D6CFB2EBCEAA2000B38FA /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
CFBundleName,
);
name = /Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/ConsoleHPre/Info.plist;
rLen = 0;
rLoc = 9223372036854775807;
};
8B7D6CFC2EBCEAA2000B38FA /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHPre.cpp */;
};
8B7D6CFD2EBCEAA2000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHPre.cpp */;
name = "ConsoleHPre.cpp: 779";
rLen = 0;
rLoc = 37534;
rType = 0;
vrLen = 502;
vrLoc = 38930;
};
8BA05A660720730100365D66 /* ConsoleHPre.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1092, 15588}}";
sepNavSelRange = "{37534, 0}";
sepNavVisRange = "{38930, 502}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BA05A690720730100365D66 /* ConsoleHPreVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2920, 0}";
sepNavVisRange = "{969, 2014}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BC6025B073B072D006C4272 /* ConsoleHPre.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 6300}}";
sepNavSelRange = "{8314, 0}";
sepNavVisRange = "{9159, 663}";
sepNavWindowFrame = "{{7, 42}, {912, 826}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* ConsoleHPre */ = {
activeExec = 0;
};
}

File diff suppressed because it is too large Load diff

View file

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

View file

@ -0,0 +1,58 @@
/*
* File: ConsoleHPreVersion.h
*
* Version: 1.0
*
* Created: 11/4/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 __ConsoleHPreVersion_h__
#define __ConsoleHPreVersion_h__
#ifdef DEBUG
#define kConsoleHPreVersion 0xFFFFFFFF
#else
#define kConsoleHPreVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define ConsoleHPre_COMP_MANF 'Dthr'
#define ConsoleHPre_COMP_SUBTYPE 'chpp'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

Binary file not shown.

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
<key>CFBundleName</key>
<string>${PROJECTNAMEASIDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>DthX</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
</plist>

View file

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

View file

@ -231,17 +231,15 @@ ComponentResult ChimeyDeluxe::Initialize()
void ChimeyDeluxe::ChimeyDeluxeKernel::Reset()
{
for(int x=0; x<17; x++) {
for (int w = 0; w < bez_total; w++) bezComp[w][x] = 0.0;
bezComp[bez_cycle][x] = 1.0;
for(int y=0; y<14; y++) {
angS[x][y] = 0.0;angA[x][y] = 0.0;
angS[x][y] = 0.0;
angA[x][y] = 0.0;
}
}
for(int y=0; y<14; y++) {
angG[y] = 0.0;
}
muComp = 1.0;
muSpd = 100.0;
for(int y=0; y<14; y++) angG[y] = 0.0;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
@ -263,85 +261,88 @@ void ChimeyDeluxe::ChimeyDeluxeKernel::Process( const Float32 *inSourceP,
double drive = 1.0;
double pad = 1.0;
angG[1] = GetParameter( kParam_A )+0.5;
angG[1] = (GetParameter( kParam_A )+1.5)*0.5;
if (pad > angG[1]) pad = angG[1];
if (drive < angG[1]) drive = angG[1];
angG[0] = (1.0+angG[1])*0.5; //if boost, boost half
if (angG[0] > angG[1]) angG[0] = angG[1];
angG[2] = GetParameter( kParam_B )+0.5;
angG[2] = (GetParameter( kParam_B )+1.5)*0.5;
if (pad > angG[2]) pad = angG[2];
if (drive < angG[2]) drive = angG[2];
angG[3] = GetParameter( kParam_C )+0.5;
angG[3] = (GetParameter( kParam_C )+1.5)*0.5;
if (pad > angG[3]) pad = angG[3];
if (drive < angG[3]) drive = angG[3];
angG[4] = GetParameter( kParam_D )+0.5;
angG[4] = (GetParameter( kParam_D )+1.5)*0.5;
if (pad > angG[4]) pad = angG[4];
if (drive < angG[4]) drive = angG[4];
angG[5] = GetParameter( kParam_E )+0.5;
angG[5] = (GetParameter( kParam_E )+1.5)*0.5;
if (pad > angG[5]) pad = angG[5];
if (drive < angG[5]) drive = angG[5];
angG[6] = GetParameter( kParam_F )+0.5;
angG[6] = (GetParameter( kParam_F )+1.5)*0.5;
if (pad > angG[6]) pad = angG[6];
if (drive < angG[6]) drive = angG[6];
angG[7] = GetParameter( kParam_G )+0.5;
angG[7] = (GetParameter( kParam_G )+1.5)*0.5;
if (pad > angG[7]) pad = angG[7];
if (drive < angG[7]) drive = angG[7];
angG[8] = GetParameter( kParam_H )+0.5;
angG[8] = (GetParameter( kParam_H )+1.5)*0.5;
if (pad > angG[8]) pad = angG[8];
if (drive < angG[8]) drive = angG[8];
angG[9] = GetParameter( kParam_I )+0.5;
angG[9] = (GetParameter( kParam_I )+1.5)*0.5;
if (pad > angG[9]) pad = angG[9];
if (drive < angG[9]) drive = angG[9];
angG[10] = GetParameter( kParam_J )+0.5;
angG[10] = (GetParameter( kParam_J )+1.5)*0.5;
if (pad > angG[10]) pad = angG[10];
if (drive < angG[10]) drive = angG[10];
angG[11] = (angG[10]+1.0)*0.5;
angG[12] = (angG[11]+1.0)*0.5;
double tune = 0.618+(overallscale*0.0055);
double threshold = 1.0-(drive*0.23);
double adjSpd = ((drive*120.0)+50.0)*overallscale;
angG[12] = angG[11] = angG[10];
if (drive > 1.0) drive = pow(drive,drive*2.0);
double tune = 0.618+(overallscale*0.0055);
double bezRez = (pad * drive * 0.0005)/overallscale;
int bezFreqFraction = (int)(1.0/bezRez);
double bezFreqTrim = (double)bezFreqFraction/(bezFreqFraction+1.0);
bezRez = 1.0 / bezFreqFraction;
bezFreqTrim = 1.0-(bezRez*bezFreqTrim);
while (nSampleFrames-- > 0) {
double inputSample = *sourceP;
if (fabs(inputSample)<1.18e-23) inputSample = fpd * 1.18e-17;
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
for (int x = 0; x < 16; x++) {
double fr = (0.92/overallscale)+(overallscale*0.01);
double band = inputSample; inputSample = 0.0;
double band = inputSampleL; inputSampleL = 0.0;
for (int y = 0; y < 12; y++) {
angA[x][y] = (angA[x][y]*(1.0-fr)) + ((band-angS[x][y])*fr);
double temp = band; band = ((angS[x][y]+(angA[x][y]*fr)) * (1.0-fr))+(band*fr);
angS[x][y] = ((angS[x][y]+(angA[x][y]*fr)) * (1.0-fr))+(band*fr);
inputSample += ((temp-band)*angG[y]);
inputSampleL += ((temp-band)*angG[y]);
fr *= tune;
}
inputSample += band;
inputSample *= threshold;
inputSample *= (muComp/threshold);
if (fabs(inputSample) > threshold)
{
muComp *= muSpd;
if (threshold/fabs(inputSample) < threshold) muComp += threshold*fabs(inputSample);
else muComp -= threshold/fabs(inputSample);
muComp /= muSpd;
} else {
muComp *= (muSpd*muSpd);
muComp += ((1.1+threshold)-fabs(inputSample));
muComp /= (muSpd*muSpd);
inputSampleL += band; //end of filter part
bezComp[bez_cycle][x] += bezRez;
bezComp[bez_SampL][x] += (fabs(inputSampleL) * bezRez);
if (bezComp[bez_cycle][x] > 1.0) {
bezComp[bez_cycle][x] = 0.0;
bezComp[bez_CL][x] = bezComp[bez_BL][x];
bezComp[bez_BL][x] = bezComp[bez_AL][x];
bezComp[bez_AL][x] = bezComp[bez_SampL][x];
bezComp[bez_SampL][x] = 0.0;
}
muComp = fmax(fmin(muComp,1.0),threshold);
inputSample *= (muComp*muComp);
muSpd = fmax(fmin(((muSpd*(muSpd-1.0))+(fabs(inputSample*adjSpd)))/muSpd,adjSpd*2.0),adjSpd);
double z = bezComp[bez_cycle][x]*bezFreqTrim;
double CBL = (bezComp[bez_CL][x]*(1.0-z))+(bezComp[bez_BL][x]*z);
double BAL = (bezComp[bez_BL][x]*(1.0-z))+(bezComp[bez_AL][x]*z);
double CBAL = (bezComp[bez_BL][x]+(CBL*(1.0-z))+(BAL*z));
CBAL = fmin(fmax(CBAL*drive*0.23,0.0),M_PI_2);
inputSampleL *= 1.0-sin(CBAL);
}
inputSample = sin(fmin(fmax(inputSample*pad,-M_PI_2),M_PI_2));
inputSampleL /= drive;
inputSampleL = fmin(fmax(inputSampleL*pad,-1.0),1.0); //let's do an output clip
//begin 32 bit floating point dither
int expon; frexpf((float)inputSample, &expon);
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSample;
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}

View file

@ -154,9 +154,18 @@ public:
double angS[18][15];
double angA[18][15];
double angG[15];
double muComp;
double muSpd;
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezComp[bez_total][18];
uint32_t fpd;
};

View file

@ -49,14 +49,14 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 776427414;
PBXWorkspaceStateSaveDate = 776427414;
PBXPerProjectTemplateStateSaveDate = 784153881;
PBXWorkspaceStateSaveDate = 784153881;
};
perUserProjectItems = {
8B33D58F2DF3AB1D0044A4FF /* PlistBookmark */ = 8B33D58F2DF3AB1D0044A4FF /* PlistBookmark */;
8B42CBD92E315A03001C0B57 /* PBXTextBookmark */ = 8B42CBD92E315A03001C0B57 /* PBXTextBookmark */;
8BB158F92E4759DF00D27777 /* PBXTextBookmark */ = 8BB158F92E4759DF00D27777 /* PBXTextBookmark */;
8BB158FA2E4759DF00D27777 /* PBXTextBookmark */ = 8BB158FA2E4759DF00D27777 /* PBXTextBookmark */;
8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */ = 8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */;
8B7D6E612EBD420A000B38FA /* PBXTextBookmark */ = 8B7D6E612EBD420A000B38FA /* PBXTextBookmark */;
8B7D6E622EBD420A000B38FA /* PBXTextBookmark */ = 8B7D6E622EBD420A000B38FA /* PBXTextBookmark */;
8BFD341B2E058DBA00CA61BB /* PBXTextBookmark */ = 8BFD341B2E058DBA00CA61BB /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
@ -75,58 +75,58 @@
rLen = 0;
rLoc = 9223372036854775808;
};
8B42CBD92E315A03001C0B57 /* PBXTextBookmark */ = {
8B7D6E1E2EBD3C70000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 299";
rLen = 0;
rLoc = 13653;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8B7D6E612EBD420A000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */;
name = "ChimeyDeluxe.h: 166";
name = "ChimeyDeluxe.h: 170";
rLen = 0;
rLoc = 6181;
rLoc = 6368;
rType = 0;
vrLen = 148;
vrLen = 45;
vrLoc = 3;
};
8B7D6E622EBD420A000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 298";
rLen = 0;
rLoc = 13653;
rType = 0;
vrLen = 47;
vrLoc = 0;
};
8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {920, 6696}}";
sepNavSelRange = "{13457, 64}";
sepNavVisRange = "{12723, 1520}";
sepNavWindowFrame = "{{755, 74}, {967, 804}}";
sepNavIntBoundsRect = "{{0, 0}, {948, 6390}}";
sepNavSelRange = "{13653, 0}";
sepNavVisRange = "{0, 47}";
sepNavWindowFrame = "{{1, 38}, {737, 837}}";
};
};
8BA05A690720730100365D66 /* ChimeyDeluxeVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{2738, 251}";
sepNavVisRange = "{1174, 1815}";
sepNavWindowFrame = "{{38, 48}, {967, 804}}";
};
};
8BB158F92E4759DF00D27777 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ChimeyDeluxe.cpp */;
name = "ChimeyDeluxe.cpp: 305";
rLen = 0;
rLoc = 13521;
rType = 0;
vrLen = 45;
vrLoc = 13609;
};
8BB158FA2E4759DF00D27777 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */;
name = "ChimeyDeluxe.h: 161";
rLen = 0;
rLoc = 6181;
rType = 0;
vrLen = 103;
vrLoc = 147;
};
8BC6025B073B072D006C4272 /* ChimeyDeluxe.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1029, 3006}}";
sepNavSelRange = "{6181, 0}";
sepNavVisRange = "{147, 103}";
sepNavWindowFrame = "{{783, 74}, {967, 804}}";
sepNavIntBoundsRect = "{{0, 0}, {948, 3258}}";
sepNavSelRange = "{6368, 0}";
sepNavVisRange = "{3, 45}";
sepNavWindowFrame = "{{9, 74}, {967, 804}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {

View file

@ -225,8 +225,8 @@
<array/>
<key>PerspectiveWidths</key>
<array>
<integer>841</integer>
<integer>841</integer>
<integer>737</integer>
<integer>737</integer>
</array>
<key>Perspectives</key>
<array>
@ -326,7 +326,7 @@
<real>288</real>
</array>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -342,7 +342,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274A1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
<string>ChimeyDeluxe.h</string>
<string>ChimeyDeluxe.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -350,17 +350,17 @@
<key>PBXProjectModuleGUID</key>
<string>8BD7274B1D46E5A5000176F0</string>
<key>PBXProjectModuleLabel</key>
<string>ChimeyDeluxe.h</string>
<string>ChimeyDeluxe.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8BB158FA2E4759DF00D27777</string>
<string>8B7D6E622EBD420A000B38FA</string>
<key>history</key>
<array>
<string>8B33D58F2DF3AB1D0044A4FF</string>
<string>8BFD341B2E058DBA00CA61BB</string>
<string>8BB158F92E4759DF00D27777</string>
<string>8B42CBD92E315A03001C0B57</string>
<string>8B7D6E612EBD420A000B38FA</string>
<string>8B7D6E1E2EBD3C70000B38FA</string>
</array>
</dict>
<key>SplitCount</key>
@ -374,18 +374,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {427, 47}}</string>
<string>{{0, 0}, {427, 95}}</string>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>47pt</string>
<string>95pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>270pt</string>
<string>222pt</string>
<key>Tabs</key>
<array>
<dict>
@ -399,9 +399,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {427, 243}}</string>
<string>{{10, 27}, {427, 195}}</string>
<key>RubberWindowFrame</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -455,7 +455,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {531, 352}}</string>
<string>{{10, 27}, {427, 261}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -483,11 +483,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8BB158FB2E4759DF00D27777</string>
<string>8B7D6E632EBD420A000B38FA</string>
<string>1CA23ED40692098700951B8B</string>
<string>8BB158FC2E4759DF00D27777</string>
<string>8B7D6E642EBD420A000B38FA</string>
<string>8BD7274A1D46E5A5000176F0</string>
<string>8BB158FD2E4759DF00D27777</string>
<string>8B7D6E652EBD420A000B38FA</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -660,7 +660,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>776427999.45691097</real>
<real>784155146.916085</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -680,7 +680,7 @@
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/ChimeyDeluxe/ChimeyDeluxe.xcodeproj</string>
</array>
<key>WindowString</key>
<string>726 439 737 363 0 0 1440 878 </string>
<string>21 216 737 363 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -0,0 +1,744 @@
/*
* File: ConsoleHBuss.cpp
*
* Version: 1.0
*
* Created: 11/4/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.
*
*/
/*=============================================================================
ConsoleHBuss.cpp
=============================================================================*/
#include "ConsoleHBuss.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, ConsoleHBuss)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ConsoleHBuss
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ConsoleHBuss::ConsoleHBuss(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_HIG, kDefaultValue_ParamHIG );
SetParameter(kParam_MID, kDefaultValue_ParamMID );
SetParameter(kParam_LOW, kDefaultValue_ParamLOW );
SetParameter(kParam_THR, kDefaultValue_ParamTHR );
SetParameter(kParam_LOP, kDefaultValue_ParamLOP );
SetParameter(kParam_HIP, kDefaultValue_ParamHIP );
SetParameter(kParam_PAN, kDefaultValue_ParamPAN );
SetParameter(kParam_FAD, kDefaultValue_ParamFAD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_HIG:
AUBase::FillInParameterName (outParameterInfo, kParameterHIGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterHIGUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIG;
break;
case kParam_MID:
AUBase::FillInParameterName (outParameterInfo, kParameterMIDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMID;
break;
case kParam_LOW:
AUBase::FillInParameterName (outParameterInfo, kParameterLOWName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOW;
break;
case kParam_THR:
AUBase::FillInParameterName (outParameterInfo, kParameterTHRName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTHRUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTHR;
break;
case kParam_LOP:
AUBase::FillInParameterName (outParameterInfo, kParameterLOPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterLOPUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOP;
break;
case kParam_HIP:
AUBase::FillInParameterName (outParameterInfo, kParameterHIPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIP;
break;
case kParam_PAN:
AUBase::FillInParameterName (outParameterInfo, kParameterPANName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamPAN;
break;
case kParam_FAD:
AUBase::FillInParameterName (outParameterInfo, kParameterFADName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamFAD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::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 ConsoleHBuss::SupportedNumChannels(const AUChannelInfo ** outInfo)
{
if (outInfo != NULL)
{
static AUChannelInfo info;
info.inChannels = 2;
info.outChannels = 2;
*outInfo = &info;
}
return 1;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// ConsoleHBuss::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____ConsoleHBussEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ConsoleHBussKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHBuss::Reset(AudioUnitScope inScope, AudioUnitElement inElement)
{
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
highFastRIIR = 0.0;
lowFastLIIR = 0.0;
lowFastRIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0;
//Dynamics2
for (int x = 0; x < hilp_total; x++) {
highpass[x] = 0.0;
lowpass[x] = 0.0;
}
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0; avg32R[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0; avg16R[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0; avg8R[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0; avg4R[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0; avg2R[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0; lastSlewR = 0.0;
lastSlewpleL = 0.0; lastSlewpleR = 0.0;
//preTapeHack
panA = 0.5; panB = 0.5;
inTrimA = 0.5; inTrimB = 0.5;
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX;
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX;
return noErr;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHBuss::ProcessBufferLists
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus ConsoleHBuss::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();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double trebleGain = (GetParameter( kParam_HIG )-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (GetParameter( kParam_MID )-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (GetParameter( kParam_LOW )-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/GetSampleRate());
double omega = 2.0*M_PI*(4000.0/GetSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/GetSampleRate());
omega = 2.0*M_PI*(200.0/GetSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
//SmoothEQ3
double bezCThresh = pow(1.0-GetParameter( kParam_THR ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_THR ), 12.360679774997898) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_THR ),10.0) / overallscale;
sloRez = fmin(fmax(sloRez,0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.00001),1.0);
//Dynamics2
highpass[hilp_freq] = ((pow(GetParameter( kParam_HIP ),3)*24000.0)+10.0)/GetSampleRate();
if (highpass[hilp_freq] > 0.495) highpass[hilp_freq] = 0.495;
bool highpassEngage = true; if (GetParameter( kParam_HIP ) == 0.0) highpassEngage = false;
lowpass[hilp_freq] = ((pow(GetParameter( kParam_LOP ),3)*24000.0)+10.0)/GetSampleRate();
if (lowpass[hilp_freq] > 0.495) lowpass[hilp_freq] = 0.495;
bool lowpassEngage = true; if (GetParameter( kParam_LOP ) == 0.0) lowpassEngage = false;
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
//previous run through the buffer is still in the filter, so we move it
//to the A section and now it's the new starting point.
//On the buss, highpass and lowpass are isolators meant to be moved,
//so they are interpolated where the channels are not
biqK = tan(M_PI * highpass[hilp_freq]); //highpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
highpass[hilp_aB0] = norm;
highpass[hilp_aB1] = -2.0 * highpass[hilp_aB0];
highpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
highpass[hilp_cB0] = norm;
highpass[hilp_cB1] = -2.0 * highpass[hilp_cB0];
highpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
highpass[hilp_eB0] = norm;
highpass[hilp_eB1] = -2.0 * highpass[hilp_eB0];
highpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
highpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
biqK = tan(M_PI * lowpass[hilp_freq]); //lowpass
norm = 1.0 / (1.0 + biqK / 1.93185165 + biqK * biqK);
lowpass[hilp_aB0] = biqK * biqK * norm;
lowpass[hilp_aB1] = 2.0 * lowpass[hilp_aB0];
lowpass[hilp_bB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_bB2] = (1.0 - biqK / 1.93185165 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.70710678 + biqK * biqK);
lowpass[hilp_cB0] = biqK * biqK * norm;
lowpass[hilp_cB1] = 2.0 * lowpass[hilp_cB0];
lowpass[hilp_dB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_dB2] = (1.0 - biqK / 0.70710678 + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / 0.51763809 + biqK * biqK);
lowpass[hilp_eB0] = biqK * biqK * norm;
lowpass[hilp_eB1] = 2.0 * lowpass[hilp_eB0];
lowpass[hilp_fB1] = 2.0 * (biqK * biqK - 1.0) * norm;
lowpass[hilp_fB2] = (1.0 - biqK / 0.51763809 + biqK * biqK) * norm;
if (highpass[hilp_aA0] == 0.0) { // if we have just started, start directly with raw info
highpass[hilp_aA0] = highpass[hilp_aB0];
highpass[hilp_aA1] = highpass[hilp_aB1];
highpass[hilp_bA1] = highpass[hilp_bB1];
highpass[hilp_bA2] = highpass[hilp_bB2];
highpass[hilp_cA0] = highpass[hilp_cB0];
highpass[hilp_cA1] = highpass[hilp_cB1];
highpass[hilp_dA1] = highpass[hilp_dB1];
highpass[hilp_dA2] = highpass[hilp_dB2];
highpass[hilp_eA0] = highpass[hilp_eB0];
highpass[hilp_eA1] = highpass[hilp_eB1];
highpass[hilp_fA1] = highpass[hilp_fB1];
highpass[hilp_fA2] = highpass[hilp_fB2];
lowpass[hilp_aA0] = lowpass[hilp_aB0];
lowpass[hilp_aA1] = lowpass[hilp_aB1];
lowpass[hilp_bA1] = lowpass[hilp_bB1];
lowpass[hilp_bA2] = lowpass[hilp_bB2];
lowpass[hilp_cA0] = lowpass[hilp_cB0];
lowpass[hilp_cA1] = lowpass[hilp_cB1];
lowpass[hilp_dA1] = lowpass[hilp_dB1];
lowpass[hilp_dA2] = lowpass[hilp_dB2];
lowpass[hilp_eA0] = lowpass[hilp_eB0];
lowpass[hilp_eA1] = lowpass[hilp_eB1];
lowpass[hilp_fA1] = lowpass[hilp_fB1];
lowpass[hilp_fA2] = lowpass[hilp_fB2];
}
panA = panB; panB = GetParameter( kParam_PAN )*1.57079633;
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
//Console
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;
const double temp = (double)nSampleFrames/inFramesToProcess;
highpass[hilp_a0] = (highpass[hilp_aA0]*temp)+(highpass[hilp_aB0]*(1.0-temp));
highpass[hilp_a1] = (highpass[hilp_aA1]*temp)+(highpass[hilp_aB1]*(1.0-temp));
highpass[hilp_b1] = (highpass[hilp_bA1]*temp)+(highpass[hilp_bB1]*(1.0-temp));
highpass[hilp_b2] = (highpass[hilp_bA2]*temp)+(highpass[hilp_bB2]*(1.0-temp));
highpass[hilp_c0] = (highpass[hilp_cA0]*temp)+(highpass[hilp_cB0]*(1.0-temp));
highpass[hilp_c1] = (highpass[hilp_cA1]*temp)+(highpass[hilp_cB1]*(1.0-temp));
highpass[hilp_d1] = (highpass[hilp_dA1]*temp)+(highpass[hilp_dB1]*(1.0-temp));
highpass[hilp_d2] = (highpass[hilp_dA2]*temp)+(highpass[hilp_dB2]*(1.0-temp));
highpass[hilp_e0] = (highpass[hilp_eA0]*temp)+(highpass[hilp_eB0]*(1.0-temp));
highpass[hilp_e1] = (highpass[hilp_eA1]*temp)+(highpass[hilp_eB1]*(1.0-temp));
highpass[hilp_f1] = (highpass[hilp_fA1]*temp)+(highpass[hilp_fB1]*(1.0-temp));
highpass[hilp_f2] = (highpass[hilp_fA2]*temp)+(highpass[hilp_fB2]*(1.0-temp));
lowpass[hilp_a0] = (lowpass[hilp_aA0]*temp)+(lowpass[hilp_aB0]*(1.0-temp));
lowpass[hilp_a1] = (lowpass[hilp_aA1]*temp)+(lowpass[hilp_aB1]*(1.0-temp));
lowpass[hilp_b1] = (lowpass[hilp_bA1]*temp)+(lowpass[hilp_bB1]*(1.0-temp));
lowpass[hilp_b2] = (lowpass[hilp_bA2]*temp)+(lowpass[hilp_bB2]*(1.0-temp));
lowpass[hilp_c0] = (lowpass[hilp_cA0]*temp)+(lowpass[hilp_cB0]*(1.0-temp));
lowpass[hilp_c1] = (lowpass[hilp_cA1]*temp)+(lowpass[hilp_cB1]*(1.0-temp));
lowpass[hilp_d1] = (lowpass[hilp_dA1]*temp)+(lowpass[hilp_dB1]*(1.0-temp));
lowpass[hilp_d2] = (lowpass[hilp_dA2]*temp)+(lowpass[hilp_dB2]*(1.0-temp));
lowpass[hilp_e0] = (lowpass[hilp_eA0]*temp)+(lowpass[hilp_eB0]*(1.0-temp));
lowpass[hilp_e1] = (lowpass[hilp_eA1]*temp)+(lowpass[hilp_eB1]*(1.0-temp));
lowpass[hilp_f1] = (lowpass[hilp_fA1]*temp)+(lowpass[hilp_fB1]*(1.0-temp));
lowpass[hilp_f2] = (lowpass[hilp_fA2]*temp)+(lowpass[hilp_fB2]*(1.0-temp));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_a0])+highpass[hilp_aL1];
highpass[hilp_aL1] = (inputSampleL*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aL2];
highpass[hilp_aL2] = (inputSampleL*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_a0])+highpass[hilp_aR1];
highpass[hilp_aR1] = (inputSampleR*highpass[hilp_a1])-(highpass[hilp_temp]*highpass[hilp_b1])+highpass[hilp_aR2];
highpass[hilp_aR2] = (inputSampleR*highpass[hilp_a0])-(highpass[hilp_temp]*highpass[hilp_b2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_aR1] = highpass[hilp_aR2] = highpass[hilp_aL1] = highpass[hilp_aL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_a0])+lowpass[hilp_aL1];
lowpass[hilp_aL1] = (inputSampleL*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aL2];
lowpass[hilp_aL2] = (inputSampleL*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_a0])+lowpass[hilp_aR1];
lowpass[hilp_aR1] = (inputSampleR*lowpass[hilp_a1])-(lowpass[hilp_temp]*lowpass[hilp_b1])+lowpass[hilp_aR2];
lowpass[hilp_aR2] = (inputSampleR*lowpass[hilp_a0])-(lowpass[hilp_temp]*lowpass[hilp_b2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_aR1] = lowpass[hilp_aR2] = lowpass[hilp_aL1] = lowpass[hilp_aL2] = 0.0;
//first Highpass/Lowpass blocks aliasing before the nonlinearity of ConsoleXBuss and Parametric
if (inputSampleL > 1.0) inputSampleL = 1.0;
else if (inputSampleL > 0.0) inputSampleL = -expm1((log1p(-inputSampleL) * 0.6180339887498949));
if (inputSampleL < -1.0) inputSampleL = -1.0;
else if (inputSampleL < 0.0) inputSampleL = expm1((log1p(inputSampleL) * 0.6180339887498949));
if (inputSampleR > 1.0) inputSampleR = 1.0;
else if (inputSampleR > 0.0) inputSampleR = -expm1((log1p(-inputSampleR) * 0.6180339887498949));
if (inputSampleR < -1.0) inputSampleR = -1.0;
else if (inputSampleR < 0.0) inputSampleR = expm1((log1p(inputSampleR) * 0.6180339887498949));
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_c0])+highpass[hilp_cL1];
highpass[hilp_cL1] = (inputSampleL*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cL2];
highpass[hilp_cL2] = (inputSampleL*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_c0])+highpass[hilp_cR1];
highpass[hilp_cR1] = (inputSampleR*highpass[hilp_c1])-(highpass[hilp_temp]*highpass[hilp_d1])+highpass[hilp_cR2];
highpass[hilp_cR2] = (inputSampleR*highpass[hilp_c0])-(highpass[hilp_temp]*highpass[hilp_d2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_cR1] = highpass[hilp_cR2] = highpass[hilp_cL1] = highpass[hilp_cL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_c0])+lowpass[hilp_cL1];
lowpass[hilp_cL1] = (inputSampleL*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cL2];
lowpass[hilp_cL2] = (inputSampleL*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_c0])+lowpass[hilp_cR1];
lowpass[hilp_cR1] = (inputSampleR*lowpass[hilp_c1])-(lowpass[hilp_temp]*lowpass[hilp_d1])+lowpass[hilp_cR2];
lowpass[hilp_cR2] = (inputSampleR*lowpass[hilp_c0])-(lowpass[hilp_temp]*lowpass[hilp_d2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_cR1] = lowpass[hilp_cR2] = lowpass[hilp_cL1] = lowpass[hilp_cL2] = 0.0;
//another stage of Highpass/Lowpass before bringing in the parametric bands
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
inputSampleL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
double trebleFastR = inputSampleR;
outSample = (trebleFastR * highFast[biq_a0]) + highFast[biq_sR1];
highFast[biq_sR1] = (trebleFastR * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sR2];
highFast[biq_sR2] = (trebleFastR * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastR = outSample; trebleFastR -= midFastR;
outSample = (midFastR * lowFast[biq_a0]) + lowFast[biq_sR1];
lowFast[biq_sR1] = (midFastR * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sR2];
lowFast[biq_sR2] = (midFastR * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastR = outSample; midFastR -= bassFastR;
trebleFastR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastRIIR = (highFastRIIR*highCoef) + (trebleFastR*(1.0-highCoef));
midFastR = highFastRIIR; trebleFastR -= midFastR;
lowFastRIIR = (lowFastRIIR*lowCoef) + (midFastR*(1.0-lowCoef));
bassFastR = lowFastRIIR; midFastR -= bassFastR;
inputSampleR = (bassFastR*bassGain) + (midFastR*midGain) + (trebleFastR*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
inputSampleR *= ((bezCThresh*0.5)+1.0);
}
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezCompF[bez_SampR] += (fabs(inputSampleR) * bezRez);
bezMaxF = fmax(bezMaxF,fmax(fabs(inputSampleL),fabs(inputSampleR)));
if (bezCompF[bez_cycle] > 1.0) {
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezCompF[bez_CR] = bezCompF[bez_BR];
bezCompF[bez_BR] = bezCompF[bez_AR];
bezCompF[bez_AR] = bezCompF[bez_SampR];
bezCompF[bez_SampR] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage
bezCompS[bez_SampR] += (fabs(inputSampleR) * sloRez); //note: SampR is a control voltage
if (bezCompS[bez_cycle] > 1.0) {
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
bezCompS[bez_CR] = bezCompS[bez_BR];
bezCompS[bez_BR] = bezCompS[bez_AR];
bezCompS[bez_AR] = bezCompS[bez_SampR];
bezCompS[bez_SampR] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
double CBFR = (bezCompF[bez_CR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BR]*bezCompF[bez_cycle]);
double BAFR = (bezCompF[bez_BR]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AR]*bezCompF[bez_cycle]);
double CBAFR = (bezCompF[bez_BR]+(CBFR*(1.0-bezCompF[bez_cycle]))+(BAFR*bezCompF[bez_cycle]))*0.5;
double CBSR = (bezCompS[bez_CR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BR]*bezCompS[bez_cycle]);
double BASR = (bezCompS[bez_BR]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AR]*bezCompS[bez_cycle]);
double CBASR = (bezCompS[bez_BR]+(CBSR*(1.0-bezCompS[bez_cycle]))+(BASR*bezCompS[bez_cycle]))*0.5;
CBAMax = fmax(CBASR,CBAFR); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
CBAFade = ((CBASR*-CBAMax)+(CBAFR*CBAMax)+1.0)*0.5;
if (bezCThresh > 0.0) inputSampleR *= 1.0-(fmin(((CBASR*(1.0-CBAFade))+(CBAFR*CBAFade))*bezCThresh,1.0));
//Dynamics2
if (highpassEngage) { //distributed Highpass
highpass[hilp_temp] = (inputSampleL*highpass[hilp_e0])+highpass[hilp_eL1];
highpass[hilp_eL1] = (inputSampleL*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eL2];
highpass[hilp_eL2] = (inputSampleL*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleL = highpass[hilp_temp];
highpass[hilp_temp] = (inputSampleR*highpass[hilp_e0])+highpass[hilp_eR1];
highpass[hilp_eR1] = (inputSampleR*highpass[hilp_e1])-(highpass[hilp_temp]*highpass[hilp_f1])+highpass[hilp_eR2];
highpass[hilp_eR2] = (inputSampleR*highpass[hilp_e0])-(highpass[hilp_temp]*highpass[hilp_f2]); inputSampleR = highpass[hilp_temp];
} else highpass[hilp_eR1] = highpass[hilp_eR2] = highpass[hilp_eL1] = highpass[hilp_eL2] = 0.0;
if (lowpassEngage) { //distributed Lowpass
lowpass[hilp_temp] = (inputSampleL*lowpass[hilp_e0])+lowpass[hilp_eL1];
lowpass[hilp_eL1] = (inputSampleL*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eL2];
lowpass[hilp_eL2] = (inputSampleL*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleL = lowpass[hilp_temp];
lowpass[hilp_temp] = (inputSampleR*lowpass[hilp_e0])+lowpass[hilp_eR1];
lowpass[hilp_eR1] = (inputSampleR*lowpass[hilp_e1])-(lowpass[hilp_temp]*lowpass[hilp_f1])+lowpass[hilp_eR2];
lowpass[hilp_eR2] = (inputSampleR*lowpass[hilp_e0])-(lowpass[hilp_temp]*lowpass[hilp_f2]); inputSampleR = lowpass[hilp_temp];
} else lowpass[hilp_eR1] = lowpass[hilp_eR2] = lowpass[hilp_eL1] = lowpass[hilp_eL2] = 0.0;
//final Highpass/Lowpass continues to address aliasing
//final stacked biquad section is the softest Q for smoothness
double gainR = (panA*temp)+(panB*(1.0-temp));
double gainL = 1.57079633-gainR;
gainR = sin(gainR); gainL = sin(gainL);
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 2.0;
inputSampleL = inputSampleL * gainL * gain;
inputSampleR = inputSampleR * gainR * gain;
//applies pan section, and smoothed fader gain
double darkSampleL = inputSampleL;
double darkSampleR = inputSampleR;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL; avg32R[avgPos] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x]; darkSampleR += avg32R[x];}
darkSampleL /= 32.0; darkSampleR /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL; avg16R[avgPos%16] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x]; darkSampleR += avg16R[x];}
darkSampleL /= 16.0; darkSampleR /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL; avg8R[avgPos%8] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x]; darkSampleR += avg8R[x];}
darkSampleL /= 8.0; darkSampleR /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL; avg4R[avgPos%4] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x]; darkSampleR += avg4R[x];}
darkSampleL /= 4.0; darkSampleR /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL; avg2R[avgPos%2] = darkSampleR;
darkSampleL = 0.0; darkSampleR = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x]; darkSampleR += avg2R[x];}
darkSampleL /= 2.0; darkSampleR /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223);
lastSlewR += fabs(lastSlewpleR-inputSampleR); lastSlewpleR = inputSampleR;
double avgSlewR = fmin(lastSlewR,1.0);
lastSlewR = fmax(lastSlewR*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
inputSampleR = (inputSampleR*(1.0-avgSlewR)) + (darkSampleR*avgSlewR);
//begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleL *= 0.92;
//end TapeHack section
//begin TapeHack section
inputSampleR = fmax(fmin(inputSampleR,2.305929007734908),-2.305929007734908);
addtwo = inputSampleR * inputSampleR;
empower = inputSampleR * addtwo; // inputSampleR to the third power
inputSampleR -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleR += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleR -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleR += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleR -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
inputSampleR *= 0.92;
//end TapeHack section
//begin 32 bit stereo floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
frexpf((float)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit stereo floating point dither
*outputL = inputSampleL;
*outputR = inputSampleR;
//direct stereo out
inputL += 1;
inputR += 1;
outputL += 1;
outputR += 1;
}
return noErr;
}

View file

@ -0,0 +1,2 @@
_ConsoleHBussEntry
_ConsoleHBussFactory

View file

@ -0,0 +1,226 @@
/*
* File: ConsoleHBuss.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHBussVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHBuss_h__
#define __ConsoleHBuss_h__
#pragma mark ____ConsoleHBuss Parameters
// parameters
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamPAN = 0.5;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterPANName = CFSTR("Pan");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_HIG =0,
kParam_MID =1,
kParam_LOW =2,
kParam_THR =3,
kParam_LOP =4,
kParam_HIP =5,
kParam_PAN =6,
kParam_FAD =7,
//Add your parameters here...
kNumberOfParameters=8
};
#pragma mark ____ConsoleHBuss
class ConsoleHBuss : public AUEffectBase
{
public:
ConsoleHBuss(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHBuss () { 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 kConsoleHBussVersion; }
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
//Dynamics2
enum {
hilp_freq, hilp_temp,
hilp_a0, hilp_aA0, hilp_aB0, hilp_a1, hilp_aA1, hilp_aB1, hilp_b1, hilp_bA1, hilp_bB1, hilp_b2, hilp_bA2, hilp_bB2,
hilp_c0, hilp_cA0, hilp_cB0, hilp_c1, hilp_cA1, hilp_cB1, hilp_d1, hilp_dA1, hilp_dB1, hilp_d2, hilp_dA2, hilp_dB2,
hilp_e0, hilp_eA0, hilp_eB0, hilp_e1, hilp_eA1, hilp_eB1, hilp_f1, hilp_fA1, hilp_fB1, hilp_f2, hilp_fA2, hilp_fB2,
hilp_aL1, hilp_aL2, hilp_aR1, hilp_aR2,
hilp_cL1, hilp_cL2, hilp_cR1, hilp_cR2,
hilp_eL1, hilp_eL2, hilp_eR1, hilp_eR2,
hilp_total
};
double highpass[hilp_total];
double lowpass[hilp_total];
double panA;
double panB;
double inTrimA;
double inTrimB;
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: ConsoleHBuss.r
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHBussVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_ConsoleHBuss 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ConsoleHBuss~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_ConsoleHBuss
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE ConsoleHBuss_COMP_SUBTYPE
#define COMP_MANUF ConsoleHBuss_COMP_MANF
#define VERSION kConsoleHBussVersion
#define NAME "Airwindows: ConsoleHBuss"
#define DESCRIPTION "ConsoleHBuss AU"
#define ENTRY_POINT "ConsoleHBussEntry"
#include "AUResources.r"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,136 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */;
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 = 784133817;
PBXWorkspaceStateSaveDate = 784133817;
};
perUserProjectItems = {
8B7D6D372EBCF553000B38FA /* PBXTextBookmark */ = 8B7D6D372EBCF553000B38FA /* PBXTextBookmark */;
8B7D6D382EBCF553000B38FA /* PBXBookmark */ = 8B7D6D382EBCF553000B38FA /* PBXBookmark */;
8B7D6D392EBCF553000B38FA /* PBXTextBookmark */ = 8B7D6D392EBCF553000B38FA /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B7D6D372EBCF553000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ConsoleHBussVersion.h */;
name = "ConsoleHBussVersion.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 37;
vrLoc = 0;
};
8B7D6D382EBCF553000B38FA /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHBuss.cpp */;
};
8B7D6D392EBCF553000B38FA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleHBuss.cpp */;
name = "ConsoleHBuss.cpp: 523";
rLen = 0;
rLoc = 25931;
rType = 0;
vrLen = 64;
vrLoc = 33450;
};
8BA05A660720730100365D66 /* ConsoleHBuss.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {858, 13752}}";
sepNavSelRange = "{25931, 0}";
sepNavVisRange = "{33450, 64}";
sepNavWindowFrame = "{{22, 52}, {912, 826}}";
};
};
8BA05A690720730100365D66 /* ConsoleHBussVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{1072, 1918}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* ConsoleHBuss.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1146, 4068}}";
sepNavSelRange = "{6440, 589}";
sepNavVisRange = "{5857, 1011}";
sepNavWindowFrame = "{{7, 35}, {912, 826}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */ = {
activeExec = 0;
};
}

View file

@ -0,0 +1,965 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
8BA05A6B0720730100365D66 /* ConsoleHBuss.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* ConsoleHBuss.cpp */; };
8BA05A6E0720730100365D66 /* ConsoleHBussVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* ConsoleHBussVersion.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 /* ConsoleHBuss.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* ConsoleHBuss.h */; };
8BF193332EBE710E006A27E0 /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192AB2EBE710E006A27E0 /* CAExtAudioFile.h */; };
8BF193342EBE710E006A27E0 /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192AC2EBE710E006A27E0 /* CACFMachPort.h */; };
8BF193352EBE710E006A27E0 /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192AD2EBE710E006A27E0 /* CABool.h */; };
8BF193362EBE710E006A27E0 /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192AE2EBE710E006A27E0 /* CAComponent.cpp */; };
8BF193372EBE710E006A27E0 /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192AF2EBE710E006A27E0 /* CADebugger.h */; };
8BF193382EBE710E006A27E0 /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192B02EBE710E006A27E0 /* CACFNumber.cpp */; };
8BF193392EBE710E006A27E0 /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B12EBE710E006A27E0 /* CAGuard.h */; };
8BF1933A2EBE710E006A27E0 /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B22EBE710E006A27E0 /* CAAtomic.h */; };
8BF1933B2EBE710E006A27E0 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B32EBE710E006A27E0 /* CAStreamBasicDescription.h */; };
8BF1933C2EBE710E006A27E0 /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B42EBE710E006A27E0 /* CACFObject.h */; };
8BF1933D2EBE710E006A27E0 /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B52EBE710E006A27E0 /* CAStreamRangedDescription.h */; };
8BF1933E2EBE710E006A27E0 /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B62EBE710E006A27E0 /* CATokenMap.h */; };
8BF1933F2EBE710E006A27E0 /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B72EBE710E006A27E0 /* CAComponent.h */; };
8BF193402EBE710E006A27E0 /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B82EBE710E006A27E0 /* CAAudioBufferList.h */; };
8BF193412EBE710E006A27E0 /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192B92EBE710E006A27E0 /* CAAudioUnit.h */; };
8BF193422EBE710E006A27E0 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192BA2EBE710E006A27E0 /* CAAUParameter.h */; };
8BF193432EBE710E006A27E0 /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192BB2EBE710E006A27E0 /* CAException.h */; };
8BF193442EBE710E006A27E0 /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192BC2EBE710E006A27E0 /* CAAUProcessor.cpp */; };
8BF193452EBE710E006A27E0 /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192BD2EBE710E006A27E0 /* CAAUProcessor.h */; };
8BF193462EBE710E006A27E0 /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192BE2EBE710E006A27E0 /* CAProcess.h */; };
8BF193472EBE710E006A27E0 /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192BF2EBE710E006A27E0 /* CACFDictionary.h */; };
8BF193482EBE710E006A27E0 /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192C02EBE710E006A27E0 /* CAPThread.h */; };
8BF193492EBE710E006A27E0 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192C12EBE710E006A27E0 /* CAAUParameter.cpp */; };
8BF1934A2EBE710E006A27E0 /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192C22EBE710E006A27E0 /* CAAudioTimeStamp.h */; };
8BF1934B2EBE710E006A27E0 /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192C32EBE710E006A27E0 /* CAFilePathUtils.cpp */; };
8BF1934C2EBE710E006A27E0 /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192C42EBE710E006A27E0 /* CAAudioValueRange.h */; };
8BF1934D2EBE710E006A27E0 /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192C52EBE710E006A27E0 /* CAVectorUnitTypes.h */; };
8BF1934E2EBE710E006A27E0 /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192C62EBE710E006A27E0 /* CAAudioChannelLayoutObject.cpp */; };
8BF1934F2EBE710E006A27E0 /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192C72EBE710E006A27E0 /* CAGuard.cpp */; };
8BF193502EBE710E006A27E0 /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192C82EBE710E006A27E0 /* CACFNumber.h */; };
8BF193512EBE710E006A27E0 /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192C92EBE710E006A27E0 /* CACFDistributedNotification.cpp */; };
8BF193522EBE710E006A27E0 /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192CA2EBE710E006A27E0 /* CACFString.h */; };
8BF193532EBE710E006A27E0 /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192CB2EBE710E006A27E0 /* CAAUMIDIMapManager.cpp */; };
8BF193542EBE710E006A27E0 /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192CC2EBE710E006A27E0 /* CAComponentDescription.cpp */; };
8BF193552EBE710E006A27E0 /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192CD2EBE710E006A27E0 /* CAHostTimeBase.h */; };
8BF193562EBE710E006A27E0 /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192CE2EBE710E006A27E0 /* CADebugMacros.cpp */; };
8BF193572EBE710E006A27E0 /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192CF2EBE710E006A27E0 /* CAAudioFileFormats.h */; };
8BF193582EBE710E006A27E0 /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D02EBE710E006A27E0 /* CAAUMIDIMapManager.h */; };
8BF193592EBE710E006A27E0 /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192D12EBE710E006A27E0 /* CACFDictionary.cpp */; };
8BF1935A2EBE710E006A27E0 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D22EBE710E006A27E0 /* CAMutex.h */; };
8BF1935B2EBE710E006A27E0 /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192D32EBE710E006A27E0 /* CACFString.cpp */; };
8BF1935C2EBE710E006A27E0 /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D42EBE710E006A27E0 /* CASettingsStorage.h */; };
8BF1935D2EBE710E006A27E0 /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D52EBE710E006A27E0 /* CADebugPrintf.h */; };
8BF1935E2EBE710E006A27E0 /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192D62EBE710E006A27E0 /* CAXException.cpp */; };
8BF1935F2EBE710E006A27E0 /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D72EBE710E006A27E0 /* CAAUMIDIMap.h */; };
8BF193602EBE710E006A27E0 /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D82EBE710E006A27E0 /* AUParamInfo.h */; };
8BF193612EBE710E006A27E0 /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192D92EBE710E006A27E0 /* CABitOperations.h */; };
8BF193622EBE710E006A27E0 /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192DA2EBE710E006A27E0 /* CACFPreferences.cpp */; };
8BF193632EBE710E006A27E0 /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192DB2EBE710E006A27E0 /* CABundleLocker.h */; };
8BF193642EBE710E006A27E0 /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192DC2EBE710E006A27E0 /* CAPropertyAddress.h */; };
8BF193652EBE710E006A27E0 /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192DD2EBE710E006A27E0 /* CAXException.h */; };
8BF193662EBE710E006A27E0 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192DE2EBE710E006A27E0 /* CAAudioChannelLayout.cpp */; };
8BF193672EBE710E006A27E0 /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192DF2EBE710E006A27E0 /* CAThreadSafeList.h */; };
8BF193682EBE710E006A27E0 /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192E02EBE710E006A27E0 /* CAAudioUnitOutputCapturer.h */; };
8BF193692EBE710E006A27E0 /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192E12EBE710E006A27E0 /* AUParamInfo.cpp */; };
8BF1936A2EBE710E006A27E0 /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192E22EBE710E006A27E0 /* CASharedLibrary.cpp */; };
8BF1936B2EBE710E006A27E0 /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192E32EBE710E006A27E0 /* CAAUMIDIMap.cpp */; };
8BF1936C2EBE710E006A27E0 /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192E42EBE710E006A27E0 /* CALogMacros.h */; };
8BF1936D2EBE710E006A27E0 /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192E52EBE710E006A27E0 /* CACFMessagePort.cpp */; };
8BF1936E2EBE710E006A27E0 /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192E62EBE710E006A27E0 /* CARingBuffer.h */; };
8BF1936F2EBE710E006A27E0 /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192E72EBE710E006A27E0 /* AUOutputBL.cpp */; };
8BF193702EBE710E006A27E0 /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192E82EBE710E006A27E0 /* CABufferList.h */; };
8BF193712EBE710E006A27E0 /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192E92EBE710E006A27E0 /* CASharedLibrary.h */; };
8BF193722EBE710E006A27E0 /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192EA2EBE710E006A27E0 /* CACFData.h */; };
8BF193732EBE710E006A27E0 /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192EB2EBE710E006A27E0 /* CAStreamRangedDescription.cpp */; };
8BF193742EBE710E006A27E0 /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192EC2EBE710E006A27E0 /* CAPThread.cpp */; };
8BF193752EBE710E006A27E0 /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192ED2EBE710E006A27E0 /* CAAutoDisposer.h */; };
8BF193762EBE710E006A27E0 /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192EE2EBE710E006A27E0 /* CACFPreferences.h */; };
8BF193772EBE710E006A27E0 /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192EF2EBE710E006A27E0 /* CAVectorUnit.cpp */; };
8BF193782EBE710E006A27E0 /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F02EBE710E006A27E0 /* CAComponentDescription.h */; };
8BF193792EBE710E006A27E0 /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F12EBE710E006A27E0 /* CADebugMacros.h */; };
8BF1937A2EBE710E006A27E0 /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F22EBE710E006A27E0 /* AUOutputBL.h */; };
8BF1937B2EBE710E006A27E0 /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192F32EBE710E006A27E0 /* CADebugPrintf.cpp */; };
8BF1937C2EBE710E006A27E0 /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192F42EBE710E006A27E0 /* CARingBuffer.cpp */; };
8BF1937D2EBE710E006A27E0 /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F52EBE710E006A27E0 /* CACFPlugIn.h */; };
8BF1937E2EBE710E006A27E0 /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192F62EBE710E006A27E0 /* CASettingsStorage.cpp */; };
8BF1937F2EBE710E006A27E0 /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F72EBE710E006A27E0 /* CAMixMap.h */; };
8BF193802EBE710E006A27E0 /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F82EBE710E006A27E0 /* CACFDistributedNotification.h */; };
8BF193812EBE710E006A27E0 /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192F92EBE710E006A27E0 /* CAFilePathUtils.h */; };
8BF193822EBE710E006A27E0 /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192FA2EBE710E006A27E0 /* CATink.h */; };
8BF193832EBE710E006A27E0 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192FB2EBE710E006A27E0 /* CAStreamBasicDescription.cpp */; };
8BF193842EBE710E006A27E0 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF192FC2EBE710E006A27E0 /* CAAudioChannelLayout.h */; };
8BF193852EBE710E006A27E0 /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192FD2EBE710E006A27E0 /* CAProcess.cpp */; };
8BF193862EBE710E006A27E0 /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192FE2EBE710E006A27E0 /* CAHostTimeBase.cpp */; };
8BF193872EBE710E006A27E0 /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF192FF2EBE710E006A27E0 /* CAPersistence.cpp */; };
8BF193882EBE710E006A27E0 /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193002EBE710E006A27E0 /* CAAudioBufferList.cpp */; };
8BF193892EBE710E006A27E0 /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193012EBE710E006A27E0 /* CAAudioTimeStamp.cpp */; };
8BF1938A2EBE710E006A27E0 /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193022EBE710E006A27E0 /* CAVectorUnit.h */; };
8BF1938B2EBE710E006A27E0 /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193032EBE710E006A27E0 /* CAByteOrder.h */; };
8BF1938C2EBE710E006A27E0 /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193042EBE710E006A27E0 /* CACFArray.h */; };
8BF1938D2EBE710E006A27E0 /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193052EBE710E006A27E0 /* CAAtomicStack.h */; };
8BF1938E2EBE710E006A27E0 /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193062EBE710E006A27E0 /* CAReferenceCounted.h */; };
8BF1938F2EBE710E006A27E0 /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193072EBE710E006A27E0 /* CACFMachPort.cpp */; };
8BF193902EBE710E006A27E0 /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193082EBE710E006A27E0 /* CABufferList.cpp */; };
8BF193912EBE710E006A27E0 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193092EBE710E006A27E0 /* CAMutex.cpp */; };
8BF193922EBE710E006A27E0 /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1930A2EBE710E006A27E0 /* CADebugger.cpp */; };
8BF193932EBE710E006A27E0 /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1930B2EBE710E006A27E0 /* CABundleLocker.cpp */; };
8BF193942EBE710E006A27E0 /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1930C2EBE710E006A27E0 /* CAAudioFileFormats.cpp */; };
8BF193952EBE710E006A27E0 /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1930D2EBE710E006A27E0 /* CAMath.h */; };
8BF193962EBE710E006A27E0 /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1930E2EBE710E006A27E0 /* CACFArray.cpp */; };
8BF193972EBE710E006A27E0 /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1930F2EBE710E006A27E0 /* CACFMessagePort.h */; };
8BF193982EBE710E006A27E0 /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193102EBE710E006A27E0 /* CAAudioValueRange.cpp */; };
8BF193992EBE710E006A27E0 /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193112EBE710E006A27E0 /* CAAudioUnit.cpp */; };
8BF1939A2EBE710E006A27E0 /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193152EBE710E006A27E0 /* AUViewLocalizedStringKeys.h */; };
8BF1939B2EBE710E006A27E0 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193172EBE710E006A27E0 /* ComponentBase.cpp */; };
8BF1939C2EBE710E006A27E0 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193182EBE710E006A27E0 /* AUScopeElement.cpp */; };
8BF1939D2EBE710E006A27E0 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193192EBE710E006A27E0 /* ComponentBase.h */; };
8BF1939E2EBE710E006A27E0 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1931A2EBE710E006A27E0 /* AUBase.cpp */; };
8BF1939F2EBE710E006A27E0 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1931B2EBE710E006A27E0 /* AUInputElement.h */; };
8BF193A02EBE710E006A27E0 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1931C2EBE710E006A27E0 /* AUBase.h */; };
8BF193A12EBE710E006A27E0 /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1931D2EBE710E006A27E0 /* AUPlugInDispatch.h */; };
8BF193A22EBE710E006A27E0 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1931E2EBE710E006A27E0 /* AUDispatch.h */; };
8BF193A32EBE710E006A27E0 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1931F2EBE710E006A27E0 /* AUOutputElement.cpp */; };
8BF193A52EBE710E006A27E0 /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193212EBE710E006A27E0 /* AUPlugInDispatch.cpp */; };
8BF193A62EBE710E006A27E0 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193222EBE710E006A27E0 /* AUOutputElement.h */; };
8BF193A72EBE710E006A27E0 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193232EBE710E006A27E0 /* AUDispatch.cpp */; };
8BF193A82EBE710E006A27E0 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193242EBE710E006A27E0 /* AUScopeElement.h */; };
8BF193A92EBE710E006A27E0 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193252EBE710E006A27E0 /* AUInputElement.cpp */; };
8BF193AA2EBE710E006A27E0 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193272EBE710E006A27E0 /* AUEffectBase.cpp */; };
8BF193AB2EBE710E006A27E0 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193282EBE710E006A27E0 /* AUEffectBase.h */; };
8BF193AC2EBE710E006A27E0 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1932A2EBE710E006A27E0 /* AUTimestampGenerator.h */; };
8BF193AD2EBE710E006A27E0 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1932B2EBE710E006A27E0 /* AUBaseHelper.cpp */; };
8BF193AE2EBE710E006A27E0 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1932C2EBE710E006A27E0 /* AUSilentTimeout.h */; };
8BF193AF2EBE710E006A27E0 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1932D2EBE710E006A27E0 /* AUInputFormatConverter.h */; };
8BF193B02EBE710E006A27E0 /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1932E2EBE710E006A27E0 /* AUTimestampGenerator.cpp */; };
8BF193B12EBE710E006A27E0 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1932F2EBE710E006A27E0 /* AUBuffer.cpp */; };
8BF193B22EBE710E006A27E0 /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193302EBE710E006A27E0 /* AUMIDIDefs.h */; };
8BF193B32EBE710E006A27E0 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193312EBE710E006A27E0 /* AUBuffer.h */; };
8BF193B42EBE710E006A27E0 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193322EBE710E006A27E0 /* AUBaseHelper.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
8BA05A660720730100365D66 /* ConsoleHBuss.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleHBuss.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* ConsoleHBuss.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = ConsoleHBuss.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* ConsoleHBuss.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = ConsoleHBuss.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* ConsoleHBussVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConsoleHBussVersion.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 /* ConsoleHBuss.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConsoleHBuss.h; sourceTree = "<group>"; };
8BF192AB2EBE710E006A27E0 /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
8BF192AC2EBE710E006A27E0 /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
8BF192AD2EBE710E006A27E0 /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
8BF192AE2EBE710E006A27E0 /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
8BF192AF2EBE710E006A27E0 /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
8BF192B02EBE710E006A27E0 /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
8BF192B12EBE710E006A27E0 /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
8BF192B22EBE710E006A27E0 /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
8BF192B32EBE710E006A27E0 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8BF192B42EBE710E006A27E0 /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
8BF192B52EBE710E006A27E0 /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
8BF192B62EBE710E006A27E0 /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
8BF192B72EBE710E006A27E0 /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
8BF192B82EBE710E006A27E0 /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
8BF192B92EBE710E006A27E0 /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
8BF192BA2EBE710E006A27E0 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8BF192BB2EBE710E006A27E0 /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
8BF192BC2EBE710E006A27E0 /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
8BF192BD2EBE710E006A27E0 /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
8BF192BE2EBE710E006A27E0 /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
8BF192BF2EBE710E006A27E0 /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
8BF192C02EBE710E006A27E0 /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
8BF192C12EBE710E006A27E0 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8BF192C22EBE710E006A27E0 /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
8BF192C32EBE710E006A27E0 /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
8BF192C42EBE710E006A27E0 /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
8BF192C52EBE710E006A27E0 /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
8BF192C62EBE710E006A27E0 /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
8BF192C72EBE710E006A27E0 /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
8BF192C82EBE710E006A27E0 /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
8BF192C92EBE710E006A27E0 /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
8BF192CA2EBE710E006A27E0 /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
8BF192CB2EBE710E006A27E0 /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
8BF192CC2EBE710E006A27E0 /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
8BF192CD2EBE710E006A27E0 /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
8BF192CE2EBE710E006A27E0 /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
8BF192CF2EBE710E006A27E0 /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
8BF192D02EBE710E006A27E0 /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
8BF192D12EBE710E006A27E0 /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
8BF192D22EBE710E006A27E0 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8BF192D32EBE710E006A27E0 /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
8BF192D42EBE710E006A27E0 /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
8BF192D52EBE710E006A27E0 /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
8BF192D62EBE710E006A27E0 /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
8BF192D72EBE710E006A27E0 /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
8BF192D82EBE710E006A27E0 /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
8BF192D92EBE710E006A27E0 /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
8BF192DA2EBE710E006A27E0 /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
8BF192DB2EBE710E006A27E0 /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
8BF192DC2EBE710E006A27E0 /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
8BF192DD2EBE710E006A27E0 /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
8BF192DE2EBE710E006A27E0 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8BF192DF2EBE710E006A27E0 /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
8BF192E02EBE710E006A27E0 /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
8BF192E12EBE710E006A27E0 /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
8BF192E22EBE710E006A27E0 /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
8BF192E32EBE710E006A27E0 /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
8BF192E42EBE710E006A27E0 /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
8BF192E52EBE710E006A27E0 /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
8BF192E62EBE710E006A27E0 /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
8BF192E72EBE710E006A27E0 /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
8BF192E82EBE710E006A27E0 /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
8BF192E92EBE710E006A27E0 /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
8BF192EA2EBE710E006A27E0 /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
8BF192EB2EBE710E006A27E0 /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
8BF192EC2EBE710E006A27E0 /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
8BF192ED2EBE710E006A27E0 /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
8BF192EE2EBE710E006A27E0 /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
8BF192EF2EBE710E006A27E0 /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
8BF192F02EBE710E006A27E0 /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
8BF192F12EBE710E006A27E0 /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
8BF192F22EBE710E006A27E0 /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
8BF192F32EBE710E006A27E0 /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
8BF192F42EBE710E006A27E0 /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
8BF192F52EBE710E006A27E0 /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
8BF192F62EBE710E006A27E0 /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
8BF192F72EBE710E006A27E0 /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
8BF192F82EBE710E006A27E0 /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
8BF192F92EBE710E006A27E0 /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
8BF192FA2EBE710E006A27E0 /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
8BF192FB2EBE710E006A27E0 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8BF192FC2EBE710E006A27E0 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8BF192FD2EBE710E006A27E0 /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
8BF192FE2EBE710E006A27E0 /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
8BF192FF2EBE710E006A27E0 /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
8BF193002EBE710E006A27E0 /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
8BF193012EBE710E006A27E0 /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
8BF193022EBE710E006A27E0 /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
8BF193032EBE710E006A27E0 /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
8BF193042EBE710E006A27E0 /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
8BF193052EBE710E006A27E0 /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
8BF193062EBE710E006A27E0 /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
8BF193072EBE710E006A27E0 /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
8BF193082EBE710E006A27E0 /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
8BF193092EBE710E006A27E0 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8BF1930A2EBE710E006A27E0 /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
8BF1930B2EBE710E006A27E0 /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
8BF1930C2EBE710E006A27E0 /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
8BF1930D2EBE710E006A27E0 /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
8BF1930E2EBE710E006A27E0 /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
8BF1930F2EBE710E006A27E0 /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
8BF193102EBE710E006A27E0 /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
8BF193112EBE710E006A27E0 /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
8BF193152EBE710E006A27E0 /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
8BF193172EBE710E006A27E0 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8BF193182EBE710E006A27E0 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8BF193192EBE710E006A27E0 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8BF1931A2EBE710E006A27E0 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8BF1931B2EBE710E006A27E0 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8BF1931C2EBE710E006A27E0 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8BF1931D2EBE710E006A27E0 /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
8BF1931E2EBE710E006A27E0 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8BF1931F2EBE710E006A27E0 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8BF193202EBE710E006A27E0 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8BF193212EBE710E006A27E0 /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
8BF193222EBE710E006A27E0 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8BF193232EBE710E006A27E0 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8BF193242EBE710E006A27E0 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8BF193252EBE710E006A27E0 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8BF193272EBE710E006A27E0 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8BF193282EBE710E006A27E0 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8BF1932A2EBE710E006A27E0 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8BF1932B2EBE710E006A27E0 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
8BF1932C2EBE710E006A27E0 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8BF1932D2EBE710E006A27E0 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8BF1932E2EBE710E006A27E0 /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
8BF1932F2EBE710E006A27E0 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8BF193302EBE710E006A27E0 /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
8BF193312EBE710E006A27E0 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8BF193322EBE710E006A27E0 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
8BF193B52EBE71CE006A27E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* ConsoleHBuss.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConsoleHBuss.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 /* ConsoleHBuss */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = ConsoleHBuss;
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 = (
8BF192A92EBE710E006A27E0 /* CA_SDK */,
8BA05A56072072A900365D66 /* AU Source */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* ConsoleHBuss.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* ConsoleHBuss.h */,
8BA05A660720730100365D66 /* ConsoleHBuss.cpp */,
8BA05A670720730100365D66 /* ConsoleHBuss.exp */,
8BA05A680720730100365D66 /* ConsoleHBuss.r */,
8BA05A690720730100365D66 /* ConsoleHBussVersion.h */,
);
name = "AU Source";
sourceTree = "<group>";
};
8BF192A92EBE710E006A27E0 /* CA_SDK */ = {
isa = PBXGroup;
children = (
8BF192AA2EBE710E006A27E0 /* PublicUtility */,
8BF193122EBE710E006A27E0 /* AudioUnits */,
);
name = CA_SDK;
path = ../../../../CA_SDK;
sourceTree = "<group>";
};
8BF192AA2EBE710E006A27E0 /* PublicUtility */ = {
isa = PBXGroup;
children = (
8BF192AB2EBE710E006A27E0 /* CAExtAudioFile.h */,
8BF192AC2EBE710E006A27E0 /* CACFMachPort.h */,
8BF192AD2EBE710E006A27E0 /* CABool.h */,
8BF192AE2EBE710E006A27E0 /* CAComponent.cpp */,
8BF192AF2EBE710E006A27E0 /* CADebugger.h */,
8BF192B02EBE710E006A27E0 /* CACFNumber.cpp */,
8BF192B12EBE710E006A27E0 /* CAGuard.h */,
8BF192B22EBE710E006A27E0 /* CAAtomic.h */,
8BF192B32EBE710E006A27E0 /* CAStreamBasicDescription.h */,
8BF192B42EBE710E006A27E0 /* CACFObject.h */,
8BF192B52EBE710E006A27E0 /* CAStreamRangedDescription.h */,
8BF192B62EBE710E006A27E0 /* CATokenMap.h */,
8BF192B72EBE710E006A27E0 /* CAComponent.h */,
8BF192B82EBE710E006A27E0 /* CAAudioBufferList.h */,
8BF192B92EBE710E006A27E0 /* CAAudioUnit.h */,
8BF192BA2EBE710E006A27E0 /* CAAUParameter.h */,
8BF192BB2EBE710E006A27E0 /* CAException.h */,
8BF192BC2EBE710E006A27E0 /* CAAUProcessor.cpp */,
8BF192BD2EBE710E006A27E0 /* CAAUProcessor.h */,
8BF192BE2EBE710E006A27E0 /* CAProcess.h */,
8BF192BF2EBE710E006A27E0 /* CACFDictionary.h */,
8BF192C02EBE710E006A27E0 /* CAPThread.h */,
8BF192C12EBE710E006A27E0 /* CAAUParameter.cpp */,
8BF192C22EBE710E006A27E0 /* CAAudioTimeStamp.h */,
8BF192C32EBE710E006A27E0 /* CAFilePathUtils.cpp */,
8BF192C42EBE710E006A27E0 /* CAAudioValueRange.h */,
8BF192C52EBE710E006A27E0 /* CAVectorUnitTypes.h */,
8BF192C62EBE710E006A27E0 /* CAAudioChannelLayoutObject.cpp */,
8BF192C72EBE710E006A27E0 /* CAGuard.cpp */,
8BF192C82EBE710E006A27E0 /* CACFNumber.h */,
8BF192C92EBE710E006A27E0 /* CACFDistributedNotification.cpp */,
8BF192CA2EBE710E006A27E0 /* CACFString.h */,
8BF192CB2EBE710E006A27E0 /* CAAUMIDIMapManager.cpp */,
8BF192CC2EBE710E006A27E0 /* CAComponentDescription.cpp */,
8BF192CD2EBE710E006A27E0 /* CAHostTimeBase.h */,
8BF192CE2EBE710E006A27E0 /* CADebugMacros.cpp */,
8BF192CF2EBE710E006A27E0 /* CAAudioFileFormats.h */,
8BF192D02EBE710E006A27E0 /* CAAUMIDIMapManager.h */,
8BF192D12EBE710E006A27E0 /* CACFDictionary.cpp */,
8BF192D22EBE710E006A27E0 /* CAMutex.h */,
8BF192D32EBE710E006A27E0 /* CACFString.cpp */,
8BF192D42EBE710E006A27E0 /* CASettingsStorage.h */,
8BF192D52EBE710E006A27E0 /* CADebugPrintf.h */,
8BF192D62EBE710E006A27E0 /* CAXException.cpp */,
8BF192D72EBE710E006A27E0 /* CAAUMIDIMap.h */,
8BF192D82EBE710E006A27E0 /* AUParamInfo.h */,
8BF192D92EBE710E006A27E0 /* CABitOperations.h */,
8BF192DA2EBE710E006A27E0 /* CACFPreferences.cpp */,
8BF192DB2EBE710E006A27E0 /* CABundleLocker.h */,
8BF192DC2EBE710E006A27E0 /* CAPropertyAddress.h */,
8BF192DD2EBE710E006A27E0 /* CAXException.h */,
8BF192DE2EBE710E006A27E0 /* CAAudioChannelLayout.cpp */,
8BF192DF2EBE710E006A27E0 /* CAThreadSafeList.h */,
8BF192E02EBE710E006A27E0 /* CAAudioUnitOutputCapturer.h */,
8BF192E12EBE710E006A27E0 /* AUParamInfo.cpp */,
8BF192E22EBE710E006A27E0 /* CASharedLibrary.cpp */,
8BF192E32EBE710E006A27E0 /* CAAUMIDIMap.cpp */,
8BF192E42EBE710E006A27E0 /* CALogMacros.h */,
8BF192E52EBE710E006A27E0 /* CACFMessagePort.cpp */,
8BF192E62EBE710E006A27E0 /* CARingBuffer.h */,
8BF192E72EBE710E006A27E0 /* AUOutputBL.cpp */,
8BF192E82EBE710E006A27E0 /* CABufferList.h */,
8BF192E92EBE710E006A27E0 /* CASharedLibrary.h */,
8BF192EA2EBE710E006A27E0 /* CACFData.h */,
8BF192EB2EBE710E006A27E0 /* CAStreamRangedDescription.cpp */,
8BF192EC2EBE710E006A27E0 /* CAPThread.cpp */,
8BF192ED2EBE710E006A27E0 /* CAAutoDisposer.h */,
8BF192EE2EBE710E006A27E0 /* CACFPreferences.h */,
8BF192EF2EBE710E006A27E0 /* CAVectorUnit.cpp */,
8BF192F02EBE710E006A27E0 /* CAComponentDescription.h */,
8BF192F12EBE710E006A27E0 /* CADebugMacros.h */,
8BF192F22EBE710E006A27E0 /* AUOutputBL.h */,
8BF192F32EBE710E006A27E0 /* CADebugPrintf.cpp */,
8BF192F42EBE710E006A27E0 /* CARingBuffer.cpp */,
8BF192F52EBE710E006A27E0 /* CACFPlugIn.h */,
8BF192F62EBE710E006A27E0 /* CASettingsStorage.cpp */,
8BF192F72EBE710E006A27E0 /* CAMixMap.h */,
8BF192F82EBE710E006A27E0 /* CACFDistributedNotification.h */,
8BF192F92EBE710E006A27E0 /* CAFilePathUtils.h */,
8BF192FA2EBE710E006A27E0 /* CATink.h */,
8BF192FB2EBE710E006A27E0 /* CAStreamBasicDescription.cpp */,
8BF192FC2EBE710E006A27E0 /* CAAudioChannelLayout.h */,
8BF192FD2EBE710E006A27E0 /* CAProcess.cpp */,
8BF192FE2EBE710E006A27E0 /* CAHostTimeBase.cpp */,
8BF192FF2EBE710E006A27E0 /* CAPersistence.cpp */,
8BF193002EBE710E006A27E0 /* CAAudioBufferList.cpp */,
8BF193012EBE710E006A27E0 /* CAAudioTimeStamp.cpp */,
8BF193022EBE710E006A27E0 /* CAVectorUnit.h */,
8BF193032EBE710E006A27E0 /* CAByteOrder.h */,
8BF193042EBE710E006A27E0 /* CACFArray.h */,
8BF193052EBE710E006A27E0 /* CAAtomicStack.h */,
8BF193062EBE710E006A27E0 /* CAReferenceCounted.h */,
8BF193072EBE710E006A27E0 /* CACFMachPort.cpp */,
8BF193082EBE710E006A27E0 /* CABufferList.cpp */,
8BF193092EBE710E006A27E0 /* CAMutex.cpp */,
8BF1930A2EBE710E006A27E0 /* CADebugger.cpp */,
8BF1930B2EBE710E006A27E0 /* CABundleLocker.cpp */,
8BF1930C2EBE710E006A27E0 /* CAAudioFileFormats.cpp */,
8BF1930D2EBE710E006A27E0 /* CAMath.h */,
8BF1930E2EBE710E006A27E0 /* CACFArray.cpp */,
8BF1930F2EBE710E006A27E0 /* CACFMessagePort.h */,
8BF193102EBE710E006A27E0 /* CAAudioValueRange.cpp */,
8BF193112EBE710E006A27E0 /* CAAudioUnit.cpp */,
);
path = PublicUtility;
sourceTree = "<group>";
};
8BF193122EBE710E006A27E0 /* AudioUnits */ = {
isa = PBXGroup;
children = (
8BF193132EBE710E006A27E0 /* AUPublic */,
);
path = AudioUnits;
sourceTree = "<group>";
};
8BF193132EBE710E006A27E0 /* AUPublic */ = {
isa = PBXGroup;
children = (
8BF193142EBE710E006A27E0 /* AUViewBase */,
8BF193162EBE710E006A27E0 /* AUBase */,
8BF193262EBE710E006A27E0 /* OtherBases */,
8BF193292EBE710E006A27E0 /* Utility */,
);
path = AUPublic;
sourceTree = "<group>";
};
8BF193142EBE710E006A27E0 /* AUViewBase */ = {
isa = PBXGroup;
children = (
8BF193152EBE710E006A27E0 /* AUViewLocalizedStringKeys.h */,
);
path = AUViewBase;
sourceTree = "<group>";
};
8BF193162EBE710E006A27E0 /* AUBase */ = {
isa = PBXGroup;
children = (
8BF193172EBE710E006A27E0 /* ComponentBase.cpp */,
8BF193182EBE710E006A27E0 /* AUScopeElement.cpp */,
8BF193192EBE710E006A27E0 /* ComponentBase.h */,
8BF1931A2EBE710E006A27E0 /* AUBase.cpp */,
8BF1931B2EBE710E006A27E0 /* AUInputElement.h */,
8BF1931C2EBE710E006A27E0 /* AUBase.h */,
8BF1931D2EBE710E006A27E0 /* AUPlugInDispatch.h */,
8BF1931E2EBE710E006A27E0 /* AUDispatch.h */,
8BF1931F2EBE710E006A27E0 /* AUOutputElement.cpp */,
8BF193202EBE710E006A27E0 /* AUResources.r */,
8BF193212EBE710E006A27E0 /* AUPlugInDispatch.cpp */,
8BF193222EBE710E006A27E0 /* AUOutputElement.h */,
8BF193232EBE710E006A27E0 /* AUDispatch.cpp */,
8BF193242EBE710E006A27E0 /* AUScopeElement.h */,
8BF193252EBE710E006A27E0 /* AUInputElement.cpp */,
);
path = AUBase;
sourceTree = "<group>";
};
8BF193262EBE710E006A27E0 /* OtherBases */ = {
isa = PBXGroup;
children = (
8BF193272EBE710E006A27E0 /* AUEffectBase.cpp */,
8BF193282EBE710E006A27E0 /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8BF193292EBE710E006A27E0 /* Utility */ = {
isa = PBXGroup;
children = (
8BF1932A2EBE710E006A27E0 /* AUTimestampGenerator.h */,
8BF1932B2EBE710E006A27E0 /* AUBaseHelper.cpp */,
8BF1932C2EBE710E006A27E0 /* AUSilentTimeout.h */,
8BF1932D2EBE710E006A27E0 /* AUInputFormatConverter.h */,
8BF1932E2EBE710E006A27E0 /* AUTimestampGenerator.cpp */,
8BF1932F2EBE710E006A27E0 /* AUBuffer.cpp */,
8BF193302EBE710E006A27E0 /* AUMIDIDefs.h */,
8BF193312EBE710E006A27E0 /* AUBuffer.h */,
8BF193322EBE710E006A27E0 /* AUBaseHelper.h */,
);
path = Utility;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8BF193632EBE710E006A27E0 /* CABundleLocker.h in Headers */,
8BF193842EBE710E006A27E0 /* CAAudioChannelLayout.h in Headers */,
8BF1937A2EBE710E006A27E0 /* AUOutputBL.h in Headers */,
8BF193552EBE710E006A27E0 /* CAHostTimeBase.h in Headers */,
8BF1939D2EBE710E006A27E0 /* ComponentBase.h in Headers */,
8BF1938D2EBE710E006A27E0 /* CAAtomicStack.h in Headers */,
8BF1934A2EBE710E006A27E0 /* CAAudioTimeStamp.h in Headers */,
8BF193672EBE710E006A27E0 /* CAThreadSafeList.h in Headers */,
8BF193422EBE710E006A27E0 /* CAAUParameter.h in Headers */,
8BF193B42EBE710E006A27E0 /* AUBaseHelper.h in Headers */,
8BF193AC2EBE710E006A27E0 /* AUTimestampGenerator.h in Headers */,
8BF1935D2EBE710E006A27E0 /* CADebugPrintf.h in Headers */,
8BF193972EBE710E006A27E0 /* CACFMessagePort.h in Headers */,
8BF193452EBE710E006A27E0 /* CAAUProcessor.h in Headers */,
8BF193412EBE710E006A27E0 /* CAAudioUnit.h in Headers */,
8BF1939A2EBE710E006A27E0 /* AUViewLocalizedStringKeys.h in Headers */,
8BF193802EBE710E006A27E0 /* CACFDistributedNotification.h in Headers */,
8BF1933F2EBE710E006A27E0 /* CAComponent.h in Headers */,
8BF1934D2EBE710E006A27E0 /* CAVectorUnitTypes.h in Headers */,
8BA05A6E0720730100365D66 /* ConsoleHBussVersion.h in Headers */,
8BF193812EBE710E006A27E0 /* CAFilePathUtils.h in Headers */,
8BF193432EBE710E006A27E0 /* CAException.h in Headers */,
8BF1933A2EBE710E006A27E0 /* CAAtomic.h in Headers */,
8BF193392EBE710E006A27E0 /* CAGuard.h in Headers */,
8BF1939F2EBE710E006A27E0 /* AUInputElement.h in Headers */,
8BF193762EBE710E006A27E0 /* CACFPreferences.h in Headers */,
8BF1938B2EBE710E006A27E0 /* CAByteOrder.h in Headers */,
8BF1936E2EBE710E006A27E0 /* CARingBuffer.h in Headers */,
8BF193352EBE710E006A27E0 /* CABool.h in Headers */,
8BF1935A2EBE710E006A27E0 /* CAMutex.h in Headers */,
8BF193A02EBE710E006A27E0 /* AUBase.h in Headers */,
8BC6025C073B072D006C4272 /* ConsoleHBuss.h in Headers */,
8BF193522EBE710E006A27E0 /* CACFString.h in Headers */,
8BF193712EBE710E006A27E0 /* CASharedLibrary.h in Headers */,
8BF1933E2EBE710E006A27E0 /* CATokenMap.h in Headers */,
8BF193332EBE710E006A27E0 /* CAExtAudioFile.h in Headers */,
8BF193482EBE710E006A27E0 /* CAPThread.h in Headers */,
8BF193642EBE710E006A27E0 /* CAPropertyAddress.h in Headers */,
8BF1938E2EBE710E006A27E0 /* CAReferenceCounted.h in Headers */,
8BF193B32EBE710E006A27E0 /* AUBuffer.h in Headers */,
8BF193952EBE710E006A27E0 /* CAMath.h in Headers */,
8BF193752EBE710E006A27E0 /* CAAutoDisposer.h in Headers */,
8BF1933C2EBE710E006A27E0 /* CACFObject.h in Headers */,
8BF1935C2EBE710E006A27E0 /* CASettingsStorage.h in Headers */,
8BF193652EBE710E006A27E0 /* CAXException.h in Headers */,
8BF193822EBE710E006A27E0 /* CATink.h in Headers */,
8BF193AF2EBE710E006A27E0 /* AUInputFormatConverter.h in Headers */,
8BF1938A2EBE710E006A27E0 /* CAVectorUnit.h in Headers */,
8BF193462EBE710E006A27E0 /* CAProcess.h in Headers */,
8BF1934C2EBE710E006A27E0 /* CAAudioValueRange.h in Headers */,
8BF193612EBE710E006A27E0 /* CABitOperations.h in Headers */,
8BF193572EBE710E006A27E0 /* CAAudioFileFormats.h in Headers */,
8BF193502EBE710E006A27E0 /* CACFNumber.h in Headers */,
8BF193682EBE710E006A27E0 /* CAAudioUnitOutputCapturer.h in Headers */,
8BF193792EBE710E006A27E0 /* CADebugMacros.h in Headers */,
8BF193B22EBE710E006A27E0 /* AUMIDIDefs.h in Headers */,
8BF193722EBE710E006A27E0 /* CACFData.h in Headers */,
8BF1933B2EBE710E006A27E0 /* CAStreamBasicDescription.h in Headers */,
8BF193A12EBE710E006A27E0 /* AUPlugInDispatch.h in Headers */,
8BF1933D2EBE710E006A27E0 /* CAStreamRangedDescription.h in Headers */,
8BF1937D2EBE710E006A27E0 /* CACFPlugIn.h in Headers */,
8BF193402EBE710E006A27E0 /* CAAudioBufferList.h in Headers */,
8BF193582EBE710E006A27E0 /* CAAUMIDIMapManager.h in Headers */,
8BF193AB2EBE710E006A27E0 /* AUEffectBase.h in Headers */,
8BF193472EBE710E006A27E0 /* CACFDictionary.h in Headers */,
8BF193A82EBE710E006A27E0 /* AUScopeElement.h in Headers */,
8BF193782EBE710E006A27E0 /* CAComponentDescription.h in Headers */,
8BF193AE2EBE710E006A27E0 /* AUSilentTimeout.h in Headers */,
8BF193702EBE710E006A27E0 /* CABufferList.h in Headers */,
8BF193A22EBE710E006A27E0 /* AUDispatch.h in Headers */,
8BF193A62EBE710E006A27E0 /* AUOutputElement.h in Headers */,
8BF1936C2EBE710E006A27E0 /* CALogMacros.h in Headers */,
8BF193602EBE710E006A27E0 /* AUParamInfo.h in Headers */,
8BF1937F2EBE710E006A27E0 /* CAMixMap.h in Headers */,
8BF1938C2EBE710E006A27E0 /* CACFArray.h in Headers */,
8BF193342EBE710E006A27E0 /* CACFMachPort.h in Headers */,
8BF1935F2EBE710E006A27E0 /* CAAUMIDIMap.h in Headers */,
8BF193372EBE710E006A27E0 /* CADebugger.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "ConsoleHBuss" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = ConsoleHBuss;
productInstallPath = "$(HOME)/Library/Bundles";
productName = ConsoleHBuss;
productReference = 8D01CCD20486CAD60068D4B7 /* ConsoleHBuss.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 "ConsoleHBuss" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
en,
Base,
fr,
de,
ja,
);
mainGroup = 089C166AFE841209C02AAC07 /* ConsoleHBuss */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* ConsoleHBuss */,
);
};
/* 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 = (
8BF1936F2EBE710E006A27E0 /* AUOutputBL.cpp in Sources */,
8BF193942EBE710E006A27E0 /* CAAudioFileFormats.cpp in Sources */,
8BF193862EBE710E006A27E0 /* CAHostTimeBase.cpp in Sources */,
8BF1935E2EBE710E006A27E0 /* CAXException.cpp in Sources */,
8BF193882EBE710E006A27E0 /* CAAudioBufferList.cpp in Sources */,
8BF1934B2EBE710E006A27E0 /* CAFilePathUtils.cpp in Sources */,
8BF193492EBE710E006A27E0 /* CAAUParameter.cpp in Sources */,
8BF1936B2EBE710E006A27E0 /* CAAUMIDIMap.cpp in Sources */,
8BF193982EBE710E006A27E0 /* CAAudioValueRange.cpp in Sources */,
8BF193A72EBE710E006A27E0 /* AUDispatch.cpp in Sources */,
8BF193622EBE710E006A27E0 /* CACFPreferences.cpp in Sources */,
8BF193A52EBE710E006A27E0 /* AUPlugInDispatch.cpp in Sources */,
8BF193442EBE710E006A27E0 /* CAAUProcessor.cpp in Sources */,
8BF193592EBE710E006A27E0 /* CACFDictionary.cpp in Sources */,
8BF193AD2EBE710E006A27E0 /* AUBaseHelper.cpp in Sources */,
8BF193922EBE710E006A27E0 /* CADebugger.cpp in Sources */,
8BF193662EBE710E006A27E0 /* CAAudioChannelLayout.cpp in Sources */,
8BF193692EBE710E006A27E0 /* AUParamInfo.cpp in Sources */,
8BF193872EBE710E006A27E0 /* CAPersistence.cpp in Sources */,
8BF1937B2EBE710E006A27E0 /* CADebugPrintf.cpp in Sources */,
8BF193B02EBE710E006A27E0 /* AUTimestampGenerator.cpp in Sources */,
8BF193832EBE710E006A27E0 /* CAStreamBasicDescription.cpp in Sources */,
8BF193532EBE710E006A27E0 /* CAAUMIDIMapManager.cpp in Sources */,
8BF1937E2EBE710E006A27E0 /* CASettingsStorage.cpp in Sources */,
8BF193A32EBE710E006A27E0 /* AUOutputElement.cpp in Sources */,
8BF1934F2EBE710E006A27E0 /* CAGuard.cpp in Sources */,
8BA05A6B0720730100365D66 /* ConsoleHBuss.cpp in Sources */,
8BF193912EBE710E006A27E0 /* CAMutex.cpp in Sources */,
8BF193AA2EBE710E006A27E0 /* AUEffectBase.cpp in Sources */,
8BF1938F2EBE710E006A27E0 /* CACFMachPort.cpp in Sources */,
8BF1939E2EBE710E006A27E0 /* AUBase.cpp in Sources */,
8BF1936A2EBE710E006A27E0 /* CASharedLibrary.cpp in Sources */,
8BF193512EBE710E006A27E0 /* CACFDistributedNotification.cpp in Sources */,
8BF193542EBE710E006A27E0 /* CAComponentDescription.cpp in Sources */,
8BF1935B2EBE710E006A27E0 /* CACFString.cpp in Sources */,
8BF1939B2EBE710E006A27E0 /* ComponentBase.cpp in Sources */,
8BF1937C2EBE710E006A27E0 /* CARingBuffer.cpp in Sources */,
8BF1939C2EBE710E006A27E0 /* AUScopeElement.cpp in Sources */,
8BF193992EBE710E006A27E0 /* CAAudioUnit.cpp in Sources */,
8BF193962EBE710E006A27E0 /* CACFArray.cpp in Sources */,
8BF193932EBE710E006A27E0 /* CABundleLocker.cpp in Sources */,
8BF193852EBE710E006A27E0 /* CAProcess.cpp in Sources */,
8BF193732EBE710E006A27E0 /* CAStreamRangedDescription.cpp in Sources */,
8BF193742EBE710E006A27E0 /* CAPThread.cpp in Sources */,
8BF193362EBE710E006A27E0 /* CAComponent.cpp in Sources */,
8BF1934E2EBE710E006A27E0 /* CAAudioChannelLayoutObject.cpp in Sources */,
8BF193892EBE710E006A27E0 /* CAAudioTimeStamp.cpp in Sources */,
8BF193902EBE710E006A27E0 /* CABufferList.cpp in Sources */,
8BF1936D2EBE710E006A27E0 /* CACFMessagePort.cpp in Sources */,
8BF193772EBE710E006A27E0 /* CAVectorUnit.cpp in Sources */,
8BF193A92EBE710E006A27E0 /* AUInputElement.cpp in Sources */,
8BF193B12EBE710E006A27E0 /* AUBuffer.cpp in Sources */,
8BF193562EBE710E006A27E0 /* CADebugMacros.cpp in Sources */,
8BF193382EBE710E006A27E0 /* CACFNumber.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8BF193B52EBE71CE006A27E0 /* 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 = ConsoleHBuss.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 = ConsoleHBuss;
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 = ConsoleHBuss.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 = ConsoleHBuss;
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 "ConsoleHBuss" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "ConsoleHBuss" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA248089833B7007656EC /* Debug */,
3E4BA249089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

View file

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

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "ConsoleHBuss.component"
BlueprintName = "ConsoleHBuss"
ReferencedContainer = "container:ConsoleHBuss.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 = "ConsoleHBuss.component"
BlueprintName = "ConsoleHBuss"
ReferencedContainer = "container:ConsoleHBuss.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>ConsoleHBuss.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,58 @@
/*
* File: ConsoleHBussVersion.h
*
* Version: 1.0
*
* Created: 11/4/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 __ConsoleHBussVersion_h__
#define __ConsoleHBussVersion_h__
#ifdef DEBUG
#define kConsoleHBussVersion 0xFFFFFFFF
#else
#define kConsoleHBussVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define ConsoleHBuss_COMP_MANF 'Dthr'
#define ConsoleHBuss_COMP_SUBTYPE 'chpb'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

View file

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

View file

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

Binary file not shown.

View file

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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
_ConsoleHChannelEntry
_ConsoleHChannelFactory

View file

@ -0,0 +1,313 @@
/*
* File: ConsoleHChannel.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHChannelVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHChannel_h__
#define __ConsoleHChannel_h__
#pragma mark ____ConsoleHChannel Parameters
// parameters
static const int kDefaultValue_ParamTRM = 1;
static const float kDefaultValue_ParamMOR = 0.0;
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamCRS = 0.0;
static const float kDefaultValue_ParamTRF = 0.5;
static const float kDefaultValue_ParamTRG = 0.0;
static const float kDefaultValue_ParamTRB = 0.5;
static const float kDefaultValue_ParamHMF = 0.5;
static const float kDefaultValue_ParamHMG = 0.0;
static const float kDefaultValue_ParamHMB = 0.5;
static const float kDefaultValue_ParamLMF = 0.5;
static const float kDefaultValue_ParamLMG = 0.0;
static const float kDefaultValue_ParamLMB = 0.5;
static const float kDefaultValue_ParamBSF = 0.5;
static const float kDefaultValue_ParamBSG = 0.0;
static const float kDefaultValue_ParamBSB = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamATK = 0.5;
static const float kDefaultValue_ParamRLS = 0.5;
static const float kDefaultValue_ParamGAT = 0.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamPAN = 0.5;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterTRMName = CFSTR("Trim");
static CFStringRef kParameterMORName = CFSTR("More");
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterCRSName = CFSTR("CrossFd");
static CFStringRef kParameterTRFUnit = CFSTR("crush");
static CFStringRef kParameterTRFName = CFSTR("Tr Freq");
static CFStringRef kParameterTRGName = CFSTR("Treble");
static CFStringRef kParameterTRBName = CFSTR("TrCrush");
static CFStringRef kParameterHMFName = CFSTR("HM Freq");
static CFStringRef kParameterHMGName = CFSTR("HighMid");
static CFStringRef kParameterHMBName = CFSTR("HMCrush");
static CFStringRef kParameterLMFName = CFSTR("LM Freq");
static CFStringRef kParameterLMGName = CFSTR("LowMid");
static CFStringRef kParameterLMBName = CFSTR("LMCrush");
static CFStringRef kParameterBSFName = CFSTR("Bs Freq");
static CFStringRef kParameterBSGName = CFSTR("Bass");
static CFStringRef kParameterBSBName = CFSTR("BsCrush");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterATKName = CFSTR("Attack");
static CFStringRef kParameterRLSName = CFSTR("Release");
static CFStringRef kParameterGATName = CFSTR("Gate");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterPANName = CFSTR("Pan");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_PAN =24,
kParam_FAD =25,
//Add your parameters here...
kNumberOfParameters=26
};
const int dscBuf = 256;
#pragma mark ____ConsoleHChannel
class ConsoleHChannel : public AUEffectBase
{
public:
ConsoleHChannel(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHChannel () { 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 kConsoleHChannelVersion; }
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_sR1,
biq_sR2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double highFastRIIR;
double lowFastLIIR;
double lowFastRIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2, biqs_aR1, biqs_aR2,
biqs_cL1, biqs_cL2, biqs_cR1, biqs_cR2,
biqs_outL, biqs_outR, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_AR,
bez_BR,
bez_CR,
bez_InR,
bez_UnInR,
bez_SampR,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
//Dynamics2
double iirHPositionL[23];
double iirHAngleL[23];
double iirHPositionR[23];
double iirHAngleR[23];
bool hBypass;
double iirLPositionL[15];
double iirLAngleL[15];
double iirLPositionR[15];
double iirLAngleR[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
double dBaR[dscBuf+5];
double dBaPosR;
int dBaXR;
//Discontapeity
double avg32L[33];
double avg32R[33];
double avg16L[17];
double avg16R[17];
double avg8L[9];
double avg8R[9];
double avg4L[5];
double avg4R[5];
double avg2L[3];
double avg2R[3];
int avgPos;
double lastSlewL;
double lastSlewR;
double lastSlewpleL;
double lastSlewpleR;
//preTapeHack
double panA;
double panB;
double inTrimA;
double inTrimB;
uint32_t fpdL;
uint32_t fpdR;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

View file

@ -0,0 +1,61 @@
/*
* File: ConsoleHChannel.r
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHChannelVersion.h"
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
#define kAudioUnitResID_ConsoleHChannel 1000
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ConsoleHChannel~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define RES_ID kAudioUnitResID_ConsoleHChannel
#define COMP_TYPE kAudioUnitType_Effect
#define COMP_SUBTYPE ConsoleHChannel_COMP_SUBTYPE
#define COMP_MANUF ConsoleHChannel_COMP_MANF
#define VERSION kConsoleHChannelVersion
#define NAME "Airwindows: ConsoleHChannel"
#define DESCRIPTION "ConsoleHChannel AU"
#define ENTRY_POINT "ConsoleHChannelEntry"
#include "AUResources.r"

View file

@ -0,0 +1,107 @@
// !$*UTF8*$!
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */;
codeSenseManager = 8BD3CCB9148830B20062E48C /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
303,
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 = 784126220;
PBXWorkspaceStateSaveDate = 784126220;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8BA05A660720730100365D66 /* ConsoleHChannel.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1308, 19872}}";
sepNavSelRange = "{29117, 23722}";
sepNavVisRange = "{52032, 1445}";
sepNavWindowFrame = "{{5, 52}, {912, 826}}";
};
};
8BA05A690720730100365D66 /* ConsoleHChannelVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 1062}}";
sepNavSelRange = "{2948, 0}";
sepNavVisRange = "{1075, 1936}";
sepNavWindowFrame = "{{15, 47}, {912, 826}}";
};
};
8BA05A7F072073D200365D66 /* AUBase.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 23430}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 1336}";
};
};
8BC6025B073B072D006C4272 /* ConsoleHChannel.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 4878}}";
sepNavSelRange = "{6299, 25}";
sepNavVisRange = "{5969, 1043}";
sepNavWindowFrame = "{{7, 52}, {912, 826}}";
};
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
8BD3CCB9148830B20062E48C /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */ = {
activeExec = 0;
};
}

View file

@ -0,0 +1,965 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
8BA05A6B0720730100365D66 /* ConsoleHChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* ConsoleHChannel.cpp */; };
8BA05A6E0720730100365D66 /* ConsoleHChannelVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* ConsoleHChannelVersion.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 /* ConsoleHChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* ConsoleHChannel.h */; };
8BF194402EBE7221006A27E0 /* CAExtAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193B82EBE7221006A27E0 /* CAExtAudioFile.h */; };
8BF194412EBE7221006A27E0 /* CACFMachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193B92EBE7221006A27E0 /* CACFMachPort.h */; };
8BF194422EBE7221006A27E0 /* CABool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193BA2EBE7221006A27E0 /* CABool.h */; };
8BF194432EBE7221006A27E0 /* CAComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193BB2EBE7221006A27E0 /* CAComponent.cpp */; };
8BF194442EBE7221006A27E0 /* CADebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193BC2EBE7221006A27E0 /* CADebugger.h */; };
8BF194452EBE7221006A27E0 /* CACFNumber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193BD2EBE7221006A27E0 /* CACFNumber.cpp */; };
8BF194462EBE7221006A27E0 /* CAGuard.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193BE2EBE7221006A27E0 /* CAGuard.h */; };
8BF194472EBE7221006A27E0 /* CAAtomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193BF2EBE7221006A27E0 /* CAAtomic.h */; };
8BF194482EBE7221006A27E0 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C02EBE7221006A27E0 /* CAStreamBasicDescription.h */; };
8BF194492EBE7221006A27E0 /* CACFObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C12EBE7221006A27E0 /* CACFObject.h */; };
8BF1944A2EBE7221006A27E0 /* CAStreamRangedDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C22EBE7221006A27E0 /* CAStreamRangedDescription.h */; };
8BF1944B2EBE7221006A27E0 /* CATokenMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C32EBE7221006A27E0 /* CATokenMap.h */; };
8BF1944C2EBE7221006A27E0 /* CAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C42EBE7221006A27E0 /* CAComponent.h */; };
8BF1944D2EBE7221006A27E0 /* CAAudioBufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C52EBE7221006A27E0 /* CAAudioBufferList.h */; };
8BF1944E2EBE7221006A27E0 /* CAAudioUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C62EBE7221006A27E0 /* CAAudioUnit.h */; };
8BF1944F2EBE7221006A27E0 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C72EBE7221006A27E0 /* CAAUParameter.h */; };
8BF194502EBE7221006A27E0 /* CAException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193C82EBE7221006A27E0 /* CAException.h */; };
8BF194512EBE7221006A27E0 /* CAAUProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193C92EBE7221006A27E0 /* CAAUProcessor.cpp */; };
8BF194522EBE7221006A27E0 /* CAAUProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193CA2EBE7221006A27E0 /* CAAUProcessor.h */; };
8BF194532EBE7221006A27E0 /* CAProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193CB2EBE7221006A27E0 /* CAProcess.h */; };
8BF194542EBE7221006A27E0 /* CACFDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193CC2EBE7221006A27E0 /* CACFDictionary.h */; };
8BF194552EBE7221006A27E0 /* CAPThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193CD2EBE7221006A27E0 /* CAPThread.h */; };
8BF194562EBE7221006A27E0 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193CE2EBE7221006A27E0 /* CAAUParameter.cpp */; };
8BF194572EBE7221006A27E0 /* CAAudioTimeStamp.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193CF2EBE7221006A27E0 /* CAAudioTimeStamp.h */; };
8BF194582EBE7221006A27E0 /* CAFilePathUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D02EBE7221006A27E0 /* CAFilePathUtils.cpp */; };
8BF194592EBE7221006A27E0 /* CAAudioValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193D12EBE7221006A27E0 /* CAAudioValueRange.h */; };
8BF1945A2EBE7221006A27E0 /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193D22EBE7221006A27E0 /* CAVectorUnitTypes.h */; };
8BF1945B2EBE7221006A27E0 /* CAAudioChannelLayoutObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D32EBE7221006A27E0 /* CAAudioChannelLayoutObject.cpp */; };
8BF1945C2EBE7221006A27E0 /* CAGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D42EBE7221006A27E0 /* CAGuard.cpp */; };
8BF1945D2EBE7221006A27E0 /* CACFNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193D52EBE7221006A27E0 /* CACFNumber.h */; };
8BF1945E2EBE7221006A27E0 /* CACFDistributedNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D62EBE7221006A27E0 /* CACFDistributedNotification.cpp */; };
8BF1945F2EBE7221006A27E0 /* CACFString.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193D72EBE7221006A27E0 /* CACFString.h */; };
8BF194602EBE7221006A27E0 /* CAAUMIDIMapManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D82EBE7221006A27E0 /* CAAUMIDIMapManager.cpp */; };
8BF194612EBE7221006A27E0 /* CAComponentDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193D92EBE7221006A27E0 /* CAComponentDescription.cpp */; };
8BF194622EBE7221006A27E0 /* CAHostTimeBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193DA2EBE7221006A27E0 /* CAHostTimeBase.h */; };
8BF194632EBE7221006A27E0 /* CADebugMacros.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193DB2EBE7221006A27E0 /* CADebugMacros.cpp */; };
8BF194642EBE7221006A27E0 /* CAAudioFileFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193DC2EBE7221006A27E0 /* CAAudioFileFormats.h */; };
8BF194652EBE7221006A27E0 /* CAAUMIDIMapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193DD2EBE7221006A27E0 /* CAAUMIDIMapManager.h */; };
8BF194662EBE7221006A27E0 /* CACFDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193DE2EBE7221006A27E0 /* CACFDictionary.cpp */; };
8BF194672EBE7221006A27E0 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193DF2EBE7221006A27E0 /* CAMutex.h */; };
8BF194682EBE7221006A27E0 /* CACFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193E02EBE7221006A27E0 /* CACFString.cpp */; };
8BF194692EBE7221006A27E0 /* CASettingsStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E12EBE7221006A27E0 /* CASettingsStorage.h */; };
8BF1946A2EBE7221006A27E0 /* CADebugPrintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E22EBE7221006A27E0 /* CADebugPrintf.h */; };
8BF1946B2EBE7221006A27E0 /* CAXException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193E32EBE7221006A27E0 /* CAXException.cpp */; };
8BF1946C2EBE7221006A27E0 /* CAAUMIDIMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E42EBE7221006A27E0 /* CAAUMIDIMap.h */; };
8BF1946D2EBE7221006A27E0 /* AUParamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E52EBE7221006A27E0 /* AUParamInfo.h */; };
8BF1946E2EBE7221006A27E0 /* CABitOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E62EBE7221006A27E0 /* CABitOperations.h */; };
8BF1946F2EBE7221006A27E0 /* CACFPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193E72EBE7221006A27E0 /* CACFPreferences.cpp */; };
8BF194702EBE7221006A27E0 /* CABundleLocker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E82EBE7221006A27E0 /* CABundleLocker.h */; };
8BF194712EBE7221006A27E0 /* CAPropertyAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193E92EBE7221006A27E0 /* CAPropertyAddress.h */; };
8BF194722EBE7221006A27E0 /* CAXException.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193EA2EBE7221006A27E0 /* CAXException.h */; };
8BF194732EBE7221006A27E0 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193EB2EBE7221006A27E0 /* CAAudioChannelLayout.cpp */; };
8BF194742EBE7221006A27E0 /* CAThreadSafeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193EC2EBE7221006A27E0 /* CAThreadSafeList.h */; };
8BF194752EBE7221006A27E0 /* CAAudioUnitOutputCapturer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193ED2EBE7221006A27E0 /* CAAudioUnitOutputCapturer.h */; };
8BF194762EBE7221006A27E0 /* AUParamInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193EE2EBE7221006A27E0 /* AUParamInfo.cpp */; };
8BF194772EBE7221006A27E0 /* CASharedLibrary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193EF2EBE7221006A27E0 /* CASharedLibrary.cpp */; };
8BF194782EBE7221006A27E0 /* CAAUMIDIMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193F02EBE7221006A27E0 /* CAAUMIDIMap.cpp */; };
8BF194792EBE7221006A27E0 /* CALogMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193F12EBE7221006A27E0 /* CALogMacros.h */; };
8BF1947A2EBE7221006A27E0 /* CACFMessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193F22EBE7221006A27E0 /* CACFMessagePort.cpp */; };
8BF1947B2EBE7221006A27E0 /* CARingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193F32EBE7221006A27E0 /* CARingBuffer.h */; };
8BF1947C2EBE7221006A27E0 /* AUOutputBL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193F42EBE7221006A27E0 /* AUOutputBL.cpp */; };
8BF1947D2EBE7221006A27E0 /* CABufferList.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193F52EBE7221006A27E0 /* CABufferList.h */; };
8BF1947E2EBE7221006A27E0 /* CASharedLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193F62EBE7221006A27E0 /* CASharedLibrary.h */; };
8BF1947F2EBE7221006A27E0 /* CACFData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193F72EBE7221006A27E0 /* CACFData.h */; };
8BF194802EBE7221006A27E0 /* CAStreamRangedDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193F82EBE7221006A27E0 /* CAStreamRangedDescription.cpp */; };
8BF194812EBE7221006A27E0 /* CAPThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193F92EBE7221006A27E0 /* CAPThread.cpp */; };
8BF194822EBE7221006A27E0 /* CAAutoDisposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193FA2EBE7221006A27E0 /* CAAutoDisposer.h */; };
8BF194832EBE7221006A27E0 /* CACFPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193FB2EBE7221006A27E0 /* CACFPreferences.h */; };
8BF194842EBE7221006A27E0 /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF193FC2EBE7221006A27E0 /* CAVectorUnit.cpp */; };
8BF194852EBE7221006A27E0 /* CAComponentDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193FD2EBE7221006A27E0 /* CAComponentDescription.h */; };
8BF194862EBE7221006A27E0 /* CADebugMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193FE2EBE7221006A27E0 /* CADebugMacros.h */; };
8BF194872EBE7221006A27E0 /* AUOutputBL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF193FF2EBE7221006A27E0 /* AUOutputBL.h */; };
8BF194882EBE7221006A27E0 /* CADebugPrintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194002EBE7221006A27E0 /* CADebugPrintf.cpp */; };
8BF194892EBE7221006A27E0 /* CARingBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194012EBE7221006A27E0 /* CARingBuffer.cpp */; };
8BF1948A2EBE7221006A27E0 /* CACFPlugIn.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194022EBE7221006A27E0 /* CACFPlugIn.h */; };
8BF1948B2EBE7221006A27E0 /* CASettingsStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194032EBE7221006A27E0 /* CASettingsStorage.cpp */; };
8BF1948C2EBE7221006A27E0 /* CAMixMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194042EBE7221006A27E0 /* CAMixMap.h */; };
8BF1948D2EBE7221006A27E0 /* CACFDistributedNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194052EBE7221006A27E0 /* CACFDistributedNotification.h */; };
8BF1948E2EBE7221006A27E0 /* CAFilePathUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194062EBE7221006A27E0 /* CAFilePathUtils.h */; };
8BF1948F2EBE7221006A27E0 /* CATink.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194072EBE7221006A27E0 /* CATink.h */; };
8BF194902EBE7221006A27E0 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194082EBE7221006A27E0 /* CAStreamBasicDescription.cpp */; };
8BF194912EBE7221006A27E0 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194092EBE7221006A27E0 /* CAAudioChannelLayout.h */; };
8BF194922EBE7221006A27E0 /* CAProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1940A2EBE7221006A27E0 /* CAProcess.cpp */; };
8BF194932EBE7221006A27E0 /* CAHostTimeBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1940B2EBE7221006A27E0 /* CAHostTimeBase.cpp */; };
8BF194942EBE7221006A27E0 /* CAPersistence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1940C2EBE7221006A27E0 /* CAPersistence.cpp */; };
8BF194952EBE7221006A27E0 /* CAAudioBufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1940D2EBE7221006A27E0 /* CAAudioBufferList.cpp */; };
8BF194962EBE7221006A27E0 /* CAAudioTimeStamp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1940E2EBE7221006A27E0 /* CAAudioTimeStamp.cpp */; };
8BF194972EBE7221006A27E0 /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1940F2EBE7221006A27E0 /* CAVectorUnit.h */; };
8BF194982EBE7221006A27E0 /* CAByteOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194102EBE7221006A27E0 /* CAByteOrder.h */; };
8BF194992EBE7221006A27E0 /* CACFArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194112EBE7221006A27E0 /* CACFArray.h */; };
8BF1949A2EBE7221006A27E0 /* CAAtomicStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194122EBE7221006A27E0 /* CAAtomicStack.h */; };
8BF1949B2EBE7221006A27E0 /* CAReferenceCounted.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194132EBE7221006A27E0 /* CAReferenceCounted.h */; };
8BF1949C2EBE7221006A27E0 /* CACFMachPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194142EBE7221006A27E0 /* CACFMachPort.cpp */; };
8BF1949D2EBE7221006A27E0 /* CABufferList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194152EBE7221006A27E0 /* CABufferList.cpp */; };
8BF1949E2EBE7221006A27E0 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194162EBE7221006A27E0 /* CAMutex.cpp */; };
8BF1949F2EBE7221006A27E0 /* CADebugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194172EBE7221006A27E0 /* CADebugger.cpp */; };
8BF194A02EBE7221006A27E0 /* CABundleLocker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194182EBE7221006A27E0 /* CABundleLocker.cpp */; };
8BF194A12EBE7221006A27E0 /* CAAudioFileFormats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194192EBE7221006A27E0 /* CAAudioFileFormats.cpp */; };
8BF194A22EBE7221006A27E0 /* CAMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1941A2EBE7221006A27E0 /* CAMath.h */; };
8BF194A32EBE7221006A27E0 /* CACFArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1941B2EBE7221006A27E0 /* CACFArray.cpp */; };
8BF194A42EBE7221006A27E0 /* CACFMessagePort.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1941C2EBE7221006A27E0 /* CACFMessagePort.h */; };
8BF194A52EBE7221006A27E0 /* CAAudioValueRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1941D2EBE7221006A27E0 /* CAAudioValueRange.cpp */; };
8BF194A62EBE7221006A27E0 /* CAAudioUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1941E2EBE7221006A27E0 /* CAAudioUnit.cpp */; };
8BF194A72EBE7221006A27E0 /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194222EBE7221006A27E0 /* AUViewLocalizedStringKeys.h */; };
8BF194A82EBE7221006A27E0 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194242EBE7221006A27E0 /* ComponentBase.cpp */; };
8BF194A92EBE7221006A27E0 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194252EBE7221006A27E0 /* AUScopeElement.cpp */; };
8BF194AA2EBE7221006A27E0 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194262EBE7221006A27E0 /* ComponentBase.h */; };
8BF194AB2EBE7221006A27E0 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194272EBE7221006A27E0 /* AUBase.cpp */; };
8BF194AC2EBE7221006A27E0 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194282EBE7221006A27E0 /* AUInputElement.h */; };
8BF194AD2EBE7221006A27E0 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194292EBE7221006A27E0 /* AUBase.h */; };
8BF194AE2EBE7221006A27E0 /* AUPlugInDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1942A2EBE7221006A27E0 /* AUPlugInDispatch.h */; };
8BF194AF2EBE7221006A27E0 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1942B2EBE7221006A27E0 /* AUDispatch.h */; };
8BF194B02EBE7221006A27E0 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1942C2EBE7221006A27E0 /* AUOutputElement.cpp */; };
8BF194B22EBE7221006A27E0 /* AUPlugInDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1942E2EBE7221006A27E0 /* AUPlugInDispatch.cpp */; };
8BF194B32EBE7221006A27E0 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1942F2EBE7221006A27E0 /* AUOutputElement.h */; };
8BF194B42EBE7221006A27E0 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194302EBE7221006A27E0 /* AUDispatch.cpp */; };
8BF194B52EBE7221006A27E0 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194312EBE7221006A27E0 /* AUScopeElement.h */; };
8BF194B62EBE7221006A27E0 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194322EBE7221006A27E0 /* AUInputElement.cpp */; };
8BF194B72EBE7221006A27E0 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194342EBE7221006A27E0 /* AUEffectBase.cpp */; };
8BF194B82EBE7221006A27E0 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194352EBE7221006A27E0 /* AUEffectBase.h */; };
8BF194B92EBE7221006A27E0 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194372EBE7221006A27E0 /* AUTimestampGenerator.h */; };
8BF194BA2EBE7221006A27E0 /* AUBaseHelper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF194382EBE7221006A27E0 /* AUBaseHelper.cpp */; };
8BF194BB2EBE7221006A27E0 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF194392EBE7221006A27E0 /* AUSilentTimeout.h */; };
8BF194BC2EBE7221006A27E0 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1943A2EBE7221006A27E0 /* AUInputFormatConverter.h */; };
8BF194BD2EBE7221006A27E0 /* AUTimestampGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1943B2EBE7221006A27E0 /* AUTimestampGenerator.cpp */; };
8BF194BE2EBE7221006A27E0 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BF1943C2EBE7221006A27E0 /* AUBuffer.cpp */; };
8BF194BF2EBE7221006A27E0 /* AUMIDIDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1943D2EBE7221006A27E0 /* AUMIDIDefs.h */; };
8BF194C02EBE7221006A27E0 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1943E2EBE7221006A27E0 /* AUBuffer.h */; };
8BF194C12EBE7221006A27E0 /* AUBaseHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BF1943F2EBE7221006A27E0 /* AUBaseHelper.h */; };
8D01CCCA0486CAD60068D4B7 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
8B5C7FBF076FB2C200A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
8BA05A660720730100365D66 /* ConsoleHChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ConsoleHChannel.cpp; sourceTree = "<group>"; };
8BA05A670720730100365D66 /* ConsoleHChannel.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = ConsoleHChannel.exp; sourceTree = "<group>"; };
8BA05A680720730100365D66 /* ConsoleHChannel.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = ConsoleHChannel.r; sourceTree = "<group>"; };
8BA05A690720730100365D66 /* ConsoleHChannelVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConsoleHChannelVersion.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 /* ConsoleHChannel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ConsoleHChannel.h; sourceTree = "<group>"; };
8BF193B82EBE7221006A27E0 /* CAExtAudioFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAExtAudioFile.h; sourceTree = "<group>"; };
8BF193B92EBE7221006A27E0 /* CACFMachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMachPort.h; sourceTree = "<group>"; };
8BF193BA2EBE7221006A27E0 /* CABool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABool.h; sourceTree = "<group>"; };
8BF193BB2EBE7221006A27E0 /* CAComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponent.cpp; sourceTree = "<group>"; };
8BF193BC2EBE7221006A27E0 /* CADebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugger.h; sourceTree = "<group>"; };
8BF193BD2EBE7221006A27E0 /* CACFNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFNumber.cpp; sourceTree = "<group>"; };
8BF193BE2EBE7221006A27E0 /* CAGuard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAGuard.h; sourceTree = "<group>"; };
8BF193BF2EBE7221006A27E0 /* CAAtomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomic.h; sourceTree = "<group>"; };
8BF193C02EBE7221006A27E0 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamBasicDescription.h; sourceTree = "<group>"; };
8BF193C12EBE7221006A27E0 /* CACFObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFObject.h; sourceTree = "<group>"; };
8BF193C22EBE7221006A27E0 /* CAStreamRangedDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAStreamRangedDescription.h; sourceTree = "<group>"; };
8BF193C32EBE7221006A27E0 /* CATokenMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATokenMap.h; sourceTree = "<group>"; };
8BF193C42EBE7221006A27E0 /* CAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponent.h; sourceTree = "<group>"; };
8BF193C52EBE7221006A27E0 /* CAAudioBufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioBufferList.h; sourceTree = "<group>"; };
8BF193C62EBE7221006A27E0 /* CAAudioUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnit.h; sourceTree = "<group>"; };
8BF193C72EBE7221006A27E0 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUParameter.h; sourceTree = "<group>"; };
8BF193C82EBE7221006A27E0 /* CAException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAException.h; sourceTree = "<group>"; };
8BF193C92EBE7221006A27E0 /* CAAUProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUProcessor.cpp; sourceTree = "<group>"; };
8BF193CA2EBE7221006A27E0 /* CAAUProcessor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUProcessor.h; sourceTree = "<group>"; };
8BF193CB2EBE7221006A27E0 /* CAProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAProcess.h; sourceTree = "<group>"; };
8BF193CC2EBE7221006A27E0 /* CACFDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDictionary.h; sourceTree = "<group>"; };
8BF193CD2EBE7221006A27E0 /* CAPThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPThread.h; sourceTree = "<group>"; };
8BF193CE2EBE7221006A27E0 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUParameter.cpp; sourceTree = "<group>"; };
8BF193CF2EBE7221006A27E0 /* CAAudioTimeStamp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioTimeStamp.h; sourceTree = "<group>"; };
8BF193D02EBE7221006A27E0 /* CAFilePathUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAFilePathUtils.cpp; sourceTree = "<group>"; };
8BF193D12EBE7221006A27E0 /* CAAudioValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioValueRange.h; sourceTree = "<group>"; };
8BF193D22EBE7221006A27E0 /* CAVectorUnitTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnitTypes.h; sourceTree = "<group>"; };
8BF193D32EBE7221006A27E0 /* CAAudioChannelLayoutObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayoutObject.cpp; sourceTree = "<group>"; };
8BF193D42EBE7221006A27E0 /* CAGuard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAGuard.cpp; sourceTree = "<group>"; };
8BF193D52EBE7221006A27E0 /* CACFNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFNumber.h; sourceTree = "<group>"; };
8BF193D62EBE7221006A27E0 /* CACFDistributedNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDistributedNotification.cpp; sourceTree = "<group>"; };
8BF193D72EBE7221006A27E0 /* CACFString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFString.h; sourceTree = "<group>"; };
8BF193D82EBE7221006A27E0 /* CAAUMIDIMapManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMapManager.cpp; sourceTree = "<group>"; };
8BF193D92EBE7221006A27E0 /* CAComponentDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAComponentDescription.cpp; sourceTree = "<group>"; };
8BF193DA2EBE7221006A27E0 /* CAHostTimeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAHostTimeBase.h; sourceTree = "<group>"; };
8BF193DB2EBE7221006A27E0 /* CADebugMacros.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugMacros.cpp; sourceTree = "<group>"; };
8BF193DC2EBE7221006A27E0 /* CAAudioFileFormats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioFileFormats.h; sourceTree = "<group>"; };
8BF193DD2EBE7221006A27E0 /* CAAUMIDIMapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMapManager.h; sourceTree = "<group>"; };
8BF193DE2EBE7221006A27E0 /* CACFDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFDictionary.cpp; sourceTree = "<group>"; };
8BF193DF2EBE7221006A27E0 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMutex.h; sourceTree = "<group>"; };
8BF193E02EBE7221006A27E0 /* CACFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFString.cpp; sourceTree = "<group>"; };
8BF193E12EBE7221006A27E0 /* CASettingsStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASettingsStorage.h; sourceTree = "<group>"; };
8BF193E22EBE7221006A27E0 /* CADebugPrintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugPrintf.h; sourceTree = "<group>"; };
8BF193E32EBE7221006A27E0 /* CAXException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAXException.cpp; sourceTree = "<group>"; };
8BF193E42EBE7221006A27E0 /* CAAUMIDIMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAUMIDIMap.h; sourceTree = "<group>"; };
8BF193E52EBE7221006A27E0 /* AUParamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUParamInfo.h; sourceTree = "<group>"; };
8BF193E62EBE7221006A27E0 /* CABitOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABitOperations.h; sourceTree = "<group>"; };
8BF193E72EBE7221006A27E0 /* CACFPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFPreferences.cpp; sourceTree = "<group>"; };
8BF193E82EBE7221006A27E0 /* CABundleLocker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABundleLocker.h; sourceTree = "<group>"; };
8BF193E92EBE7221006A27E0 /* CAPropertyAddress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAPropertyAddress.h; sourceTree = "<group>"; };
8BF193EA2EBE7221006A27E0 /* CAXException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAXException.h; sourceTree = "<group>"; };
8BF193EB2EBE7221006A27E0 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioChannelLayout.cpp; sourceTree = "<group>"; };
8BF193EC2EBE7221006A27E0 /* CAThreadSafeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAThreadSafeList.h; sourceTree = "<group>"; };
8BF193ED2EBE7221006A27E0 /* CAAudioUnitOutputCapturer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioUnitOutputCapturer.h; sourceTree = "<group>"; };
8BF193EE2EBE7221006A27E0 /* AUParamInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUParamInfo.cpp; sourceTree = "<group>"; };
8BF193EF2EBE7221006A27E0 /* CASharedLibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASharedLibrary.cpp; sourceTree = "<group>"; };
8BF193F02EBE7221006A27E0 /* CAAUMIDIMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAUMIDIMap.cpp; sourceTree = "<group>"; };
8BF193F12EBE7221006A27E0 /* CALogMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CALogMacros.h; sourceTree = "<group>"; };
8BF193F22EBE7221006A27E0 /* CACFMessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMessagePort.cpp; sourceTree = "<group>"; };
8BF193F32EBE7221006A27E0 /* CARingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CARingBuffer.h; sourceTree = "<group>"; };
8BF193F42EBE7221006A27E0 /* AUOutputBL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputBL.cpp; sourceTree = "<group>"; };
8BF193F52EBE7221006A27E0 /* CABufferList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CABufferList.h; sourceTree = "<group>"; };
8BF193F62EBE7221006A27E0 /* CASharedLibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CASharedLibrary.h; sourceTree = "<group>"; };
8BF193F72EBE7221006A27E0 /* CACFData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFData.h; sourceTree = "<group>"; };
8BF193F82EBE7221006A27E0 /* CAStreamRangedDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamRangedDescription.cpp; sourceTree = "<group>"; };
8BF193F92EBE7221006A27E0 /* CAPThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPThread.cpp; sourceTree = "<group>"; };
8BF193FA2EBE7221006A27E0 /* CAAutoDisposer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAutoDisposer.h; sourceTree = "<group>"; };
8BF193FB2EBE7221006A27E0 /* CACFPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPreferences.h; sourceTree = "<group>"; };
8BF193FC2EBE7221006A27E0 /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAVectorUnit.cpp; sourceTree = "<group>"; };
8BF193FD2EBE7221006A27E0 /* CAComponentDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAComponentDescription.h; sourceTree = "<group>"; };
8BF193FE2EBE7221006A27E0 /* CADebugMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CADebugMacros.h; sourceTree = "<group>"; };
8BF193FF2EBE7221006A27E0 /* AUOutputBL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputBL.h; sourceTree = "<group>"; };
8BF194002EBE7221006A27E0 /* CADebugPrintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugPrintf.cpp; sourceTree = "<group>"; };
8BF194012EBE7221006A27E0 /* CARingBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CARingBuffer.cpp; sourceTree = "<group>"; };
8BF194022EBE7221006A27E0 /* CACFPlugIn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFPlugIn.h; sourceTree = "<group>"; };
8BF194032EBE7221006A27E0 /* CASettingsStorage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CASettingsStorage.cpp; sourceTree = "<group>"; };
8BF194042EBE7221006A27E0 /* CAMixMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMixMap.h; sourceTree = "<group>"; };
8BF194052EBE7221006A27E0 /* CACFDistributedNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFDistributedNotification.h; sourceTree = "<group>"; };
8BF194062EBE7221006A27E0 /* CAFilePathUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAFilePathUtils.h; sourceTree = "<group>"; };
8BF194072EBE7221006A27E0 /* CATink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CATink.h; sourceTree = "<group>"; };
8BF194082EBE7221006A27E0 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAStreamBasicDescription.cpp; sourceTree = "<group>"; };
8BF194092EBE7221006A27E0 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAudioChannelLayout.h; sourceTree = "<group>"; };
8BF1940A2EBE7221006A27E0 /* CAProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAProcess.cpp; sourceTree = "<group>"; };
8BF1940B2EBE7221006A27E0 /* CAHostTimeBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAHostTimeBase.cpp; sourceTree = "<group>"; };
8BF1940C2EBE7221006A27E0 /* CAPersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAPersistence.cpp; sourceTree = "<group>"; };
8BF1940D2EBE7221006A27E0 /* CAAudioBufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioBufferList.cpp; sourceTree = "<group>"; };
8BF1940E2EBE7221006A27E0 /* CAAudioTimeStamp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioTimeStamp.cpp; sourceTree = "<group>"; };
8BF1940F2EBE7221006A27E0 /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAVectorUnit.h; sourceTree = "<group>"; };
8BF194102EBE7221006A27E0 /* CAByteOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAByteOrder.h; sourceTree = "<group>"; };
8BF194112EBE7221006A27E0 /* CACFArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFArray.h; sourceTree = "<group>"; };
8BF194122EBE7221006A27E0 /* CAAtomicStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAAtomicStack.h; sourceTree = "<group>"; };
8BF194132EBE7221006A27E0 /* CAReferenceCounted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAReferenceCounted.h; sourceTree = "<group>"; };
8BF194142EBE7221006A27E0 /* CACFMachPort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFMachPort.cpp; sourceTree = "<group>"; };
8BF194152EBE7221006A27E0 /* CABufferList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABufferList.cpp; sourceTree = "<group>"; };
8BF194162EBE7221006A27E0 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAMutex.cpp; sourceTree = "<group>"; };
8BF194172EBE7221006A27E0 /* CADebugger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CADebugger.cpp; sourceTree = "<group>"; };
8BF194182EBE7221006A27E0 /* CABundleLocker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CABundleLocker.cpp; sourceTree = "<group>"; };
8BF194192EBE7221006A27E0 /* CAAudioFileFormats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioFileFormats.cpp; sourceTree = "<group>"; };
8BF1941A2EBE7221006A27E0 /* CAMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CAMath.h; sourceTree = "<group>"; };
8BF1941B2EBE7221006A27E0 /* CACFArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CACFArray.cpp; sourceTree = "<group>"; };
8BF1941C2EBE7221006A27E0 /* CACFMessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CACFMessagePort.h; sourceTree = "<group>"; };
8BF1941D2EBE7221006A27E0 /* CAAudioValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioValueRange.cpp; sourceTree = "<group>"; };
8BF1941E2EBE7221006A27E0 /* CAAudioUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CAAudioUnit.cpp; sourceTree = "<group>"; };
8BF194222EBE7221006A27E0 /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = "<group>"; };
8BF194242EBE7221006A27E0 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = "<group>"; };
8BF194252EBE7221006A27E0 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = "<group>"; };
8BF194262EBE7221006A27E0 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = "<group>"; };
8BF194272EBE7221006A27E0 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = "<group>"; };
8BF194282EBE7221006A27E0 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = "<group>"; };
8BF194292EBE7221006A27E0 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = "<group>"; };
8BF1942A2EBE7221006A27E0 /* AUPlugInDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUPlugInDispatch.h; sourceTree = "<group>"; };
8BF1942B2EBE7221006A27E0 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = "<group>"; };
8BF1942C2EBE7221006A27E0 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = "<group>"; };
8BF1942D2EBE7221006A27E0 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = "<group>"; };
8BF1942E2EBE7221006A27E0 /* AUPlugInDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUPlugInDispatch.cpp; sourceTree = "<group>"; };
8BF1942F2EBE7221006A27E0 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = "<group>"; };
8BF194302EBE7221006A27E0 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = "<group>"; };
8BF194312EBE7221006A27E0 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = "<group>"; };
8BF194322EBE7221006A27E0 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = "<group>"; };
8BF194342EBE7221006A27E0 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = "<group>"; };
8BF194352EBE7221006A27E0 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = "<group>"; };
8BF194372EBE7221006A27E0 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = "<group>"; };
8BF194382EBE7221006A27E0 /* AUBaseHelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBaseHelper.cpp; sourceTree = "<group>"; };
8BF194392EBE7221006A27E0 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = "<group>"; };
8BF1943A2EBE7221006A27E0 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = "<group>"; };
8BF1943B2EBE7221006A27E0 /* AUTimestampGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUTimestampGenerator.cpp; sourceTree = "<group>"; };
8BF1943C2EBE7221006A27E0 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = "<group>"; };
8BF1943D2EBE7221006A27E0 /* AUMIDIDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUMIDIDefs.h; sourceTree = "<group>"; };
8BF1943E2EBE7221006A27E0 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = "<group>"; };
8BF1943F2EBE7221006A27E0 /* AUBaseHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AUBaseHelper.h; sourceTree = "<group>"; };
8BF194C22EBE731E006A27E0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
8D01CCD20486CAD60068D4B7 /* ConsoleHChannel.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ConsoleHChannel.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 /* ConsoleHChannel */ = {
isa = PBXGroup;
children = (
08FB77ADFE841716C02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
19C28FB4FE9D528D11CA2CBB /* Products */,
);
name = ConsoleHChannel;
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 = (
8BF193B62EBE7221006A27E0 /* CA_SDK */,
8BA05A56072072A900365D66 /* AU Source */,
);
name = Source;
sourceTree = "<group>";
};
19C28FB4FE9D528D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D01CCD20486CAD60068D4B7 /* ConsoleHChannel.component */,
);
name = Products;
sourceTree = "<group>";
};
8BA05A56072072A900365D66 /* AU Source */ = {
isa = PBXGroup;
children = (
8BC6025B073B072D006C4272 /* ConsoleHChannel.h */,
8BA05A660720730100365D66 /* ConsoleHChannel.cpp */,
8BA05A670720730100365D66 /* ConsoleHChannel.exp */,
8BA05A680720730100365D66 /* ConsoleHChannel.r */,
8BA05A690720730100365D66 /* ConsoleHChannelVersion.h */,
);
name = "AU Source";
sourceTree = "<group>";
};
8BF193B62EBE7221006A27E0 /* CA_SDK */ = {
isa = PBXGroup;
children = (
8BF193B72EBE7221006A27E0 /* PublicUtility */,
8BF1941F2EBE7221006A27E0 /* AudioUnits */,
);
name = CA_SDK;
path = ../../../../CA_SDK;
sourceTree = "<group>";
};
8BF193B72EBE7221006A27E0 /* PublicUtility */ = {
isa = PBXGroup;
children = (
8BF193B82EBE7221006A27E0 /* CAExtAudioFile.h */,
8BF193B92EBE7221006A27E0 /* CACFMachPort.h */,
8BF193BA2EBE7221006A27E0 /* CABool.h */,
8BF193BB2EBE7221006A27E0 /* CAComponent.cpp */,
8BF193BC2EBE7221006A27E0 /* CADebugger.h */,
8BF193BD2EBE7221006A27E0 /* CACFNumber.cpp */,
8BF193BE2EBE7221006A27E0 /* CAGuard.h */,
8BF193BF2EBE7221006A27E0 /* CAAtomic.h */,
8BF193C02EBE7221006A27E0 /* CAStreamBasicDescription.h */,
8BF193C12EBE7221006A27E0 /* CACFObject.h */,
8BF193C22EBE7221006A27E0 /* CAStreamRangedDescription.h */,
8BF193C32EBE7221006A27E0 /* CATokenMap.h */,
8BF193C42EBE7221006A27E0 /* CAComponent.h */,
8BF193C52EBE7221006A27E0 /* CAAudioBufferList.h */,
8BF193C62EBE7221006A27E0 /* CAAudioUnit.h */,
8BF193C72EBE7221006A27E0 /* CAAUParameter.h */,
8BF193C82EBE7221006A27E0 /* CAException.h */,
8BF193C92EBE7221006A27E0 /* CAAUProcessor.cpp */,
8BF193CA2EBE7221006A27E0 /* CAAUProcessor.h */,
8BF193CB2EBE7221006A27E0 /* CAProcess.h */,
8BF193CC2EBE7221006A27E0 /* CACFDictionary.h */,
8BF193CD2EBE7221006A27E0 /* CAPThread.h */,
8BF193CE2EBE7221006A27E0 /* CAAUParameter.cpp */,
8BF193CF2EBE7221006A27E0 /* CAAudioTimeStamp.h */,
8BF193D02EBE7221006A27E0 /* CAFilePathUtils.cpp */,
8BF193D12EBE7221006A27E0 /* CAAudioValueRange.h */,
8BF193D22EBE7221006A27E0 /* CAVectorUnitTypes.h */,
8BF193D32EBE7221006A27E0 /* CAAudioChannelLayoutObject.cpp */,
8BF193D42EBE7221006A27E0 /* CAGuard.cpp */,
8BF193D52EBE7221006A27E0 /* CACFNumber.h */,
8BF193D62EBE7221006A27E0 /* CACFDistributedNotification.cpp */,
8BF193D72EBE7221006A27E0 /* CACFString.h */,
8BF193D82EBE7221006A27E0 /* CAAUMIDIMapManager.cpp */,
8BF193D92EBE7221006A27E0 /* CAComponentDescription.cpp */,
8BF193DA2EBE7221006A27E0 /* CAHostTimeBase.h */,
8BF193DB2EBE7221006A27E0 /* CADebugMacros.cpp */,
8BF193DC2EBE7221006A27E0 /* CAAudioFileFormats.h */,
8BF193DD2EBE7221006A27E0 /* CAAUMIDIMapManager.h */,
8BF193DE2EBE7221006A27E0 /* CACFDictionary.cpp */,
8BF193DF2EBE7221006A27E0 /* CAMutex.h */,
8BF193E02EBE7221006A27E0 /* CACFString.cpp */,
8BF193E12EBE7221006A27E0 /* CASettingsStorage.h */,
8BF193E22EBE7221006A27E0 /* CADebugPrintf.h */,
8BF193E32EBE7221006A27E0 /* CAXException.cpp */,
8BF193E42EBE7221006A27E0 /* CAAUMIDIMap.h */,
8BF193E52EBE7221006A27E0 /* AUParamInfo.h */,
8BF193E62EBE7221006A27E0 /* CABitOperations.h */,
8BF193E72EBE7221006A27E0 /* CACFPreferences.cpp */,
8BF193E82EBE7221006A27E0 /* CABundleLocker.h */,
8BF193E92EBE7221006A27E0 /* CAPropertyAddress.h */,
8BF193EA2EBE7221006A27E0 /* CAXException.h */,
8BF193EB2EBE7221006A27E0 /* CAAudioChannelLayout.cpp */,
8BF193EC2EBE7221006A27E0 /* CAThreadSafeList.h */,
8BF193ED2EBE7221006A27E0 /* CAAudioUnitOutputCapturer.h */,
8BF193EE2EBE7221006A27E0 /* AUParamInfo.cpp */,
8BF193EF2EBE7221006A27E0 /* CASharedLibrary.cpp */,
8BF193F02EBE7221006A27E0 /* CAAUMIDIMap.cpp */,
8BF193F12EBE7221006A27E0 /* CALogMacros.h */,
8BF193F22EBE7221006A27E0 /* CACFMessagePort.cpp */,
8BF193F32EBE7221006A27E0 /* CARingBuffer.h */,
8BF193F42EBE7221006A27E0 /* AUOutputBL.cpp */,
8BF193F52EBE7221006A27E0 /* CABufferList.h */,
8BF193F62EBE7221006A27E0 /* CASharedLibrary.h */,
8BF193F72EBE7221006A27E0 /* CACFData.h */,
8BF193F82EBE7221006A27E0 /* CAStreamRangedDescription.cpp */,
8BF193F92EBE7221006A27E0 /* CAPThread.cpp */,
8BF193FA2EBE7221006A27E0 /* CAAutoDisposer.h */,
8BF193FB2EBE7221006A27E0 /* CACFPreferences.h */,
8BF193FC2EBE7221006A27E0 /* CAVectorUnit.cpp */,
8BF193FD2EBE7221006A27E0 /* CAComponentDescription.h */,
8BF193FE2EBE7221006A27E0 /* CADebugMacros.h */,
8BF193FF2EBE7221006A27E0 /* AUOutputBL.h */,
8BF194002EBE7221006A27E0 /* CADebugPrintf.cpp */,
8BF194012EBE7221006A27E0 /* CARingBuffer.cpp */,
8BF194022EBE7221006A27E0 /* CACFPlugIn.h */,
8BF194032EBE7221006A27E0 /* CASettingsStorage.cpp */,
8BF194042EBE7221006A27E0 /* CAMixMap.h */,
8BF194052EBE7221006A27E0 /* CACFDistributedNotification.h */,
8BF194062EBE7221006A27E0 /* CAFilePathUtils.h */,
8BF194072EBE7221006A27E0 /* CATink.h */,
8BF194082EBE7221006A27E0 /* CAStreamBasicDescription.cpp */,
8BF194092EBE7221006A27E0 /* CAAudioChannelLayout.h */,
8BF1940A2EBE7221006A27E0 /* CAProcess.cpp */,
8BF1940B2EBE7221006A27E0 /* CAHostTimeBase.cpp */,
8BF1940C2EBE7221006A27E0 /* CAPersistence.cpp */,
8BF1940D2EBE7221006A27E0 /* CAAudioBufferList.cpp */,
8BF1940E2EBE7221006A27E0 /* CAAudioTimeStamp.cpp */,
8BF1940F2EBE7221006A27E0 /* CAVectorUnit.h */,
8BF194102EBE7221006A27E0 /* CAByteOrder.h */,
8BF194112EBE7221006A27E0 /* CACFArray.h */,
8BF194122EBE7221006A27E0 /* CAAtomicStack.h */,
8BF194132EBE7221006A27E0 /* CAReferenceCounted.h */,
8BF194142EBE7221006A27E0 /* CACFMachPort.cpp */,
8BF194152EBE7221006A27E0 /* CABufferList.cpp */,
8BF194162EBE7221006A27E0 /* CAMutex.cpp */,
8BF194172EBE7221006A27E0 /* CADebugger.cpp */,
8BF194182EBE7221006A27E0 /* CABundleLocker.cpp */,
8BF194192EBE7221006A27E0 /* CAAudioFileFormats.cpp */,
8BF1941A2EBE7221006A27E0 /* CAMath.h */,
8BF1941B2EBE7221006A27E0 /* CACFArray.cpp */,
8BF1941C2EBE7221006A27E0 /* CACFMessagePort.h */,
8BF1941D2EBE7221006A27E0 /* CAAudioValueRange.cpp */,
8BF1941E2EBE7221006A27E0 /* CAAudioUnit.cpp */,
);
path = PublicUtility;
sourceTree = "<group>";
};
8BF1941F2EBE7221006A27E0 /* AudioUnits */ = {
isa = PBXGroup;
children = (
8BF194202EBE7221006A27E0 /* AUPublic */,
);
path = AudioUnits;
sourceTree = "<group>";
};
8BF194202EBE7221006A27E0 /* AUPublic */ = {
isa = PBXGroup;
children = (
8BF194212EBE7221006A27E0 /* AUViewBase */,
8BF194232EBE7221006A27E0 /* AUBase */,
8BF194332EBE7221006A27E0 /* OtherBases */,
8BF194362EBE7221006A27E0 /* Utility */,
);
path = AUPublic;
sourceTree = "<group>";
};
8BF194212EBE7221006A27E0 /* AUViewBase */ = {
isa = PBXGroup;
children = (
8BF194222EBE7221006A27E0 /* AUViewLocalizedStringKeys.h */,
);
path = AUViewBase;
sourceTree = "<group>";
};
8BF194232EBE7221006A27E0 /* AUBase */ = {
isa = PBXGroup;
children = (
8BF194242EBE7221006A27E0 /* ComponentBase.cpp */,
8BF194252EBE7221006A27E0 /* AUScopeElement.cpp */,
8BF194262EBE7221006A27E0 /* ComponentBase.h */,
8BF194272EBE7221006A27E0 /* AUBase.cpp */,
8BF194282EBE7221006A27E0 /* AUInputElement.h */,
8BF194292EBE7221006A27E0 /* AUBase.h */,
8BF1942A2EBE7221006A27E0 /* AUPlugInDispatch.h */,
8BF1942B2EBE7221006A27E0 /* AUDispatch.h */,
8BF1942C2EBE7221006A27E0 /* AUOutputElement.cpp */,
8BF1942D2EBE7221006A27E0 /* AUResources.r */,
8BF1942E2EBE7221006A27E0 /* AUPlugInDispatch.cpp */,
8BF1942F2EBE7221006A27E0 /* AUOutputElement.h */,
8BF194302EBE7221006A27E0 /* AUDispatch.cpp */,
8BF194312EBE7221006A27E0 /* AUScopeElement.h */,
8BF194322EBE7221006A27E0 /* AUInputElement.cpp */,
);
path = AUBase;
sourceTree = "<group>";
};
8BF194332EBE7221006A27E0 /* OtherBases */ = {
isa = PBXGroup;
children = (
8BF194342EBE7221006A27E0 /* AUEffectBase.cpp */,
8BF194352EBE7221006A27E0 /* AUEffectBase.h */,
);
path = OtherBases;
sourceTree = "<group>";
};
8BF194362EBE7221006A27E0 /* Utility */ = {
isa = PBXGroup;
children = (
8BF194372EBE7221006A27E0 /* AUTimestampGenerator.h */,
8BF194382EBE7221006A27E0 /* AUBaseHelper.cpp */,
8BF194392EBE7221006A27E0 /* AUSilentTimeout.h */,
8BF1943A2EBE7221006A27E0 /* AUInputFormatConverter.h */,
8BF1943B2EBE7221006A27E0 /* AUTimestampGenerator.cpp */,
8BF1943C2EBE7221006A27E0 /* AUBuffer.cpp */,
8BF1943D2EBE7221006A27E0 /* AUMIDIDefs.h */,
8BF1943E2EBE7221006A27E0 /* AUBuffer.h */,
8BF1943F2EBE7221006A27E0 /* AUBaseHelper.h */,
);
path = Utility;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8D01CCC70486CAD60068D4B7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
8BF194702EBE7221006A27E0 /* CABundleLocker.h in Headers */,
8BF194912EBE7221006A27E0 /* CAAudioChannelLayout.h in Headers */,
8BF194872EBE7221006A27E0 /* AUOutputBL.h in Headers */,
8BF194622EBE7221006A27E0 /* CAHostTimeBase.h in Headers */,
8BF194AA2EBE7221006A27E0 /* ComponentBase.h in Headers */,
8BF1949A2EBE7221006A27E0 /* CAAtomicStack.h in Headers */,
8BF194572EBE7221006A27E0 /* CAAudioTimeStamp.h in Headers */,
8BF194742EBE7221006A27E0 /* CAThreadSafeList.h in Headers */,
8BF1944F2EBE7221006A27E0 /* CAAUParameter.h in Headers */,
8BF194C12EBE7221006A27E0 /* AUBaseHelper.h in Headers */,
8BF194B92EBE7221006A27E0 /* AUTimestampGenerator.h in Headers */,
8BF1946A2EBE7221006A27E0 /* CADebugPrintf.h in Headers */,
8BF194A42EBE7221006A27E0 /* CACFMessagePort.h in Headers */,
8BF194522EBE7221006A27E0 /* CAAUProcessor.h in Headers */,
8BF1944E2EBE7221006A27E0 /* CAAudioUnit.h in Headers */,
8BF194A72EBE7221006A27E0 /* AUViewLocalizedStringKeys.h in Headers */,
8BF1948D2EBE7221006A27E0 /* CACFDistributedNotification.h in Headers */,
8BF1944C2EBE7221006A27E0 /* CAComponent.h in Headers */,
8BF1945A2EBE7221006A27E0 /* CAVectorUnitTypes.h in Headers */,
8BA05A6E0720730100365D66 /* ConsoleHChannelVersion.h in Headers */,
8BF1948E2EBE7221006A27E0 /* CAFilePathUtils.h in Headers */,
8BF194502EBE7221006A27E0 /* CAException.h in Headers */,
8BF194472EBE7221006A27E0 /* CAAtomic.h in Headers */,
8BF194462EBE7221006A27E0 /* CAGuard.h in Headers */,
8BF194AC2EBE7221006A27E0 /* AUInputElement.h in Headers */,
8BF194832EBE7221006A27E0 /* CACFPreferences.h in Headers */,
8BF194982EBE7221006A27E0 /* CAByteOrder.h in Headers */,
8BF1947B2EBE7221006A27E0 /* CARingBuffer.h in Headers */,
8BF194422EBE7221006A27E0 /* CABool.h in Headers */,
8BF194672EBE7221006A27E0 /* CAMutex.h in Headers */,
8BF194AD2EBE7221006A27E0 /* AUBase.h in Headers */,
8BC6025C073B072D006C4272 /* ConsoleHChannel.h in Headers */,
8BF1945F2EBE7221006A27E0 /* CACFString.h in Headers */,
8BF1947E2EBE7221006A27E0 /* CASharedLibrary.h in Headers */,
8BF1944B2EBE7221006A27E0 /* CATokenMap.h in Headers */,
8BF194402EBE7221006A27E0 /* CAExtAudioFile.h in Headers */,
8BF194552EBE7221006A27E0 /* CAPThread.h in Headers */,
8BF194712EBE7221006A27E0 /* CAPropertyAddress.h in Headers */,
8BF1949B2EBE7221006A27E0 /* CAReferenceCounted.h in Headers */,
8BF194C02EBE7221006A27E0 /* AUBuffer.h in Headers */,
8BF194A22EBE7221006A27E0 /* CAMath.h in Headers */,
8BF194822EBE7221006A27E0 /* CAAutoDisposer.h in Headers */,
8BF194492EBE7221006A27E0 /* CACFObject.h in Headers */,
8BF194692EBE7221006A27E0 /* CASettingsStorage.h in Headers */,
8BF194722EBE7221006A27E0 /* CAXException.h in Headers */,
8BF1948F2EBE7221006A27E0 /* CATink.h in Headers */,
8BF194BC2EBE7221006A27E0 /* AUInputFormatConverter.h in Headers */,
8BF194972EBE7221006A27E0 /* CAVectorUnit.h in Headers */,
8BF194532EBE7221006A27E0 /* CAProcess.h in Headers */,
8BF194592EBE7221006A27E0 /* CAAudioValueRange.h in Headers */,
8BF1946E2EBE7221006A27E0 /* CABitOperations.h in Headers */,
8BF194642EBE7221006A27E0 /* CAAudioFileFormats.h in Headers */,
8BF1945D2EBE7221006A27E0 /* CACFNumber.h in Headers */,
8BF194752EBE7221006A27E0 /* CAAudioUnitOutputCapturer.h in Headers */,
8BF194862EBE7221006A27E0 /* CADebugMacros.h in Headers */,
8BF194BF2EBE7221006A27E0 /* AUMIDIDefs.h in Headers */,
8BF1947F2EBE7221006A27E0 /* CACFData.h in Headers */,
8BF194482EBE7221006A27E0 /* CAStreamBasicDescription.h in Headers */,
8BF194AE2EBE7221006A27E0 /* AUPlugInDispatch.h in Headers */,
8BF1944A2EBE7221006A27E0 /* CAStreamRangedDescription.h in Headers */,
8BF1948A2EBE7221006A27E0 /* CACFPlugIn.h in Headers */,
8BF1944D2EBE7221006A27E0 /* CAAudioBufferList.h in Headers */,
8BF194652EBE7221006A27E0 /* CAAUMIDIMapManager.h in Headers */,
8BF194B82EBE7221006A27E0 /* AUEffectBase.h in Headers */,
8BF194542EBE7221006A27E0 /* CACFDictionary.h in Headers */,
8BF194B52EBE7221006A27E0 /* AUScopeElement.h in Headers */,
8BF194852EBE7221006A27E0 /* CAComponentDescription.h in Headers */,
8BF194BB2EBE7221006A27E0 /* AUSilentTimeout.h in Headers */,
8BF1947D2EBE7221006A27E0 /* CABufferList.h in Headers */,
8BF194AF2EBE7221006A27E0 /* AUDispatch.h in Headers */,
8BF194B32EBE7221006A27E0 /* AUOutputElement.h in Headers */,
8BF194792EBE7221006A27E0 /* CALogMacros.h in Headers */,
8BF1946D2EBE7221006A27E0 /* AUParamInfo.h in Headers */,
8BF1948C2EBE7221006A27E0 /* CAMixMap.h in Headers */,
8BF194992EBE7221006A27E0 /* CACFArray.h in Headers */,
8BF194412EBE7221006A27E0 /* CACFMachPort.h in Headers */,
8BF1946C2EBE7221006A27E0 /* CAAUMIDIMap.h in Headers */,
8BF194442EBE7221006A27E0 /* CADebugger.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */ = {
isa = PBXNativeTarget;
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "ConsoleHChannel" */;
buildPhases = (
8D01CCC70486CAD60068D4B7 /* Headers */,
8D01CCC90486CAD60068D4B7 /* Resources */,
8D01CCCB0486CAD60068D4B7 /* Sources */,
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = ConsoleHChannel;
productInstallPath = "$(HOME)/Library/Bundles";
productName = ConsoleHChannel;
productReference = 8D01CCD20486CAD60068D4B7 /* ConsoleHChannel.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 "ConsoleHChannel" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
ja,
fr,
Base,
en,
de,
);
mainGroup = 089C166AFE841209C02AAC07 /* ConsoleHChannel */;
projectDirPath = "";
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* ConsoleHChannel */,
);
};
/* 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 = (
8BF1947C2EBE7221006A27E0 /* AUOutputBL.cpp in Sources */,
8BF194A12EBE7221006A27E0 /* CAAudioFileFormats.cpp in Sources */,
8BF194932EBE7221006A27E0 /* CAHostTimeBase.cpp in Sources */,
8BF1946B2EBE7221006A27E0 /* CAXException.cpp in Sources */,
8BF194952EBE7221006A27E0 /* CAAudioBufferList.cpp in Sources */,
8BF194582EBE7221006A27E0 /* CAFilePathUtils.cpp in Sources */,
8BF194562EBE7221006A27E0 /* CAAUParameter.cpp in Sources */,
8BF194782EBE7221006A27E0 /* CAAUMIDIMap.cpp in Sources */,
8BF194A52EBE7221006A27E0 /* CAAudioValueRange.cpp in Sources */,
8BF194B42EBE7221006A27E0 /* AUDispatch.cpp in Sources */,
8BF1946F2EBE7221006A27E0 /* CACFPreferences.cpp in Sources */,
8BF194B22EBE7221006A27E0 /* AUPlugInDispatch.cpp in Sources */,
8BF194512EBE7221006A27E0 /* CAAUProcessor.cpp in Sources */,
8BF194662EBE7221006A27E0 /* CACFDictionary.cpp in Sources */,
8BF194BA2EBE7221006A27E0 /* AUBaseHelper.cpp in Sources */,
8BF1949F2EBE7221006A27E0 /* CADebugger.cpp in Sources */,
8BF194732EBE7221006A27E0 /* CAAudioChannelLayout.cpp in Sources */,
8BF194762EBE7221006A27E0 /* AUParamInfo.cpp in Sources */,
8BF194942EBE7221006A27E0 /* CAPersistence.cpp in Sources */,
8BF194882EBE7221006A27E0 /* CADebugPrintf.cpp in Sources */,
8BF194BD2EBE7221006A27E0 /* AUTimestampGenerator.cpp in Sources */,
8BF194902EBE7221006A27E0 /* CAStreamBasicDescription.cpp in Sources */,
8BF194602EBE7221006A27E0 /* CAAUMIDIMapManager.cpp in Sources */,
8BF1948B2EBE7221006A27E0 /* CASettingsStorage.cpp in Sources */,
8BF194B02EBE7221006A27E0 /* AUOutputElement.cpp in Sources */,
8BF1945C2EBE7221006A27E0 /* CAGuard.cpp in Sources */,
8BA05A6B0720730100365D66 /* ConsoleHChannel.cpp in Sources */,
8BF1949E2EBE7221006A27E0 /* CAMutex.cpp in Sources */,
8BF194B72EBE7221006A27E0 /* AUEffectBase.cpp in Sources */,
8BF1949C2EBE7221006A27E0 /* CACFMachPort.cpp in Sources */,
8BF194AB2EBE7221006A27E0 /* AUBase.cpp in Sources */,
8BF194772EBE7221006A27E0 /* CASharedLibrary.cpp in Sources */,
8BF1945E2EBE7221006A27E0 /* CACFDistributedNotification.cpp in Sources */,
8BF194612EBE7221006A27E0 /* CAComponentDescription.cpp in Sources */,
8BF194682EBE7221006A27E0 /* CACFString.cpp in Sources */,
8BF194A82EBE7221006A27E0 /* ComponentBase.cpp in Sources */,
8BF194892EBE7221006A27E0 /* CARingBuffer.cpp in Sources */,
8BF194A92EBE7221006A27E0 /* AUScopeElement.cpp in Sources */,
8BF194A62EBE7221006A27E0 /* CAAudioUnit.cpp in Sources */,
8BF194A32EBE7221006A27E0 /* CACFArray.cpp in Sources */,
8BF194A02EBE7221006A27E0 /* CABundleLocker.cpp in Sources */,
8BF194922EBE7221006A27E0 /* CAProcess.cpp in Sources */,
8BF194802EBE7221006A27E0 /* CAStreamRangedDescription.cpp in Sources */,
8BF194812EBE7221006A27E0 /* CAPThread.cpp in Sources */,
8BF194432EBE7221006A27E0 /* CAComponent.cpp in Sources */,
8BF1945B2EBE7221006A27E0 /* CAAudioChannelLayoutObject.cpp in Sources */,
8BF194962EBE7221006A27E0 /* CAAudioTimeStamp.cpp in Sources */,
8BF1949D2EBE7221006A27E0 /* CABufferList.cpp in Sources */,
8BF1947A2EBE7221006A27E0 /* CACFMessagePort.cpp in Sources */,
8BF194842EBE7221006A27E0 /* CAVectorUnit.cpp in Sources */,
8BF194B62EBE7221006A27E0 /* AUInputElement.cpp in Sources */,
8BF194BE2EBE7221006A27E0 /* AUBuffer.cpp in Sources */,
8BF194632EBE7221006A27E0 /* CADebugMacros.cpp in Sources */,
8BF194452EBE7221006A27E0 /* CACFNumber.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C167DFE841241C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
8BF194C22EBE731E006A27E0 /* 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 = ConsoleHChannel.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 = ConsoleHChannel;
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 = ConsoleHChannel.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 = ConsoleHChannel;
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 "ConsoleHChannel" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA244089833B7007656EC /* Debug */,
3E4BA245089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "ConsoleHChannel" */ = {
isa = XCConfigurationList;
buildConfigurations = (
3E4BA248089833B7007656EC /* Debug */,
3E4BA249089833B7007656EC /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
};
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
}

View file

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

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "ConsoleHChannel.component"
BlueprintName = "ConsoleHChannel"
ReferencedContainer = "container:ConsoleHChannel.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 = "ConsoleHChannel.component"
BlueprintName = "ConsoleHChannel"
ReferencedContainer = "container:ConsoleHChannel.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>ConsoleHChannel.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>8D01CCC60486CAD60068D4B7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,58 @@
/*
* File: ConsoleHChannelVersion.h
*
* Version: 1.0
*
* Created: 11/4/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 __ConsoleHChannelVersion_h__
#define __ConsoleHChannelVersion_h__
#ifdef DEBUG
#define kConsoleHChannelVersion 0xFFFFFFFF
#else
#define kConsoleHChannelVersion 0x00010000
#endif
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
#define ConsoleHChannel_COMP_MANF 'Dthr'
#define ConsoleHChannel_COMP_SUBTYPE 'chpc'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
#endif

View file

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

View file

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

View file

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

View file

@ -0,0 +1,847 @@
/*
* File: ConsoleHPre.cpp
*
* Version: 1.0
*
* Created: 11/4/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.
*
*/
/*=============================================================================
ConsoleHPre.cpp
=============================================================================*/
#include "ConsoleHPre.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AUDIOCOMPONENT_ENTRY(AUBaseFactory, ConsoleHPre)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPre
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ConsoleHPre::ConsoleHPre(AudioUnit component)
: AUEffectBase(component)
{
CreateElements();
Globals()->UseIndexedParameters(kNumberOfParameters);
SetParameter(kParam_TRM, kDefaultValue_ParamTRM );
SetParameter(kParam_MOR, kDefaultValue_ParamMOR );
SetParameter(kParam_HIG, kDefaultValue_ParamHIG );
SetParameter(kParam_MID, kDefaultValue_ParamMID );
SetParameter(kParam_LOW, kDefaultValue_ParamLOW );
SetParameter(kParam_CRS, kDefaultValue_ParamCRS );
SetParameter(kParam_TRF, kDefaultValue_ParamTRF );
SetParameter(kParam_TRG, kDefaultValue_ParamTRG );
SetParameter(kParam_TRB, kDefaultValue_ParamTRB );
SetParameter(kParam_HMF, kDefaultValue_ParamHMF );
SetParameter(kParam_HMG, kDefaultValue_ParamHMG );
SetParameter(kParam_HMB, kDefaultValue_ParamHMB );
SetParameter(kParam_LMF, kDefaultValue_ParamLMF );
SetParameter(kParam_LMG, kDefaultValue_ParamLMG );
SetParameter(kParam_LMB, kDefaultValue_ParamLMB );
SetParameter(kParam_BSF, kDefaultValue_ParamBSF );
SetParameter(kParam_BSG, kDefaultValue_ParamBSG );
SetParameter(kParam_BSB, kDefaultValue_ParamBSB );
SetParameter(kParam_THR, kDefaultValue_ParamTHR );
SetParameter(kParam_ATK, kDefaultValue_ParamATK );
SetParameter(kParam_RLS, kDefaultValue_ParamRLS );
SetParameter(kParam_GAT, kDefaultValue_ParamGAT );
SetParameter(kParam_LOP, kDefaultValue_ParamLOP );
SetParameter(kParam_HIP, kDefaultValue_ParamHIP );
SetParameter(kParam_FAD, kDefaultValue_ParamFAD );
#if AU_DEBUG_DISPATCHER
mDebugDispatcher = new AUDebugDispatcher (this);
#endif
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetParameterValueStrings
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetParameterValueStrings(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
CFArrayRef * outStrings)
{
return kAudioUnitErr_InvalidProperty;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetParameterInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetParameterInfo(AudioUnitScope inScope,
AudioUnitParameterID inParameterID,
AudioUnitParameterInfo &outParameterInfo )
{
ComponentResult result = noErr;
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
| kAudioUnitParameterFlag_IsReadable;
if (inScope == kAudioUnitScope_Global) {
switch(inParameterID)
{
case kParam_TRM:
AUBase::FillInParameterName (outParameterInfo, kParameterTRMName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Indexed;
outParameterInfo.minValue = 0;
outParameterInfo.maxValue = 4;
outParameterInfo.defaultValue = kDefaultValue_ParamTRM;
break;
case kParam_MOR:
AUBase::FillInParameterName (outParameterInfo, kParameterMORName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMOR;
break;
case kParam_HIG:
AUBase::FillInParameterName (outParameterInfo, kParameterHIGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterHIGUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIG;
break;
case kParam_MID:
AUBase::FillInParameterName (outParameterInfo, kParameterMIDName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamMID;
break;
case kParam_LOW:
AUBase::FillInParameterName (outParameterInfo, kParameterLOWName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOW;
break;
case kParam_CRS:
AUBase::FillInParameterName (outParameterInfo, kParameterCRSName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamCRS;
break;
case kParam_TRF:
AUBase::FillInParameterName (outParameterInfo, kParameterTRFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTRFUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRF;
break;
case kParam_TRG:
AUBase::FillInParameterName (outParameterInfo, kParameterTRGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRG;
break;
case kParam_TRB:
AUBase::FillInParameterName (outParameterInfo, kParameterTRBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTRB;
break;
case kParam_HMF:
AUBase::FillInParameterName (outParameterInfo, kParameterHMFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMF;
break;
case kParam_HMG:
AUBase::FillInParameterName (outParameterInfo, kParameterHMGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMG;
break;
case kParam_HMB:
AUBase::FillInParameterName (outParameterInfo, kParameterHMBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHMB;
break;
case kParam_LMF:
AUBase::FillInParameterName (outParameterInfo, kParameterLMFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMF;
break;
case kParam_LMG:
AUBase::FillInParameterName (outParameterInfo, kParameterLMGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMG;
break;
case kParam_LMB:
AUBase::FillInParameterName (outParameterInfo, kParameterLMBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLMB;
break;
case kParam_BSF:
AUBase::FillInParameterName (outParameterInfo, kParameterBSFName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSF;
break;
case kParam_BSG:
AUBase::FillInParameterName (outParameterInfo, kParameterBSGName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSG;
break;
case kParam_BSB:
AUBase::FillInParameterName (outParameterInfo, kParameterBSBName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSB;
break;
case kParam_THR:
AUBase::FillInParameterName (outParameterInfo, kParameterTHRName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterTHRUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamTHR;
break;
case kParam_ATK:
AUBase::FillInParameterName (outParameterInfo, kParameterATKName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamATK;
break;
case kParam_RLS:
AUBase::FillInParameterName (outParameterInfo, kParameterRLSName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamRLS;
break;
case kParam_GAT:
AUBase::FillInParameterName (outParameterInfo, kParameterGATName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamGAT;
break;
case kParam_LOP:
AUBase::FillInParameterName (outParameterInfo, kParameterLOPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_CustomUnit;
outParameterInfo.unitName = kParameterLOPUnit;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOP;
break;
case kParam_HIP:
AUBase::FillInParameterName (outParameterInfo, kParameterHIPName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamHIP;
break;
case kParam_FAD:
AUBase::FillInParameterName (outParameterInfo, kParameterFADName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
outParameterInfo.minValue = 0.0;
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamFAD;
break;
default:
result = kAudioUnitErr_InvalidParameter;
break;
}
} else {
result = kAudioUnitErr_InvalidParameter;
}
return result;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetPropertyInfo
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetPropertyInfo (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
UInt32 & outDataSize,
Boolean & outWritable)
{
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::GetProperty
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::GetProperty( AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData )
{
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
}
// ConsoleHPre::Initialize
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ComponentResult ConsoleHPre::Initialize()
{
ComponentResult result = AUEffectBase::Initialize();
if (result == noErr)
Reset(kAudioUnitScope_Global, 0);
return result;
}
#pragma mark ____ConsoleHPreEffectKernel
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPreKernel::Reset()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void ConsoleHPre::ConsoleHPreKernel::Reset()
{
for (int x = 0; x < biq_total; x++) {
highFast[x] = 0.0;
lowFast[x] = 0.0;
}
highFastLIIR = 0.0;
lowFastLIIR = 0.0;
//SmoothEQ3
for (int x = 0; x < biqs_total; x++) {
high[x] = 0.0;
hmid[x] = 0.0;
lmid[x] = 0.0;
bass[x] = 0.0;
}
//HipCrush with four bands
for (int x = 0; x < bez_total; x++) {bezCompF[x] = 0.0;bezCompS[x] = 0.0;}
bezCompF[bez_cycle] = 1.0; bezMaxF = 0.0;
bezCompS[bez_cycle] = 1.0; bezGate = 2.0;
//Dynamics2
for(int count = 0; count < 22; count++) {
iirHPosition[count] = 0.0;
iirHAngle[count] = 0.0;
}
hBypass = false;
for(int count = 0; count < 14; count++) {
iirLPosition[count] = 0.0;
iirLAngle[count] = 0.0;
}
lBypass = false;
//Cabs2
for(int count = 0; count < dscBuf+2; count++) {
dBaL[count] = 0.0;
}
dBaPosL = 0.0;
dBaXL = 1;
//Discontapeity
for (int x = 0; x < 33; x++) {avg32L[x] = 0.0;}
for (int x = 0; x < 17; x++) {avg16L[x] = 0.0;}
for (int x = 0; x < 9; x++) {avg8L[x] = 0.0;}
for (int x = 0; x < 5; x++) {avg4L[x] = 0.0;}
for (int x = 0; x < 3; x++) {avg2L[x] = 0.0;}
avgPos = 0;
lastSlewL = 0.0;
lastSlewpleL = 0.0;
//preTapeHack
lFreqA = 1.0; lFreqB = 1.0;
hFreqA = 0.0; hFreqB = 0.0;
inTrimA = 0.5; inTrimB = 0.5;
fpd = 1.0; while (fpd < 16386) fpd = rand()*UINT32_MAX;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ConsoleHPre::ConsoleHPreKernel::Process
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void ConsoleHPre::ConsoleHPreKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
UInt32 nSampleFrames = inFramesToProcess;
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
double overallscale = 1.0;
overallscale /= 44100.0;
overallscale *= GetSampleRate();
int spacing = floor(overallscale*2.0);
if (spacing < 2) spacing = 2; if (spacing > 32) spacing = 32;
double moreTapeHack = (GetParameter( kParam_MOR )*2.0)+1.0;
switch ((int)GetParameter( kParam_TRM )){
case 0: moreTapeHack *= 0.5; break;
case 1: break;
case 2: moreTapeHack *= 2.0; break;
case 3: moreTapeHack *= 4.0; break;
case 4: moreTapeHack *= 8.0; break;
}
double moreDiscontinuity = fmax(pow(GetParameter( kParam_MOR )*0.42,3.0)*overallscale,0.00001);
//Discontapeity
double trebleGain = (GetParameter( kParam_HIG )-0.5)*2.0;
trebleGain = 1.0+(trebleGain*fabs(trebleGain)*fabs(trebleGain));
double midGain = (GetParameter( kParam_MID )-0.5)*2.0;
midGain = 1.0+(midGain*fabs(midGain)*fabs(midGain));
double bassGain = (GetParameter( kParam_LOW )-0.5)*2.0;
bassGain = 1.0+(bassGain*fabs(bassGain)*fabs(bassGain));
//separate from filtering stage, this is amplitude, centered on 1.0 unity gain
//SmoothEQ3 is how to get 3rd order steepness at very low CPU.
//because sample rate varies, you could also vary the crossovers
//you can't vary Q because math is simplified to take advantage of
//how the accurate Q value for this filter is always exactly 1.0.
highFast[biq_freq] = (4000.0/GetSampleRate());
double omega = 2.0*M_PI*(4000.0/GetSampleRate()); //mid-high crossover freq
double biqK = 2.0 - cos(omega);
double highCoef = -sqrt(biqK*biqK - 1.0) + biqK;
lowFast[biq_freq] = (200.0/GetSampleRate());
omega = 2.0*M_PI*(200.0/GetSampleRate()); //low-mid crossover freq
biqK = 2.0 - cos(omega);
double lowCoef = -sqrt(biqK*biqK - 1.0) + biqK;
//exponential IIR filter as part of an accurate 3rd order Butterworth filter
biqK = tan(M_PI * highFast[biq_freq]);
double norm = 1.0 / (1.0 + biqK + biqK*biqK);
highFast[biq_a0] = biqK * biqK * norm;
highFast[biq_a1] = 2.0 * highFast[biq_a0];
highFast[biq_a2] = highFast[biq_a0];
highFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
highFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
biqK = tan(M_PI * lowFast[biq_freq]);
norm = 1.0 / (1.0 + biqK + biqK*biqK);
lowFast[biq_a0] = biqK * biqK * norm;
lowFast[biq_a1] = 2.0 * lowFast[biq_a0];
lowFast[biq_a2] = lowFast[biq_a0];
lowFast[biq_b1] = 2.0 * (biqK*biqK - 1.0) * norm;
lowFast[biq_b2] = (1.0 - biqK + biqK*biqK) * norm;
//custom biquad setup with Q = 1.0 gets to omit some divides
high[biqs_freq] = (((pow(GetParameter( kParam_TRF ),2.0)*16000.0)+1000.0)/GetSampleRate());
if (high[biqs_freq] < 0.0001) high[biqs_freq] = 0.0001;
high[biqs_bit] = (GetParameter( kParam_TRB )*2.0)-1.0;
high[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_TRG ),2.0))*1.618033988749894848204586;
high[biqs_reso] = pow(GetParameter( kParam_TRG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * high[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (high[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
high[biqs_a0] = biqK / (high[biqs_reso]*0.618033988749894848204586) * norm;
high[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
high[biqs_b2] = (1.0 - biqK / (high[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (high[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
high[biqs_c0] = biqK / (high[biqs_reso]*1.618033988749894848204586) * norm;
high[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
high[biqs_d2] = (1.0 - biqK / (high[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//high
hmid[biqs_freq] = (((pow(GetParameter( kParam_HMF ),3.0)*7000.0)+300.0)/GetSampleRate());
if (hmid[biqs_freq] < 0.0001) hmid[biqs_freq] = 0.0001;
hmid[biqs_bit] = (GetParameter( kParam_HMB )*2.0)-1.0;
hmid[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_HMG ),2.0))*1.618033988749894848204586;
hmid[biqs_reso] = pow(GetParameter( kParam_HMG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * hmid[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (hmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
hmid[biqs_a0] = biqK / (hmid[biqs_reso]*0.618033988749894848204586) * norm;
hmid[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
hmid[biqs_b2] = (1.0 - biqK / (hmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (hmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
hmid[biqs_c0] = biqK / (hmid[biqs_reso]*1.618033988749894848204586) * norm;
hmid[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
hmid[biqs_d2] = (1.0 - biqK / (hmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//hmid
lmid[biqs_freq] = (((pow(GetParameter( kParam_LMF ),3.0)*3000.0)+40.0)/GetSampleRate());
if (lmid[biqs_freq] < 0.00001) lmid[biqs_freq] = 0.00001;
lmid[biqs_bit] = (GetParameter( kParam_LMB )*2.0)-1.0;
lmid[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_LMG ),2.0))*1.618033988749894848204586;
lmid[biqs_reso] = pow(GetParameter( kParam_LMG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * lmid[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (lmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
lmid[biqs_a0] = biqK / (lmid[biqs_reso]*0.618033988749894848204586) * norm;
lmid[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
lmid[biqs_b2] = (1.0 - biqK / (lmid[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (lmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
lmid[biqs_c0] = biqK / (lmid[biqs_reso]*1.618033988749894848204586) * norm;
lmid[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
lmid[biqs_d2] = (1.0 - biqK / (lmid[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//lmid
bass[biqs_freq] = (((pow(GetParameter( kParam_BSF ),4.0)*1000.0)+20.0)/GetSampleRate());
if (bass[biqs_freq] < 0.00001) bass[biqs_freq] = 0.00001;
bass[biqs_bit] = (GetParameter( kParam_BSB )*2.0)-1.0;
bass[biqs_level] = (1.0-pow(1.0-GetParameter( kParam_BSG ),2.0))*1.618033988749894848204586;
bass[biqs_reso] = pow(GetParameter( kParam_BSG )+0.618033988749894848204586,2.0);
biqK = tan(M_PI * bass[biqs_freq]);
norm = 1.0 / (1.0 + biqK / (bass[biqs_reso]*0.618033988749894848204586) + biqK * biqK);
bass[biqs_a0] = biqK / (bass[biqs_reso]*0.618033988749894848204586) * norm;
bass[biqs_b1] = 2.0 * (biqK * biqK - 1.0) * norm;
bass[biqs_b2] = (1.0 - biqK / (bass[biqs_reso]*0.618033988749894848204586) + biqK * biqK) * norm;
norm = 1.0 / (1.0 + biqK / (bass[biqs_reso]*1.618033988749894848204586) + biqK * biqK);
bass[biqs_c0] = biqK / (bass[biqs_reso]*1.618033988749894848204586) * norm;
bass[biqs_d1] = 2.0 * (biqK * biqK - 1.0) * norm;
bass[biqs_d2] = (1.0 - biqK / (bass[biqs_reso]*1.618033988749894848204586) + biqK * biqK) * norm;
//bass
double crossFade = GetParameter( kParam_CRS );
//HipCrush with four bands
double bezCThresh = pow(1.0-GetParameter( kParam_THR ), 6.0) * 8.0;
double bezRez = pow(1.0-GetParameter( kParam_ATK ), 8.0) / overallscale;
double sloRez = pow(1.0-GetParameter( kParam_RLS ),12.0) / overallscale;
sloRez = fmin(fmax(sloRez-(bezRez*0.5),0.00001),1.0);
bezRez = fmin(fmax(bezRez,0.0001),1.0);
double gate = pow(pow(GetParameter( kParam_GAT ),4.0),sqrt(bezCThresh+1.0));
//Dynamics2
lFreqA = lFreqB; lFreqB = pow(fmax(GetParameter( kParam_LOP ),0.002),overallscale); //the lowpass
hFreqA = hFreqB; hFreqB = pow(GetParameter( kParam_HIP ),overallscale+2.0); //the highpass
//Cabs2
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
//Console
while (nSampleFrames-- > 0) {
double inputSampleL = *sourceP;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpd * 1.18e-17;
double darkSampleL = inputSampleL;
if (avgPos > 31) avgPos = 0;
if (spacing > 31) {
avg32L[avgPos] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 32; x++) {darkSampleL += avg32L[x];}
darkSampleL /= 32.0;
} if (spacing > 15) {
avg16L[avgPos%16] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 16; x++) {darkSampleL += avg16L[x];}
darkSampleL /= 16.0;
} if (spacing > 7) {
avg8L[avgPos%8] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 8; x++) {darkSampleL += avg8L[x];}
darkSampleL /= 8.0;
} if (spacing > 3) {
avg4L[avgPos%4] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 4; x++) {darkSampleL += avg4L[x];}
darkSampleL /= 4.0;
} if (spacing > 1) {
avg2L[avgPos%2] = darkSampleL;
darkSampleL = 0.0;
for (int x = 0; x < 2; x++) {darkSampleL += avg2L[x];}
darkSampleL /= 2.0;
} avgPos++;
lastSlewL += fabs(lastSlewpleL-inputSampleL); lastSlewpleL = inputSampleL;
double avgSlewL = fmin(lastSlewL,1.0);
lastSlewL = fmax(lastSlewL*0.78,2.39996322972865332223); //look up Golden Angle, it's cool
inputSampleL = (inputSampleL*(1.0-avgSlewL)) + (darkSampleL*avgSlewL);
//begin Discontinuity section
inputSampleL *= moreTapeHack;
inputSampleL *= moreDiscontinuity;
dBaL[dBaXL] = inputSampleL; dBaPosL *= 0.5; dBaPosL += fabs((inputSampleL*((inputSampleL*0.25)-0.5))*0.5);
dBaPosL = fmin(dBaPosL,1.0);
int dBdly = floor(dBaPosL*dscBuf);
double dBi = (dBaPosL*dscBuf)-dBdly;
inputSampleL = dBaL[dBaXL-dBdly +((dBaXL-dBdly < 0)?dscBuf:0)]*(1.0-dBi);
dBdly++; inputSampleL += dBaL[dBaXL-dBdly +((dBaXL-dBdly < 0)?dscBuf:0)]*dBi;
dBaXL++; if (dBaXL < 0 || dBaXL >= dscBuf) dBaXL = 0;
inputSampleL /= moreDiscontinuity;
//end Discontinuity section, begin TapeHack section
inputSampleL = fmax(fmin(inputSampleL,2.305929007734908),-2.305929007734908);
double addtwo = inputSampleL * inputSampleL;
double empower = inputSampleL * addtwo; // inputSampleL to the third power
inputSampleL -= (empower / 6.0);
empower *= addtwo; // to the fifth power
inputSampleL += (empower / 69.0);
empower *= addtwo; //seventh
inputSampleL -= (empower / 2530.08);
empower *= addtwo; //ninth
inputSampleL += (empower / 224985.6);
empower *= addtwo; //eleventh
inputSampleL -= (empower / 9979200.0f);
//this is a degenerate form of a Taylor Series to approximate sin()
//end TapeHack section
//Discontapeity
double trebleFastL = inputSampleL;
double outSample = (trebleFastL * highFast[biq_a0]) + highFast[biq_sL1];
highFast[biq_sL1] = (trebleFastL * highFast[biq_a1]) - (outSample * highFast[biq_b1]) + highFast[biq_sL2];
highFast[biq_sL2] = (trebleFastL * highFast[biq_a2]) - (outSample * highFast[biq_b2]);
double midFastL = outSample; trebleFastL -= midFastL;
outSample = (midFastL * lowFast[biq_a0]) + lowFast[biq_sL1];
lowFast[biq_sL1] = (midFastL * lowFast[biq_a1]) - (outSample * lowFast[biq_b1]) + lowFast[biq_sL2];
lowFast[biq_sL2] = (midFastL * lowFast[biq_a2]) - (outSample * lowFast[biq_b2]);
double bassFastL = outSample; midFastL -= bassFastL;
trebleFastL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//first stage of two crossovers is biquad of exactly 1.0 Q
highFastLIIR = (highFastLIIR*highCoef) + (trebleFastL*(1.0-highCoef));
midFastL = highFastLIIR; trebleFastL -= midFastL;
lowFastLIIR = (lowFastLIIR*lowCoef) + (midFastL*(1.0-lowCoef));
bassFastL = lowFastLIIR; midFastL -= bassFastL;
double smoothEQL = (bassFastL*bassGain) + (midFastL*midGain) + (trebleFastL*trebleGain);
//second stage of two crossovers is the exponential filters
//this produces a slightly steeper Butterworth filter very cheaply
//SmoothEQ3
//begin Stacked Biquad With Reversed Neutron Flow L
high[biqs_outL] = inputSampleL * fabs(high[biqs_level]);
high[biqs_temp] = (high[biqs_outL] * high[biqs_a0]) + high[biqs_aL1];
high[biqs_aL1] = high[biqs_aL2] - (high[biqs_temp]*high[biqs_b1]);
high[biqs_aL2] = (high[biqs_outL] * -high[biqs_a0]) - (high[biqs_temp]*high[biqs_b2]);
high[biqs_outL] = high[biqs_temp];
if (high[biqs_bit] != 0.0) {
double bitFactor = high[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
high[biqs_outL] *= bitFactor;
high[biqs_outL] = floor(high[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
high[biqs_outL] /= bitFactor;
}
high[biqs_temp] = (high[biqs_outL] * high[biqs_c0]) + high[biqs_cL1];
high[biqs_cL1] = high[biqs_cL2] - (high[biqs_temp]*high[biqs_d1]);
high[biqs_cL2] = (high[biqs_outL] * -high[biqs_c0]) - (high[biqs_temp]*high[biqs_d2]);
high[biqs_outL] = high[biqs_temp];
high[biqs_outL] *= high[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
hmid[biqs_outL] = inputSampleL * fabs(hmid[biqs_level]);
hmid[biqs_temp] = (hmid[biqs_outL] * hmid[biqs_a0]) + hmid[biqs_aL1];
hmid[biqs_aL1] = hmid[biqs_aL2] - (hmid[biqs_temp]*hmid[biqs_b1]);
hmid[biqs_aL2] = (hmid[biqs_outL] * -hmid[biqs_a0]) - (hmid[biqs_temp]*hmid[biqs_b2]);
hmid[biqs_outL] = hmid[biqs_temp];
if (hmid[biqs_bit] != 0.0) {
double bitFactor = hmid[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
hmid[biqs_outL] *= bitFactor;
hmid[biqs_outL] = floor(hmid[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
hmid[biqs_outL] /= bitFactor;
}
hmid[biqs_temp] = (hmid[biqs_outL] * hmid[biqs_c0]) + hmid[biqs_cL1];
hmid[biqs_cL1] = hmid[biqs_cL2] - (hmid[biqs_temp]*hmid[biqs_d1]);
hmid[biqs_cL2] = (hmid[biqs_outL] * -hmid[biqs_c0]) - (hmid[biqs_temp]*hmid[biqs_d2]);
hmid[biqs_outL] = hmid[biqs_temp];
hmid[biqs_outL] *= hmid[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
lmid[biqs_outL] = inputSampleL * fabs(lmid[biqs_level]);
lmid[biqs_temp] = (lmid[biqs_outL] * lmid[biqs_a0]) + lmid[biqs_aL1];
lmid[biqs_aL1] = lmid[biqs_aL2] - (lmid[biqs_temp]*lmid[biqs_b1]);
lmid[biqs_aL2] = (lmid[biqs_outL] * -lmid[biqs_a0]) - (lmid[biqs_temp]*lmid[biqs_b2]);
lmid[biqs_outL] = lmid[biqs_temp];
if (lmid[biqs_bit] != 0.0) {
double bitFactor = lmid[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
lmid[biqs_outL] *= bitFactor;
lmid[biqs_outL] = floor(lmid[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
lmid[biqs_outL] /= bitFactor;
}
lmid[biqs_temp] = (lmid[biqs_outL] * lmid[biqs_c0]) + lmid[biqs_cL1];
lmid[biqs_cL1] = lmid[biqs_cL2] - (lmid[biqs_temp]*lmid[biqs_d1]);
lmid[biqs_cL2] = (lmid[biqs_outL] * -lmid[biqs_c0]) - (lmid[biqs_temp]*lmid[biqs_d2]);
lmid[biqs_outL] = lmid[biqs_temp];
lmid[biqs_outL] *= lmid[biqs_level];
//end Stacked Biquad With Reversed Neutron Flow L
//begin Stacked Biquad With Reversed Neutron Flow L
bass[biqs_outL] = inputSampleL * fabs(bass[biqs_level]);
bass[biqs_temp] = (bass[biqs_outL] * bass[biqs_a0]) + bass[biqs_aL1];
bass[biqs_aL1] = bass[biqs_aL2] - (bass[biqs_temp]*bass[biqs_b1]);
bass[biqs_aL2] = (bass[biqs_outL] * -bass[biqs_a0]) - (bass[biqs_temp]*bass[biqs_b2]);
bass[biqs_outL] = bass[biqs_temp];
if (bass[biqs_bit] != 0.0) {
double bitFactor = bass[biqs_bit];
bool crushGate = (bitFactor < 0.0);
bitFactor = pow(2.0,fmin(fmax((1.0-fabs(bitFactor))*16.0,0.5),16.0));
bass[biqs_outL] *= bitFactor;
bass[biqs_outL] = floor(bass[biqs_outL]+(crushGate?0.5/bitFactor:0.0));
bass[biqs_outL] /= bitFactor;
}
bass[biqs_temp] = (bass[biqs_outL] * bass[biqs_c0]) + bass[biqs_cL1];
bass[biqs_cL1] = bass[biqs_cL2] - (bass[biqs_temp]*bass[biqs_d1]);
bass[biqs_cL2] = (bass[biqs_outL] * -bass[biqs_c0]) - (bass[biqs_temp]*bass[biqs_d2]);
bass[biqs_outL] = bass[biqs_temp];
bass[biqs_outL] *= bass[biqs_level];
double parametricL = high[biqs_outL] + hmid[biqs_outL] + lmid[biqs_outL] + bass[biqs_outL];
//end Stacked Biquad With Reversed Neutron Flow L
//end HipCrush as four band
if (bezCThresh > 0.0) {
inputSampleL *= ((bezCThresh*0.5)+1.0);
smoothEQL *= ((bezCThresh*0.5)+1.0);
parametricL *= ((bezCThresh*0.5)+1.0);
} //makeup gain
if (fabs(inputSampleL) > gate+(sloRez*bezGate)) bezGate = ((bezGate*overallscale*3.0)+3.0)*(0.25/overallscale);
else bezGate = fmax(0.0, bezGate-(sloRez*sloRez));
bezCompF[bez_cycle] += bezRez;
bezCompF[bez_SampL] += (fabs(inputSampleL) * bezRez);
bezMaxF = fmax(bezMaxF,fabs(inputSampleL));
if (bezCompF[bez_cycle] > 1.0) {
if (bezMaxF < gate) bezCompF[bez_SampL] = bezMaxF/gate; //note: SampL is a control voltage,
if (bezCompF[bez_SampL]<gate) bezCompF[bez_SampL] = 0.0; //not a bipolar audio signal
bezCompF[bez_cycle] -= 1.0;
bezCompF[bez_CL] = bezCompF[bez_BL];
bezCompF[bez_BL] = bezCompF[bez_AL];
bezCompF[bez_AL] = bezCompF[bez_SampL];
bezCompF[bez_SampL] = 0.0;
bezMaxF = 0.0;
}
bezCompS[bez_cycle] += sloRez;
bezCompS[bez_SampL] += (fabs(inputSampleL) * sloRez); //note: SampL is a control voltage.
if (bezCompS[bez_cycle] > 1.0) {
if (bezCompS[bez_SampL]<gate) bezCompS[bez_SampL] = 0.0;
bezCompS[bez_cycle] -= 1.0;
bezCompS[bez_CL] = bezCompS[bez_BL];
bezCompS[bez_BL] = bezCompS[bez_AL];
bezCompS[bez_AL] = bezCompS[bez_SampL];
bezCompS[bez_SampL] = 0.0;
}
double CBFL = (bezCompF[bez_CL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_BL]*bezCompF[bez_cycle]);
double BAFL = (bezCompF[bez_BL]*(1.0-bezCompF[bez_cycle]))+(bezCompF[bez_AL]*bezCompF[bez_cycle]);
double CBAFL = (bezCompF[bez_BL]+(CBFL*(1.0-bezCompF[bez_cycle]))+(BAFL*bezCompF[bez_cycle]))*0.5;
double CBSL = (bezCompS[bez_CL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_BL]*bezCompS[bez_cycle]);
double BASL = (bezCompS[bez_BL]*(1.0-bezCompS[bez_cycle]))+(bezCompS[bez_AL]*bezCompS[bez_cycle]);
double CBASL = (bezCompS[bez_BL]+(CBSL*(1.0-bezCompS[bez_cycle]))+(BASL*bezCompS[bez_cycle]))*0.5;
double CBAMax = fmax(CBASL,CBAFL); if (CBAMax > 0.0) CBAMax = 1.0/CBAMax;
double CBAFade = ((CBASL*-CBAMax)+(CBAFL*CBAMax)+1.0)*0.5;
//switch over to the EQed or HipCrushed sound and compress
inputSampleL = (smoothEQL * (1.0-crossFade)) + (parametricL * crossFade);
//apply filtration to what was just the unfiltered sound
if (bezCThresh > 0.0) inputSampleL *= 1.0-(fmin(((CBASL*(1.0-CBAFade))+(CBAFL*CBAFade))*bezCThresh,1.0));
//apply compression worked out using unfiltered sound
if (bezGate < 1.0 && gate > 0.0) inputSampleL *= bezGate;
//Dynamics2
const double temp = (double)nSampleFrames/inFramesToProcess;
const double hFreq = (hFreqA*temp)+(hFreqB*(1.0-temp));
if (hFreq > 0.0) {
double lowSample = inputSampleL;
for(int count = 0; count < 21; count++) {
iirHAngle[count] = (iirHAngle[count]*(1.0-hFreq))+((lowSample-iirHPosition[count])*hFreq);
lowSample = ((iirHPosition[count]+(iirHAngle[count]*hFreq))*(1.0-hFreq))+(lowSample*hFreq);
iirHPosition[count] = ((iirHPosition[count]+(iirHAngle[count]*hFreq))*(1.0-hFreq))+(lowSample*hFreq);
inputSampleL -= (lowSample * (1.0/21.0));
} //the highpass
hBypass = false;
} else {
if (!hBypass) {
hBypass = true;
for(int count = 0; count < 22; count++) {
iirHPosition[count] = 0.0;
iirHAngle[count] = 0.0;
}
} //blank out highpass if jut switched off
}
const double lFreq = (lFreqA*temp)+(lFreqB*(1.0-temp));
if (lFreq < 1.0) {
for(int count = 0; count < 13; count++) {
iirLAngle[count] = (iirLAngle[count]*(1.0-lFreq))+((inputSampleL-iirLPosition[count])*lFreq);
inputSampleL = ((iirLPosition[count]+(iirLAngle[count]*lFreq))*(1.0-lFreq))+(inputSampleL*lFreq);
iirLPosition[count] = ((iirLPosition[count]+(iirLAngle[count]*lFreq))*(1.0-lFreq))+(inputSampleL*lFreq);
} //the lowpass
lBypass = false;
} else {
if (!lBypass) {
lBypass = true;
for(int count = 0; count < 14; count++) {
iirLPosition[count] = 0.0;
iirLAngle[count] = 0.0;
}
} //blank out lowpass if just switched off
}
//Cabs2
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
inputSampleL *= gain;
//applies smoothed fader gain
//begin 32 bit floating point dither
int expon; frexpf((float)inputSampleL, &expon);
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
//end 32 bit floating point dither
*destP = inputSampleL;
sourceP += inNumChannels; destP += inNumChannels;
}
}

View file

@ -0,0 +1,2 @@
_ConsoleHPreEntry
_ConsoleHPreFactory

View file

@ -0,0 +1,300 @@
/*
* File: ConsoleHPre.h
*
* Version: 1.0
*
* Created: 11/4/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 "ConsoleHPreVersion.h"
#if AU_DEBUG_DISPATCHER
#include "AUDebugDispatcher.h"
#endif
#ifndef __ConsoleHPre_h__
#define __ConsoleHPre_h__
#pragma mark ____ConsoleHPre Parameters
// parameters
static const int kDefaultValue_ParamTRM = 1;
static const float kDefaultValue_ParamMOR = 0.0;
static const float kDefaultValue_ParamHIG = 0.5;
static const float kDefaultValue_ParamMID = 0.5;
static const float kDefaultValue_ParamLOW = 0.5;
static const float kDefaultValue_ParamCRS = 0.0;
static const float kDefaultValue_ParamTRF = 0.5;
static const float kDefaultValue_ParamTRG = 0.0;
static const float kDefaultValue_ParamTRB = 0.5;
static const float kDefaultValue_ParamHMF = 0.5;
static const float kDefaultValue_ParamHMG = 0.0;
static const float kDefaultValue_ParamHMB = 0.5;
static const float kDefaultValue_ParamLMF = 0.5;
static const float kDefaultValue_ParamLMG = 0.0;
static const float kDefaultValue_ParamLMB = 0.5;
static const float kDefaultValue_ParamBSF = 0.5;
static const float kDefaultValue_ParamBSG = 0.0;
static const float kDefaultValue_ParamBSB = 0.5;
static const float kDefaultValue_ParamTHR = 1.0;
static const float kDefaultValue_ParamATK = 0.5;
static const float kDefaultValue_ParamRLS = 0.5;
static const float kDefaultValue_ParamGAT = 0.0;
static const float kDefaultValue_ParamLOP = 1.0;
static const float kDefaultValue_ParamHIP = 0.0;
static const float kDefaultValue_ParamFAD = 0.5;
static CFStringRef kParameterTRMName = CFSTR("Trim");
static CFStringRef kParameterMORName = CFSTR("More");
static CFStringRef kParameterHIGUnit = CFSTR("eq");
static CFStringRef kParameterHIGName = CFSTR("High");
static CFStringRef kParameterMIDName = CFSTR("Mid");
static CFStringRef kParameterLOWName = CFSTR("Low");
static CFStringRef kParameterCRSName = CFSTR("CrossFd");
static CFStringRef kParameterTRFUnit = CFSTR("crush");
static CFStringRef kParameterTRFName = CFSTR("Tr Freq");
static CFStringRef kParameterTRGName = CFSTR("Treble");
static CFStringRef kParameterTRBName = CFSTR("TrCrush");
static CFStringRef kParameterHMFName = CFSTR("HM Freq");
static CFStringRef kParameterHMGName = CFSTR("HighMid");
static CFStringRef kParameterHMBName = CFSTR("HMCrush");
static CFStringRef kParameterLMFName = CFSTR("LM Freq");
static CFStringRef kParameterLMGName = CFSTR("LowMid");
static CFStringRef kParameterLMBName = CFSTR("LMCrush");
static CFStringRef kParameterBSFName = CFSTR("Bs Freq");
static CFStringRef kParameterBSGName = CFSTR("Bass");
static CFStringRef kParameterBSBName = CFSTR("BsCrush");
static CFStringRef kParameterTHRUnit = CFSTR("dyn");
static CFStringRef kParameterTHRName = CFSTR("Thresh");
static CFStringRef kParameterATKName = CFSTR("Attack");
static CFStringRef kParameterRLSName = CFSTR("Release");
static CFStringRef kParameterGATName = CFSTR("Gate");
static CFStringRef kParameterLOPUnit = CFSTR("fltr");
static CFStringRef kParameterLOPName = CFSTR("Lowpass");
static CFStringRef kParameterHIPName = CFSTR("Hipass");
static CFStringRef kParameterFADName = CFSTR("Fader");
enum {
kParam_TRM =0,
kParam_MOR =1,
kParam_HIG =2,
kParam_MID =3,
kParam_LOW =4,
kParam_CRS =5,
kParam_TRF =6,
kParam_TRG =7,
kParam_TRB =8,
kParam_HMF =9,
kParam_HMG =10,
kParam_HMB =11,
kParam_LMF =12,
kParam_LMG =13,
kParam_LMB =14,
kParam_BSF =15,
kParam_BSG =16,
kParam_BSB =17,
kParam_THR =18,
kParam_ATK =19,
kParam_RLS =20,
kParam_GAT =21,
kParam_LOP =22,
kParam_HIP =23,
kParam_FAD =24,
//Add your parameters here...
kNumberOfParameters=25
};
const int dscBuf = 256;
#pragma mark ____ConsoleHPre
class ConsoleHPre : public AUEffectBase
{
public:
ConsoleHPre(AudioUnit component);
#if AU_DEBUG_DISPATCHER
virtual ~ConsoleHPre () { delete mDebugDispatcher; }
#endif
virtual AUKernelBase * NewKernel() { return new ConsoleHPreKernel(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 kConsoleHPreVersion; }
protected:
class ConsoleHPreKernel : public AUKernelBase // most of the real work happens here
{
public:
ConsoleHPreKernel(AUEffectBase *inAudioUnit )
: AUKernelBase(inAudioUnit)
{
}
// *Required* overides for the process method for this effect
// processes one channel of interleaved samples
virtual void Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inFramesToProcess,
UInt32 inNumChannels,
bool &ioSilence);
virtual void Reset();
private:
enum {
biq_freq,
biq_reso,
biq_a0,
biq_a1,
biq_a2,
biq_b1,
biq_b2,
biq_sL1,
biq_sL2,
biq_total
}; //coefficient interpolating filter, stereo
double highFast[biq_total];
double lowFast[biq_total];
double highFastLIIR;
double lowFastLIIR;
//SmoothEQ3
enum {
biqs_freq, biqs_reso, biqs_level,
biqs_temp, biqs_bit,
biqs_a0, biqs_a1, biqs_b1, biqs_b2,
biqs_c0, biqs_c1, biqs_d1, biqs_d2,
biqs_aL1, biqs_aL2,
biqs_cL1, biqs_cL2,
biqs_outL, biqs_total
};
double high[biqs_total];
double hmid[biqs_total];
double lmid[biqs_total];
double bass[biqs_total];
//HipCrush with four bands
enum {
bez_AL,
bez_BL,
bez_CL,
bez_InL,
bez_UnInL,
bez_SampL,
bez_cycle,
bez_total
}; //the new undersampling. bez signifies the bezier curve reconstruction
double bezCompF[bez_total];
double bezMaxF;
double bezCompS[bez_total];
double bezGate;
//Dynamics2
double iirHPosition[23];
double iirHAngle[23];
bool hBypass;
double iirLPosition[15];
double iirLAngle[15];
bool lBypass;
double lFreqA;
double lFreqB; //the lowpass
double hFreqA;
double hFreqB; //the highpass
//Cabs2
double dBaL[dscBuf+5];
double dBaPosL;
int dBaXL;
//Discontapeity
double avg32L[33];
double avg16L[17];
double avg8L[9];
double avg4L[5];
double avg2L[3];
int avgPos;
double lastSlewL;
double lastSlewpleL;
//preTapeHack
double inTrimA;
double inTrimB;
uint32_t fpd;
};
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#endif

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