mirror of
https://github.com/airwindows/airwindows.git
synced 2026-05-21 06:46:21 -06:00
Apicolypse
This commit is contained in:
parent
652cbd32b1
commit
4449ffb744
44 changed files with 11721 additions and 0 deletions
|
|
@ -11,6 +11,7 @@ add_airwindows_plugin(Acceleration)
|
||||||
add_airwindows_plugin(ADClip7)
|
add_airwindows_plugin(ADClip7)
|
||||||
add_airwindows_plugin(ADT)
|
add_airwindows_plugin(ADT)
|
||||||
add_airwindows_plugin(Air)
|
add_airwindows_plugin(Air)
|
||||||
|
add_airwindows_plugin(Apicolypse)
|
||||||
add_airwindows_plugin(AQuickVoiceClip)
|
add_airwindows_plugin(AQuickVoiceClip)
|
||||||
add_airwindows_plugin(AtmosphereBuss)
|
add_airwindows_plugin(AtmosphereBuss)
|
||||||
add_airwindows_plugin(AtmosphereChannel)
|
add_airwindows_plugin(AtmosphereChannel)
|
||||||
|
|
|
||||||
145
plugins/LinuxVST/src/Apicolypse/Apicolypse.cpp
Executable file
145
plugins/LinuxVST/src/Apicolypse/Apicolypse.cpp
Executable file
|
|
@ -0,0 +1,145 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Apicolypse(audioMaster);}
|
||||||
|
|
||||||
|
Apicolypse::Apicolypse(audioMasterCallback audioMaster) :
|
||||||
|
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||||
|
{
|
||||||
|
A = 0.70;
|
||||||
|
B = 0.3333333;
|
||||||
|
C = 0.3333333;
|
||||||
|
D = 1.0;
|
||||||
|
for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;}
|
||||||
|
lastSampleR = 0.0;lastSampleL = 0.0;
|
||||||
|
|
||||||
|
fpd = 17;
|
||||||
|
//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
|
||||||
|
}
|
||||||
|
|
||||||
|
Apicolypse::~Apicolypse() {}
|
||||||
|
VstInt32 Apicolypse::getVendorVersion () {return 1000;}
|
||||||
|
void Apicolypse::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||||
|
void Apicolypse::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 Apicolypse::getChunk (void** data, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
|
||||||
|
chunkData[0] = A;
|
||||||
|
chunkData[1] = B;
|
||||||
|
chunkData[2] = C;
|
||||||
|
chunkData[3] = D;
|
||||||
|
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
|
||||||
|
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
|
||||||
|
started with. */
|
||||||
|
|
||||||
|
*data = chunkData;
|
||||||
|
return kNumParameters * sizeof(float);
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::setChunk (void* data, VstInt32 byteSize, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)data;
|
||||||
|
A = pinParameter(chunkData[0]);
|
||||||
|
B = pinParameter(chunkData[1]);
|
||||||
|
C = pinParameter(chunkData[2]);
|
||||||
|
D = pinParameter(chunkData[3]);
|
||||||
|
/* We're ignoring byteSize as we found it to be a filthy liar */
|
||||||
|
|
||||||
|
/* calculate any other fields you need here - you could copy in
|
||||||
|
code from setParameter() here. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::setParameter(VstInt32 index, float value) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: A = value; break;
|
||||||
|
case kParamB: B = value; break;
|
||||||
|
case kParamC: C = value; break;
|
||||||
|
case kParamD: D = value; break;
|
||||||
|
default: throw; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Apicolypse::getParameter(VstInt32 index) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: return A; break;
|
||||||
|
case kParamB: return B; break;
|
||||||
|
case kParamC: return C; break;
|
||||||
|
case kParamD: return D; break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} return 0.0; //we only need to update the relevant name, this is simple to manage
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterName(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "Hardns", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "Persnlty", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "Drive", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "Output", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this is our labels for displaying in the VST host
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterDisplay(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: float2string (B*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: float2string (C*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this displays the values and handles 'popups' where it's discrete choices
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterLabel(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::canDo(char *text)
|
||||||
|
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||||
|
|
||||||
|
bool Apicolypse::getEffectName(char* name) {
|
||||||
|
vst_strncpy(name, "Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VstPlugCategory Apicolypse::getPlugCategory() {return kPlugCategEffect;}
|
||||||
|
|
||||||
|
bool Apicolypse::getProductString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Apicolypse::getVendorString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||||
|
}
|
||||||
72
plugins/LinuxVST/src/Apicolypse/Apicolypse.h
Executable file
72
plugins/LinuxVST/src/Apicolypse/Apicolypse.h
Executable file
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Created 8/12/11 by SPIAdmin
|
||||||
|
* Copyright (c) 2011 __MyCompanyName__, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#define __Apicolypse_H
|
||||||
|
|
||||||
|
#ifndef __audioeffect__
|
||||||
|
#include "audioeffectx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
kParamA = 0,
|
||||||
|
kParamB = 1,
|
||||||
|
kParamC = 2,
|
||||||
|
kParamD = 3,
|
||||||
|
kNumParameters = 4
|
||||||
|
}; //
|
||||||
|
|
||||||
|
const int kNumPrograms = 0;
|
||||||
|
const int kNumInputs = 2;
|
||||||
|
const int kNumOutputs = 2;
|
||||||
|
const unsigned long kUniqueId = 'apic'; //Change this to what the AU identity is!
|
||||||
|
|
||||||
|
class Apicolypse :
|
||||||
|
public AudioEffectX
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Apicolypse(audioMasterCallback audioMaster);
|
||||||
|
~Apicolypse();
|
||||||
|
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;
|
||||||
|
|
||||||
|
double bR[35];
|
||||||
|
double lastSampleR;
|
||||||
|
double bL[35];
|
||||||
|
double lastSampleL;
|
||||||
|
uint32_t fpd;
|
||||||
|
//default stuff
|
||||||
|
|
||||||
|
float A;
|
||||||
|
float B;
|
||||||
|
float C;
|
||||||
|
float D;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
360
plugins/LinuxVST/src/Apicolypse/ApicolypseProc.cpp
Executable file
360
plugins/LinuxVST/src/Apicolypse/ApicolypseProc.cpp
Executable file
|
|
@ -0,0 +1,360 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void Apicolypse::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
float* in1 = inputs[0];
|
||||||
|
float* in2 = inputs[1];
|
||||||
|
float* out1 = outputs[0];
|
||||||
|
float* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-37) inputSampleL = fpd * 1.18e-37;
|
||||||
|
if (fabs(inputSampleR)<1.18e-37) inputSampleR = fpd * 1.18e-37;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 32 bit stereo 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));
|
||||||
|
frexpf((float)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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 Apicolypse::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
double* in1 = inputs[0];
|
||||||
|
double* in2 = inputs[1];
|
||||||
|
double* out1 = outputs[0];
|
||||||
|
double* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-43) inputSampleL = fpd * 1.18e-43;
|
||||||
|
if (fabs(inputSampleR)<1.18e-43) inputSampleR = fpd * 1.18e-43;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 64 bit stereo floating point dither
|
||||||
|
int expon; frexp((double)inputSampleL, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
|
||||||
|
frexp((double)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
299
plugins/MacAU/Apicolypse/Apicolypse.cpp
Executable file
299
plugins/MacAU/Apicolypse/Apicolypse.cpp
Executable file
|
|
@ -0,0 +1,299 @@
|
||||||
|
/*
|
||||||
|
* File: Apicolypse.cpp
|
||||||
|
*
|
||||||
|
* Version: 1.0
|
||||||
|
*
|
||||||
|
* Created: 1/11/20
|
||||||
|
*
|
||||||
|
* Copyright: Copyright © 2020 Airwindows, All Rights Reserved
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/*=============================================================================
|
||||||
|
Apicolypse.cpp
|
||||||
|
|
||||||
|
=============================================================================*/
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
COMPONENT_ENTRY(Apicolypse)
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::Apicolypse
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Apicolypse::Apicolypse(AudioUnit component)
|
||||||
|
: AUEffectBase(component)
|
||||||
|
{
|
||||||
|
CreateElements();
|
||||||
|
Globals()->UseIndexedParameters(kNumberOfParameters);
|
||||||
|
SetParameter(kParam_One, kDefaultValue_ParamOne );
|
||||||
|
SetParameter(kParam_Two, kDefaultValue_ParamTwo );
|
||||||
|
SetParameter(kParam_Three, kDefaultValue_ParamThree );
|
||||||
|
SetParameter(kParam_Four, kDefaultValue_ParamFour );
|
||||||
|
|
||||||
|
#if AU_DEBUG_DISPATCHER
|
||||||
|
mDebugDispatcher = new AUDebugDispatcher (this);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::GetParameterValueStrings
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
ComponentResult Apicolypse::GetParameterValueStrings(AudioUnitScope inScope,
|
||||||
|
AudioUnitParameterID inParameterID,
|
||||||
|
CFArrayRef * outStrings)
|
||||||
|
{
|
||||||
|
|
||||||
|
return kAudioUnitErr_InvalidProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::GetParameterInfo
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
ComponentResult Apicolypse::GetParameterInfo(AudioUnitScope inScope,
|
||||||
|
AudioUnitParameterID inParameterID,
|
||||||
|
AudioUnitParameterInfo &outParameterInfo )
|
||||||
|
{
|
||||||
|
ComponentResult result = noErr;
|
||||||
|
|
||||||
|
outParameterInfo.flags = kAudioUnitParameterFlag_IsWritable
|
||||||
|
| kAudioUnitParameterFlag_IsReadable;
|
||||||
|
|
||||||
|
if (inScope == kAudioUnitScope_Global) {
|
||||||
|
switch(inParameterID)
|
||||||
|
{
|
||||||
|
case kParam_One:
|
||||||
|
AUBase::FillInParameterName (outParameterInfo, kParameterOneName, false);
|
||||||
|
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||||
|
outParameterInfo.minValue = 0.0;
|
||||||
|
outParameterInfo.maxValue = 1.0;
|
||||||
|
outParameterInfo.defaultValue = kDefaultValue_ParamOne;
|
||||||
|
break;
|
||||||
|
case kParam_Two:
|
||||||
|
AUBase::FillInParameterName (outParameterInfo, kParameterTwoName, false);
|
||||||
|
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||||
|
outParameterInfo.minValue = 0.0;
|
||||||
|
outParameterInfo.maxValue = 3.0;
|
||||||
|
outParameterInfo.defaultValue = kDefaultValue_ParamTwo;
|
||||||
|
break;
|
||||||
|
case kParam_Three:
|
||||||
|
AUBase::FillInParameterName (outParameterInfo, kParameterThreeName, false);
|
||||||
|
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||||
|
outParameterInfo.minValue = 0.0;
|
||||||
|
outParameterInfo.maxValue = 3.0;
|
||||||
|
outParameterInfo.defaultValue = kDefaultValue_ParamThree;
|
||||||
|
break;
|
||||||
|
case kParam_Four:
|
||||||
|
AUBase::FillInParameterName (outParameterInfo, kParameterFourName, false);
|
||||||
|
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
|
||||||
|
outParameterInfo.minValue = 0.0;
|
||||||
|
outParameterInfo.maxValue = 1.0;
|
||||||
|
outParameterInfo.defaultValue = kDefaultValue_ParamFour;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
result = kAudioUnitErr_InvalidParameter;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result = kAudioUnitErr_InvalidParameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::GetPropertyInfo
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
ComponentResult Apicolypse::GetPropertyInfo (AudioUnitPropertyID inID,
|
||||||
|
AudioUnitScope inScope,
|
||||||
|
AudioUnitElement inElement,
|
||||||
|
UInt32 & outDataSize,
|
||||||
|
Boolean & outWritable)
|
||||||
|
{
|
||||||
|
return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
|
||||||
|
}
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::GetProperty
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
ComponentResult Apicolypse::GetProperty( AudioUnitPropertyID inID,
|
||||||
|
AudioUnitScope inScope,
|
||||||
|
AudioUnitElement inElement,
|
||||||
|
void * outData )
|
||||||
|
{
|
||||||
|
return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apicolypse::Initialize
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
ComponentResult Apicolypse::Initialize()
|
||||||
|
{
|
||||||
|
ComponentResult result = AUEffectBase::Initialize();
|
||||||
|
if (result == noErr)
|
||||||
|
Reset(kAudioUnitScope_Global, 0);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark ____ApicolypseEffectKernel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::ApicolypseKernel::Reset()
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
void Apicolypse::ApicolypseKernel::Reset()
|
||||||
|
{
|
||||||
|
for(int count = 0; count < 34; count++) {b[count] = 0;}
|
||||||
|
lastSample = 0.0;
|
||||||
|
fpd = 17;
|
||||||
|
}
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
// Apicolypse::ApicolypseKernel::Process
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
void Apicolypse::ApicolypseKernel::Process( const Float32 *inSourceP,
|
||||||
|
Float32 *inDestP,
|
||||||
|
UInt32 inFramesToProcess,
|
||||||
|
UInt32 inNumChannels,
|
||||||
|
bool &ioSilence )
|
||||||
|
{
|
||||||
|
UInt32 nSampleFrames = inFramesToProcess;
|
||||||
|
const Float32 *sourceP = inSourceP;
|
||||||
|
Float32 *destP = inDestP;
|
||||||
|
|
||||||
|
Float64 threshold = GetParameter( kParam_One );
|
||||||
|
Float64 hardness;
|
||||||
|
Float64 breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
Float64 bridgerectifier;
|
||||||
|
Float64 sqdrive = GetParameter( kParam_Two );
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
Float64 indrive = GetParameter( kParam_Three );
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//no gain loss of convolution for APIcolypse
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
Float64 randy;
|
||||||
|
Float64 outlevel = GetParameter( kParam_Four );
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
|
||||||
|
while (nSampleFrames-- > 0) {
|
||||||
|
long double inputSample = *sourceP;
|
||||||
|
if (fabs(inputSample)<1.18e-37) inputSample = fpd * 1.18e-37;
|
||||||
|
|
||||||
|
inputSample *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
b[33] = b[32]; b[32] = b[31];
|
||||||
|
b[31] = b[30]; b[30] = b[29]; b[29] = b[28]; b[28] = b[27]; b[27] = b[26]; b[26] = b[25]; b[25] = b[24]; b[24] = b[23];
|
||||||
|
b[23] = b[22]; b[22] = b[21]; b[21] = b[20]; b[20] = b[19]; b[19] = b[18]; b[18] = b[17]; b[17] = b[16]; b[16] = b[15];
|
||||||
|
b[15] = b[14]; b[14] = b[13]; b[13] = b[12]; b[12] = b[11]; b[11] = b[10]; b[10] = b[9]; b[9] = b[8]; b[8] = b[7];
|
||||||
|
b[7] = b[6]; b[6] = b[5]; b[5] = b[4]; b[4] = b[3]; b[3] = b[2]; b[2] = b[1]; b[1] = b[0]; b[0] = inputSample * sqdrive;
|
||||||
|
inputSample += (b[1] * (0.09299870608542582 - (0.00009582362368873*fabs(b[1]))));
|
||||||
|
inputSample -= (b[2] * (0.11947847710741009 - (0.00004500891602770*fabs(b[2]))));
|
||||||
|
inputSample += (b[3] * (0.09071606264761795 + (0.00005639498984741*fabs(b[3]))));
|
||||||
|
inputSample -= (b[4] * (0.08561982770836980 - (0.00004964855606916*fabs(b[4]))));
|
||||||
|
inputSample += (b[5] * (0.06440549220820363 + (0.00002428052139507*fabs(b[5]))));
|
||||||
|
inputSample -= (b[6] * (0.05987991812840746 + (0.00000101867082290*fabs(b[6]))));
|
||||||
|
inputSample += (b[7] * (0.03980233135839382 + (0.00003312430049041*fabs(b[7]))));
|
||||||
|
inputSample -= (b[8] * (0.03648402630896925 - (0.00002116186381142*fabs(b[8]))));
|
||||||
|
inputSample += (b[9] * (0.01826860869525248 + (0.00003115110025396*fabs(b[9]))));
|
||||||
|
inputSample -= (b[10] * (0.01723968622495364 - (0.00002450634121718*fabs(b[10]))));
|
||||||
|
inputSample += (b[11] * (0.00187588812316724 + (0.00002838206198968*fabs(b[11]))));
|
||||||
|
inputSample -= (b[12] * (0.00381796423957237 - (0.00003155815499462*fabs(b[12]))));
|
||||||
|
inputSample -= (b[13] * (0.00852092214496733 - (0.00001702651162392*fabs(b[13]))));
|
||||||
|
inputSample += (b[14] * (0.00315560292270588 + (0.00002547861676047*fabs(b[14]))));
|
||||||
|
inputSample -= (b[15] * (0.01258630914496868 - (0.00004555319243213*fabs(b[15]))));
|
||||||
|
inputSample += (b[16] * (0.00536435648963575 + (0.00001812393657101*fabs(b[16]))));
|
||||||
|
inputSample -= (b[17] * (0.01272975658159178 - (0.00004103775306121*fabs(b[17]))));
|
||||||
|
inputSample += (b[18] * (0.00403818975172755 + (0.00003764615492871*fabs(b[18]))));
|
||||||
|
inputSample -= (b[19] * (0.01042617366897483 - (0.00003605210426041*fabs(b[19]))));
|
||||||
|
inputSample += (b[20] * (0.00126599583390057 + (0.00004305458668852*fabs(b[20]))));
|
||||||
|
inputSample -= (b[21] * (0.00747876207688339 - (0.00003731207018977*fabs(b[21]))));
|
||||||
|
inputSample -= (b[22] * (0.00149873689175324 - (0.00005086601800791*fabs(b[22]))));
|
||||||
|
inputSample -= (b[23] * (0.00503221309488033 - (0.00003636086782783*fabs(b[23]))));
|
||||||
|
inputSample -= (b[24] * (0.00342998224655821 - (0.00004103091180506*fabs(b[24]))));
|
||||||
|
inputSample -= (b[25] * (0.00355585977903117 - (0.00003698982145400*fabs(b[25]))));
|
||||||
|
inputSample -= (b[26] * (0.00437201792934817 - (0.00002720235666939*fabs(b[26]))));
|
||||||
|
inputSample -= (b[27] * (0.00299217874451556 - (0.00004446954727956*fabs(b[27]))));
|
||||||
|
inputSample -= (b[28] * (0.00457924652487249 - (0.00003859065778860*fabs(b[28]))));
|
||||||
|
inputSample -= (b[29] * (0.00298182934892027 - (0.00002064710931733*fabs(b[29]))));
|
||||||
|
inputSample -= (b[30] * (0.00438838441540584 - (0.00005223008424866*fabs(b[30]))));
|
||||||
|
inputSample -= (b[31] * (0.00323984218794705 - (0.00003397987535887*fabs(b[31]))));
|
||||||
|
inputSample -= (b[32] * (0.00407693981307314 - (0.00003935772436894*fabs(b[32]))));
|
||||||
|
inputSample -= (b[33] * (0.00350435348467321 - (0.00005525463935338*fabs(b[33]))));}
|
||||||
|
//we apply the first 28 samples of the Neve impulse- dynamically adjusted.
|
||||||
|
if (fabs(inputSample) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSample)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSample > 0) inputSample = bridgerectifier+threshold;
|
||||||
|
else inputSample = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSample = ((inputSample*(1-randy))+(lastSample*randy)) * outlevel;
|
||||||
|
lastSample = inputSample;
|
||||||
|
|
||||||
|
//begin 32 bit floating point dither
|
||||||
|
int expon; frexpf((float)inputSample, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSample += ((double(fpd)-uint32_t(0x7fffffff)) * 5.5e-36l * pow(2,expon+62));
|
||||||
|
//end 32 bit floating point dither
|
||||||
|
|
||||||
|
*destP = inputSample;
|
||||||
|
|
||||||
|
sourceP += inNumChannels; destP += inNumChannels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
1
plugins/MacAU/Apicolypse/Apicolypse.exp
Executable file
1
plugins/MacAU/Apicolypse/Apicolypse.exp
Executable file
|
|
@ -0,0 +1 @@
|
||||||
|
_ApicolypseEntry
|
||||||
147
plugins/MacAU/Apicolypse/Apicolypse.h
Executable file
147
plugins/MacAU/Apicolypse/Apicolypse.h
Executable file
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*
|
||||||
|
* File: Apicolypse.h
|
||||||
|
*
|
||||||
|
* Version: 1.0
|
||||||
|
*
|
||||||
|
* Created: 1/11/20
|
||||||
|
*
|
||||||
|
* Copyright: Copyright © 2020 Airwindows, All Rights Reserved
|
||||||
|
*
|
||||||
|
* 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 "ApicolypseVersion.h"
|
||||||
|
|
||||||
|
#if AU_DEBUG_DISPATCHER
|
||||||
|
#include "AUDebugDispatcher.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_h__
|
||||||
|
#define __Apicolypse_h__
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark ____Apicolypse Parameters
|
||||||
|
|
||||||
|
// parameters
|
||||||
|
static const float kDefaultValue_ParamOne = 0.70;
|
||||||
|
static const float kDefaultValue_ParamTwo = 1.0;
|
||||||
|
static const float kDefaultValue_ParamThree = 1.0;
|
||||||
|
static const float kDefaultValue_ParamFour = 1.0;
|
||||||
|
//let's assume we always have a default of 0.0, for no effect
|
||||||
|
|
||||||
|
static CFStringRef kParameterOneName = CFSTR("Hardness");
|
||||||
|
static CFStringRef kParameterTwoName = CFSTR("Personality");
|
||||||
|
static CFStringRef kParameterThreeName = CFSTR("Drive");
|
||||||
|
static CFStringRef kParameterFourName = CFSTR("Output Level");
|
||||||
|
//Alter the name if desired, but using the plugin name is a start
|
||||||
|
|
||||||
|
enum {
|
||||||
|
kParam_One =0,
|
||||||
|
kParam_Two =1,
|
||||||
|
kParam_Three =2,
|
||||||
|
kParam_Four =3,
|
||||||
|
//Add your parameters here...
|
||||||
|
kNumberOfParameters=4
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma mark ____Apicolypse
|
||||||
|
class Apicolypse : public AUEffectBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Apicolypse(AudioUnit component);
|
||||||
|
#if AU_DEBUG_DISPATCHER
|
||||||
|
virtual ~Apicolypse () { delete mDebugDispatcher; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
virtual AUKernelBase * NewKernel() { return new ApicolypseKernel(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 kApicolypseVersion; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
class ApicolypseKernel : public AUKernelBase // most of the real work happens here
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ApicolypseKernel(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:
|
||||||
|
Float64 b[35];
|
||||||
|
Float64 lastSample;
|
||||||
|
uint32_t fpd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
61
plugins/MacAU/Apicolypse/Apicolypse.r
Executable file
61
plugins/MacAU/Apicolypse/Apicolypse.r
Executable file
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* File: Apicolypse.r
|
||||||
|
*
|
||||||
|
* Version: 1.0
|
||||||
|
*
|
||||||
|
* Created: 1/11/20
|
||||||
|
*
|
||||||
|
* Copyright: Copyright © 2020 Airwindows, All Rights Reserved
|
||||||
|
*
|
||||||
|
* 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 "ApicolypseVersion.h"
|
||||||
|
|
||||||
|
// Note that resource IDs must be spaced 2 apart for the 'STR ' name and description
|
||||||
|
#define kAudioUnitResID_Apicolypse 1000
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Apicolypse~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#define RES_ID kAudioUnitResID_Apicolypse
|
||||||
|
#define COMP_TYPE kAudioUnitType_Effect
|
||||||
|
#define COMP_SUBTYPE Apicolypse_COMP_SUBTYPE
|
||||||
|
#define COMP_MANUF Apicolypse_COMP_MANF
|
||||||
|
|
||||||
|
#define VERSION kApicolypseVersion
|
||||||
|
#define NAME "Airwindows: Apicolypse"
|
||||||
|
#define DESCRIPTION "Apicolypse AU"
|
||||||
|
#define ENTRY_POINT "ApicolypseEntry"
|
||||||
|
|
||||||
|
#include "AUResources.r"
|
||||||
1358
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.mode1v3
Executable file
1358
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
153
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.pbxuser
Executable file
153
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,153 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||||
|
activeBuildConfigurationName = Release;
|
||||||
|
activeTarget = 8D01CCC60486CAD60068D4B7 /* Apicolypse */;
|
||||||
|
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 = 603939692;
|
||||||
|
PBXWorkspaceStateSaveDate = 603939692;
|
||||||
|
};
|
||||||
|
perUserProjectItems = {
|
||||||
|
8B88B5F023FF683A0032C1CD /* PlistBookmark */ = 8B88B5F023FF683A0032C1CD /* PlistBookmark */;
|
||||||
|
8B88B5F123FF683A0032C1CD /* PBXTextBookmark */ = 8B88B5F123FF683A0032C1CD /* PBXTextBookmark */;
|
||||||
|
8B88B5F223FF683A0032C1CD /* PBXTextBookmark */ = 8B88B5F223FF683A0032C1CD /* PBXTextBookmark */;
|
||||||
|
8B88B5F323FF683A0032C1CD /* PBXBookmark */ = 8B88B5F323FF683A0032C1CD /* PBXBookmark */;
|
||||||
|
8B88B5F423FF683A0032C1CD /* PBXTextBookmark */ = 8B88B5F423FF683A0032C1CD /* PBXTextBookmark */;
|
||||||
|
};
|
||||||
|
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
|
||||||
|
userBuildSettings = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8B88B5F023FF683A0032C1CD /* PlistBookmark */ = {
|
||||||
|
isa = PlistBookmark;
|
||||||
|
fRef = 8D01CCD10486CAD60068D4B7 /* Info.plist */;
|
||||||
|
fallbackIsa = PBXBookmark;
|
||||||
|
isK = 0;
|
||||||
|
kPath = (
|
||||||
|
CFBundleName,
|
||||||
|
);
|
||||||
|
name = /Users/christopherjohnson/Desktop/Plugins/MacAU/Apicolypse/Info.plist;
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 9223372036854775807;
|
||||||
|
};
|
||||||
|
8B88B5F123FF683A0032C1CD /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 8BA05A660720730100365D66 /* Apicolypse.cpp */;
|
||||||
|
name = "Apicolypse.cpp: 287";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 14766;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 501;
|
||||||
|
vrLoc = 14557;
|
||||||
|
};
|
||||||
|
8B88B5F223FF683A0032C1CD /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 8BA05A690720730100365D66 /* ApicolypseVersion.h */;
|
||||||
|
name = "ApicolypseVersion.h: 54";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 2902;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 297;
|
||||||
|
vrLoc = 2667;
|
||||||
|
};
|
||||||
|
8B88B5F323FF683A0032C1CD /* PBXBookmark */ = {
|
||||||
|
isa = PBXBookmark;
|
||||||
|
fRef = 8BC6025B073B072D006C4272 /* Apicolypse.h */;
|
||||||
|
};
|
||||||
|
8B88B5F423FF683A0032C1CD /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 8BC6025B073B072D006C4272 /* Apicolypse.h */;
|
||||||
|
name = "Apicolypse.h: 139";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 5565;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 438;
|
||||||
|
vrLoc = 2767;
|
||||||
|
};
|
||||||
|
8BA05A660720730100365D66 /* Apicolypse.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {936, 3887}}";
|
||||||
|
sepNavSelRange = "{10361, 0}";
|
||||||
|
sepNavVisRange = "{11666, 3452}";
|
||||||
|
sepNavWindowFrame = "{{717, 65}, {870, 813}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8BA05A690720730100365D66 /* ApicolypseVersion.h */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {824, 767}}";
|
||||||
|
sepNavSelRange = "{2902, 0}";
|
||||||
|
sepNavVisRange = "{2667, 297}";
|
||||||
|
sepNavWindowFrame = "{{15, 60}, {870, 813}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8BC6025B073B072D006C4272 /* Apicolypse.h */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {894, 1911}}";
|
||||||
|
sepNavSelRange = "{5565, 0}";
|
||||||
|
sepNavVisRange = "{2767, 438}";
|
||||||
|
sepNavWindowFrame = "{{15, 60}, {870, 813}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8BD3CCB8148830B20062E48C /* Source Control */ = {
|
||||||
|
isa = PBXSourceControlManager;
|
||||||
|
fallbackIsa = XCSourceControlManager;
|
||||||
|
isSCMEnabled = 0;
|
||||||
|
scmConfiguration = {
|
||||||
|
repositoryNamesForRoots = {
|
||||||
|
"" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8BD3CCB9148830B20062E48C /* Code sense */ = {
|
||||||
|
isa = PBXCodeSenseManager;
|
||||||
|
indexTemplatePath = "";
|
||||||
|
};
|
||||||
|
8D01CCC60486CAD60068D4B7 /* Apicolypse */ = {
|
||||||
|
activeExec = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
1508
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.perspectivev3
Executable file
1508
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
490
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/project.pbxproj
Executable file
490
plugins/MacAU/Apicolypse/Apicolypse.xcodeproj/project.pbxproj
Executable file
|
|
@ -0,0 +1,490 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 45;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
3EEA126E089847F5002C6BFC /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EEA126B089847F5002C6BFC /* CAVectorUnit.cpp */; };
|
||||||
|
3EEA126F089847F5002C6BFC /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126C089847F5002C6BFC /* CAVectorUnit.h */; };
|
||||||
|
3EEA1270089847F5002C6BFC /* CAVectorUnitTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EEA126D089847F5002C6BFC /* CAVectorUnitTypes.h */; };
|
||||||
|
8B4119B70749654200361ABE /* Apicolypse.r in Rez */ = {isa = PBXBuildFile; fileRef = 8BA05A680720730100365D66 /* Apicolypse.r */; };
|
||||||
|
8BA05A6B0720730100365D66 /* Apicolypse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A660720730100365D66 /* Apicolypse.cpp */; };
|
||||||
|
8BA05A6E0720730100365D66 /* ApicolypseVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A690720730100365D66 /* ApicolypseVersion.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 /* Apicolypse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC6025B073B072D006C4272 /* Apicolypse.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 /* Apicolypse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Apicolypse.cpp; sourceTree = "<group>"; };
|
||||||
|
8BA05A670720730100365D66 /* Apicolypse.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; path = Apicolypse.exp; sourceTree = "<group>"; };
|
||||||
|
8BA05A680720730100365D66 /* Apicolypse.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = Apicolypse.r; sourceTree = "<group>"; };
|
||||||
|
8BA05A690720730100365D66 /* ApicolypseVersion.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ApicolypseVersion.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 /* Apicolypse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Apicolypse.h; sourceTree = "<group>"; };
|
||||||
|
8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
8D01CCD20486CAD60068D4B7 /* Apicolypse.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Apicolypse.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 /* Apicolypse */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
08FB77ADFE841716C02AAC07 /* Source */,
|
||||||
|
089C167CFE841241C02AAC07 /* Resources */,
|
||||||
|
089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
|
||||||
|
19C28FB4FE9D528D11CA2CBB /* Products */,
|
||||||
|
);
|
||||||
|
name = Apicolypse;
|
||||||
|
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 /* Apicolypse.component */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
8BA05A56072072A900365D66 /* AU Source */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
8BC6025B073B072D006C4272 /* Apicolypse.h */,
|
||||||
|
8BA05A660720730100365D66 /* Apicolypse.cpp */,
|
||||||
|
8BA05A670720730100365D66 /* Apicolypse.exp */,
|
||||||
|
8BA05A680720730100365D66 /* Apicolypse.r */,
|
||||||
|
8BA05A690720730100365D66 /* ApicolypseVersion.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 /* ApicolypseVersion.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 /* Apicolypse.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 /* Apicolypse */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 3E4BA243089833B7007656EC /* Build configuration list for PBXNativeTarget "Apicolypse" */;
|
||||||
|
buildPhases = (
|
||||||
|
8D01CCC70486CAD60068D4B7 /* Headers */,
|
||||||
|
8D01CCC90486CAD60068D4B7 /* Resources */,
|
||||||
|
8D01CCCB0486CAD60068D4B7 /* Sources */,
|
||||||
|
8D01CCCD0486CAD60068D4B7 /* Frameworks */,
|
||||||
|
8D01CCCF0486CAD60068D4B7 /* Rez */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = Apicolypse;
|
||||||
|
productInstallPath = "$(HOME)/Library/Bundles";
|
||||||
|
productName = Apicolypse;
|
||||||
|
productReference = 8D01CCD20486CAD60068D4B7 /* Apicolypse.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 "Apicolypse" */;
|
||||||
|
compatibilityVersion = "Xcode 3.1";
|
||||||
|
developmentRegion = English;
|
||||||
|
hasScannedForEncodings = 1;
|
||||||
|
knownRegions = (
|
||||||
|
English,
|
||||||
|
Japanese,
|
||||||
|
French,
|
||||||
|
German,
|
||||||
|
);
|
||||||
|
mainGroup = 089C166AFE841209C02AAC07 /* Apicolypse */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
8D01CCC60486CAD60068D4B7 /* Apicolypse */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* 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 /* Apicolypse.r in Rez */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXRezBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
8D01CCCB0486CAD60068D4B7 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
8BA05A6B0720730100365D66 /* Apicolypse.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 = Apicolypse.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 = Apicolypse;
|
||||||
|
WRAPPER_EXTENSION = component;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
3E4BA245089833B7007656EC /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ARCHS = (
|
||||||
|
ppc,
|
||||||
|
i386,
|
||||||
|
x86_64,
|
||||||
|
);
|
||||||
|
EXPORTED_SYMBOLS_FILE = Apicolypse.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 = Apicolypse;
|
||||||
|
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 "Apicolypse" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
3E4BA244089833B7007656EC /* Debug */,
|
||||||
|
3E4BA245089833B7007656EC /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
3E4BA247089833B7007656EC /* Build configuration list for PBXProject "Apicolypse" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
3E4BA248089833B7007656EC /* Debug */,
|
||||||
|
3E4BA249089833B7007656EC /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Debug;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 089C1669FE841209C02AAC07 /* Project object */;
|
||||||
|
}
|
||||||
58
plugins/MacAU/Apicolypse/ApicolypseVersion.h
Executable file
58
plugins/MacAU/Apicolypse/ApicolypseVersion.h
Executable file
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* File: ApicolypseVersion.h
|
||||||
|
*
|
||||||
|
* Version: 1.0
|
||||||
|
*
|
||||||
|
* Created: 1/11/20
|
||||||
|
*
|
||||||
|
* Copyright: Copyright © 2020 Airwindows, All Rights Reserved
|
||||||
|
*
|
||||||
|
* 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 __ApicolypseVersion_h__
|
||||||
|
#define __ApicolypseVersion_h__
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define kApicolypseVersion 0xFFFFFFFF
|
||||||
|
#else
|
||||||
|
#define kApicolypseVersion 0x00010000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//~~~~~~~~~~~~~~ Change!!! ~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
#define Apicolypse_COMP_MANF 'Dthr'
|
||||||
|
#define Apicolypse_COMP_SUBTYPE 'apic'
|
||||||
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
BIN
plugins/MacAU/Apicolypse/English.lproj/InfoPlist.strings
Executable file
BIN
plugins/MacAU/Apicolypse/English.lproj/InfoPlist.strings
Executable file
Binary file not shown.
28
plugins/MacAU/Apicolypse/Info.plist
Executable file
28
plugins/MacAU/Apicolypse/Info.plist
Executable file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.airwindows.audiounit.${PRODUCT_NAME:identifier}</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${PROJECTNAMEASIDENTIFIER}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>BNDL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>DthX</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
16
plugins/MacAU/Apicolypse/version.plist
Executable file
16
plugins/MacAU/Apicolypse/version.plist
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>BuildVersion</key>
|
||||||
|
<string>3</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>ProjectName</key>
|
||||||
|
<string>${EXECUTABLE_NAME}</string>
|
||||||
|
<key>SourceVersion</key>
|
||||||
|
<string>590000</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
132
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.pbxuser
Executable file
132
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.pbxuser
Executable file
|
|
@ -0,0 +1,132 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||||
|
activeBuildConfigurationName = Release;
|
||||||
|
activeTarget = 8D01CCC60486CAD60068D4B7 /* Apicolypse */;
|
||||||
|
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
|
||||||
|
perUserDictionary = {
|
||||||
|
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||||
|
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||||
|
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||||
|
PBXFileTableDataSourceColumnWidthsKey = (
|
||||||
|
20,
|
||||||
|
364,
|
||||||
|
20,
|
||||||
|
48,
|
||||||
|
43,
|
||||||
|
43,
|
||||||
|
20,
|
||||||
|
);
|
||||||
|
PBXFileTableDataSourceColumnsKey = (
|
||||||
|
PBXFileDataSource_FiletypeID,
|
||||||
|
PBXFileDataSource_Filename_ColumnID,
|
||||||
|
PBXFileDataSource_Built_ColumnID,
|
||||||
|
PBXFileDataSource_ObjectSize_ColumnID,
|
||||||
|
PBXFileDataSource_Errors_ColumnID,
|
||||||
|
PBXFileDataSource_Warnings_ColumnID,
|
||||||
|
PBXFileDataSource_Target_ColumnID,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
|
||||||
|
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||||
|
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||||
|
PBXFileTableDataSourceColumnWidthsKey = (
|
||||||
|
20,
|
||||||
|
324,
|
||||||
|
60,
|
||||||
|
20,
|
||||||
|
48,
|
||||||
|
43,
|
||||||
|
43,
|
||||||
|
);
|
||||||
|
PBXFileTableDataSourceColumnsKey = (
|
||||||
|
PBXFileDataSource_FiletypeID,
|
||||||
|
PBXFileDataSource_Filename_ColumnID,
|
||||||
|
PBXTargetDataSource_PrimaryAttribute,
|
||||||
|
PBXFileDataSource_Built_ColumnID,
|
||||||
|
PBXFileDataSource_ObjectSize_ColumnID,
|
||||||
|
PBXFileDataSource_Errors_ColumnID,
|
||||||
|
PBXFileDataSource_Warnings_ColumnID,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
PBXPerProjectTemplateStateSaveDate = 604006512;
|
||||||
|
PBXWorkspaceStateSaveDate = 604006512;
|
||||||
|
};
|
||||||
|
perUserProjectItems = {
|
||||||
|
8B88B64B240068790032C1CD /* PBXTextBookmark */ = 8B88B64B240068790032C1CD /* PBXTextBookmark */;
|
||||||
|
8B88B64C240068790032C1CD /* PBXTextBookmark */ = 8B88B64C240068790032C1CD /* PBXTextBookmark */;
|
||||||
|
};
|
||||||
|
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
|
||||||
|
userBuildSettings = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
2407DEB6089929BA00EB68BF /* Apicolypse.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {848, 1898}}";
|
||||||
|
sepNavSelRange = "{4891, 0}";
|
||||||
|
sepNavVisRange = "{0, 2023}";
|
||||||
|
sepNavWindowFrame = "{{12, 57}, {895, 821}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
245463B80991757100464AD3 /* Apicolypse.h */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {866, 949}}";
|
||||||
|
sepNavSelRange = "{2596, 0}";
|
||||||
|
sepNavVisRange = "{373, 2228}";
|
||||||
|
sepNavWindowFrame = "{{20, 57}, {895, 821}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {859, 20267}}";
|
||||||
|
sepNavSelRange = "{10616, 0}";
|
||||||
|
sepNavVisRange = "{9653, 2414}";
|
||||||
|
sepNavWindowFrame = "{{15, 42}, {895, 831}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24D8286F09A914000093AEF8 /* ApicolypseProc.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {754, 5083}}";
|
||||||
|
sepNavSelRange = "{21209, 0}";
|
||||||
|
sepNavVisRange = "{21052, 393}";
|
||||||
|
sepNavWindowFrame = "{{318, 57}, {895, 821}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8B02375E1D42B1C400E1E8C8 /* Source Control */ = {
|
||||||
|
isa = PBXSourceControlManager;
|
||||||
|
fallbackIsa = XCSourceControlManager;
|
||||||
|
isSCMEnabled = 0;
|
||||||
|
scmConfiguration = {
|
||||||
|
repositoryNamesForRoots = {
|
||||||
|
"" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8B02375F1D42B1C400E1E8C8 /* Code sense */ = {
|
||||||
|
isa = PBXCodeSenseManager;
|
||||||
|
indexTemplatePath = "";
|
||||||
|
};
|
||||||
|
8B88B64B240068790032C1CD /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 24D8286F09A914000093AEF8 /* ApicolypseProc.cpp */;
|
||||||
|
name = "ApicolypseProc.cpp: 343";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 21209;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 393;
|
||||||
|
vrLoc = 21052;
|
||||||
|
};
|
||||||
|
8B88B64C240068790032C1CD /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 24D8286F09A914000093AEF8 /* ApicolypseProc.cpp */;
|
||||||
|
name = "ApicolypseProc.cpp: 343";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 21209;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 393;
|
||||||
|
vrLoc = 21052;
|
||||||
|
};
|
||||||
|
8D01CCC60486CAD60068D4B7 /* Apicolypse */ = {
|
||||||
|
activeExec = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
1511
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.perspectivev3
Executable file
1511
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/christopherjohnson.perspectivev3
Executable file
File diff suppressed because it is too large
Load diff
2201
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/project.pbxproj
Executable file
2201
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/project.pbxproj
Executable file
File diff suppressed because it is too large
Load diff
7
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Executable file
7
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:Sample.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
Binary file not shown.
Binary file not shown.
1372
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/spiadmin.mode1v3
Executable file
1372
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/spiadmin.mode1v3
Executable file
File diff suppressed because it is too large
Load diff
143
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/spiadmin.pbxuser
Executable file
143
plugins/MacVST/Apicolypse/Apicolypse.xcodeproj/spiadmin.pbxuser
Executable file
|
|
@ -0,0 +1,143 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
089C1669FE841209C02AAC07 /* Project object */ = {
|
||||||
|
activeBuildConfigurationName = Release;
|
||||||
|
activeTarget = 8D01CCC60486CAD60068D4B7 /* Gain */;
|
||||||
|
codeSenseManager = 91857D95148EF55400AAA11B /* Code sense */;
|
||||||
|
perUserDictionary = {
|
||||||
|
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||||
|
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||||
|
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||||
|
PBXFileTableDataSourceColumnWidthsKey = (
|
||||||
|
20,
|
||||||
|
829,
|
||||||
|
20,
|
||||||
|
48,
|
||||||
|
43,
|
||||||
|
43,
|
||||||
|
20,
|
||||||
|
);
|
||||||
|
PBXFileTableDataSourceColumnsKey = (
|
||||||
|
PBXFileDataSource_FiletypeID,
|
||||||
|
PBXFileDataSource_Filename_ColumnID,
|
||||||
|
PBXFileDataSource_Built_ColumnID,
|
||||||
|
PBXFileDataSource_ObjectSize_ColumnID,
|
||||||
|
PBXFileDataSource_Errors_ColumnID,
|
||||||
|
PBXFileDataSource_Warnings_ColumnID,
|
||||||
|
PBXFileDataSource_Target_ColumnID,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
|
||||||
|
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||||
|
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||||
|
PBXFileTableDataSourceColumnWidthsKey = (
|
||||||
|
20,
|
||||||
|
789,
|
||||||
|
60,
|
||||||
|
20,
|
||||||
|
48,
|
||||||
|
43,
|
||||||
|
43,
|
||||||
|
);
|
||||||
|
PBXFileTableDataSourceColumnsKey = (
|
||||||
|
PBXFileDataSource_FiletypeID,
|
||||||
|
PBXFileDataSource_Filename_ColumnID,
|
||||||
|
PBXTargetDataSource_PrimaryAttribute,
|
||||||
|
PBXFileDataSource_Built_ColumnID,
|
||||||
|
PBXFileDataSource_ObjectSize_ColumnID,
|
||||||
|
PBXFileDataSource_Errors_ColumnID,
|
||||||
|
PBXFileDataSource_Warnings_ColumnID,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
PBXPerProjectTemplateStateSaveDate = 345089498;
|
||||||
|
PBXWorkspaceStateSaveDate = 345089498;
|
||||||
|
};
|
||||||
|
perUserProjectItems = {
|
||||||
|
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = 911C2A9D1491A5F600A430AF /* PBXTextBookmark */;
|
||||||
|
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = 915DCCBB1491A5B8008574E6 /* PBXTextBookmark */;
|
||||||
|
};
|
||||||
|
sourceControlManager = 91857D94148EF55400AAA11B /* Source Control */;
|
||||||
|
userBuildSettings = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
2407DEB6089929BA00EB68BF /* Gain.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {992, 1768}}";
|
||||||
|
sepNavSelRange = "{247, 0}";
|
||||||
|
sepNavVisRange = "{0, 1657}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
245463B80991757100464AD3 /* Gain.h */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {992, 975}}";
|
||||||
|
sepNavSelRange = "{1552, 0}";
|
||||||
|
sepNavVisRange = "{796, 1857}";
|
||||||
|
sepNavWindowFrame = "{{15, 465}, {750, 558}}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24A2FF9A0F90D1DD003BB5A7 /* adelaymain.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {992, 488}}";
|
||||||
|
sepNavSelRange = "{0, 0}";
|
||||||
|
sepNavVisRange = "{0, 798}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24A2FFDB0F90D1DD003BB5A7 /* audioeffectx.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {859, 19825}}";
|
||||||
|
sepNavSelRange = "{10641, 0}";
|
||||||
|
sepNavVisRange = "{10076, 1095}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24D8286F09A914000093AEF8 /* GainProc.cpp */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {992, 482}}";
|
||||||
|
sepNavSelRange = "{239, 0}";
|
||||||
|
sepNavVisRange = "{0, 950}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24D8287E09A9164A0093AEF8 /* xcode_vst_prefix.h */ = {
|
||||||
|
uiCtxt = {
|
||||||
|
sepNavIntBoundsRect = "{{0, 0}, {992, 493}}";
|
||||||
|
sepNavSelRange = "{249, 0}";
|
||||||
|
sepNavVisRange = "{0, 249}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
8D01CCC60486CAD60068D4B7 /* Gain */ = {
|
||||||
|
activeExec = 0;
|
||||||
|
};
|
||||||
|
911C2A9D1491A5F600A430AF /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
|
||||||
|
name = "Gain.cpp: 10";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 247;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 1657;
|
||||||
|
vrLoc = 0;
|
||||||
|
};
|
||||||
|
915DCCBB1491A5B8008574E6 /* PBXTextBookmark */ = {
|
||||||
|
isa = PBXTextBookmark;
|
||||||
|
fRef = 2407DEB6089929BA00EB68BF /* Gain.cpp */;
|
||||||
|
name = "Gain.cpp: 10";
|
||||||
|
rLen = 0;
|
||||||
|
rLoc = 247;
|
||||||
|
rType = 0;
|
||||||
|
vrLen = 1625;
|
||||||
|
vrLoc = 0;
|
||||||
|
};
|
||||||
|
91857D94148EF55400AAA11B /* Source Control */ = {
|
||||||
|
isa = PBXSourceControlManager;
|
||||||
|
fallbackIsa = XCSourceControlManager;
|
||||||
|
isSCMEnabled = 0;
|
||||||
|
scmConfiguration = {
|
||||||
|
repositoryNamesForRoots = {
|
||||||
|
"" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
91857D95148EF55400AAA11B /* Code sense */ = {
|
||||||
|
isa = PBXCodeSenseManager;
|
||||||
|
indexTemplatePath = "";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "0720"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
|
||||||
|
BuildableName = "Gain.vst"
|
||||||
|
BlueprintName = "Gain"
|
||||||
|
ReferencedContainer = "container:Gain.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
|
||||||
|
BuildableName = "Gain.vst"
|
||||||
|
BlueprintName = "Gain"
|
||||||
|
ReferencedContainer = "container:Gain.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
|
||||||
|
BuildableName = "Gain.vst"
|
||||||
|
BlueprintName = "Gain"
|
||||||
|
ReferencedContainer = "container:Gain.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>SchemeUserState</key>
|
||||||
|
<dict>
|
||||||
|
<key>Gain.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>8</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
<dict>
|
||||||
|
<key>8D01CCC60486CAD60068D4B7</key>
|
||||||
|
<dict>
|
||||||
|
<key>primary</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>SchemeUserState</key>
|
||||||
|
<dict>
|
||||||
|
<key>«PROJECTNAME».xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
<dict>
|
||||||
|
<key>8D01CCC60486CAD60068D4B7</key>
|
||||||
|
<dict>
|
||||||
|
<key>primary</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
|
||||||
|
BuildableName = "«PROJECTNAME».vst"
|
||||||
|
BlueprintName = "«PROJECTNAME»"
|
||||||
|
ReferencedContainer = "container:Sample.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
24
plugins/MacVST/Apicolypse/mac/Info.plist
Executable file
24
plugins/MacVST/Apicolypse/mac/Info.plist
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>Apicolypse</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.airwindows.Apicolypse</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>BNDL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>Dthr</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
1
plugins/MacVST/Apicolypse/mac/PkgInfo
Executable file
1
plugins/MacVST/Apicolypse/mac/PkgInfo
Executable file
|
|
@ -0,0 +1 @@
|
||||||
|
BNDL????
|
||||||
17
plugins/MacVST/Apicolypse/mac/xcode_vst_prefix.h
Executable file
17
plugins/MacVST/Apicolypse/mac/xcode_vst_prefix.h
Executable file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#define MAC 1
|
||||||
|
#define MACX 1
|
||||||
|
|
||||||
|
#define USE_NAMESPACE 0
|
||||||
|
|
||||||
|
#define TARGET_API_MAC_CARBON 1
|
||||||
|
#define USENAVSERVICES 1
|
||||||
|
|
||||||
|
#define __CF_USE_FRAMEWORK_INCLUDES__
|
||||||
|
|
||||||
|
#if __MWERKS__
|
||||||
|
#define __NOEXTENSIONS__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define QUARTZ 1
|
||||||
|
|
||||||
|
#include <AvailabilityMacros.h>
|
||||||
145
plugins/MacVST/Apicolypse/source/Apicolypse.cpp
Executable file
145
plugins/MacVST/Apicolypse/source/Apicolypse.cpp
Executable file
|
|
@ -0,0 +1,145 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Apicolypse(audioMaster);}
|
||||||
|
|
||||||
|
Apicolypse::Apicolypse(audioMasterCallback audioMaster) :
|
||||||
|
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||||
|
{
|
||||||
|
A = 0.70;
|
||||||
|
B = 0.3333333;
|
||||||
|
C = 0.3333333;
|
||||||
|
D = 1.0;
|
||||||
|
for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;}
|
||||||
|
lastSampleR = 0.0;lastSampleL = 0.0;
|
||||||
|
|
||||||
|
fpd = 17;
|
||||||
|
//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
|
||||||
|
}
|
||||||
|
|
||||||
|
Apicolypse::~Apicolypse() {}
|
||||||
|
VstInt32 Apicolypse::getVendorVersion () {return 1000;}
|
||||||
|
void Apicolypse::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||||
|
void Apicolypse::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 Apicolypse::getChunk (void** data, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
|
||||||
|
chunkData[0] = A;
|
||||||
|
chunkData[1] = B;
|
||||||
|
chunkData[2] = C;
|
||||||
|
chunkData[3] = D;
|
||||||
|
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
|
||||||
|
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
|
||||||
|
started with. */
|
||||||
|
|
||||||
|
*data = chunkData;
|
||||||
|
return kNumParameters * sizeof(float);
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::setChunk (void* data, VstInt32 byteSize, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)data;
|
||||||
|
A = pinParameter(chunkData[0]);
|
||||||
|
B = pinParameter(chunkData[1]);
|
||||||
|
C = pinParameter(chunkData[2]);
|
||||||
|
D = pinParameter(chunkData[3]);
|
||||||
|
/* We're ignoring byteSize as we found it to be a filthy liar */
|
||||||
|
|
||||||
|
/* calculate any other fields you need here - you could copy in
|
||||||
|
code from setParameter() here. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::setParameter(VstInt32 index, float value) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: A = value; break;
|
||||||
|
case kParamB: B = value; break;
|
||||||
|
case kParamC: C = value; break;
|
||||||
|
case kParamD: D = value; break;
|
||||||
|
default: throw; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Apicolypse::getParameter(VstInt32 index) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: return A; break;
|
||||||
|
case kParamB: return B; break;
|
||||||
|
case kParamC: return C; break;
|
||||||
|
case kParamD: return D; break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} return 0.0; //we only need to update the relevant name, this is simple to manage
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterName(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "Hardns", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "Persnlty", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "Drive", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "Output", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this is our labels for displaying in the VST host
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterDisplay(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: float2string (B*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: float2string (C*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this displays the values and handles 'popups' where it's discrete choices
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterLabel(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::canDo(char *text)
|
||||||
|
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||||
|
|
||||||
|
bool Apicolypse::getEffectName(char* name) {
|
||||||
|
vst_strncpy(name, "Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VstPlugCategory Apicolypse::getPlugCategory() {return kPlugCategEffect;}
|
||||||
|
|
||||||
|
bool Apicolypse::getProductString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Apicolypse::getVendorString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||||
|
}
|
||||||
72
plugins/MacVST/Apicolypse/source/Apicolypse.h
Executable file
72
plugins/MacVST/Apicolypse/source/Apicolypse.h
Executable file
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Created 8/12/11 by SPIAdmin
|
||||||
|
* Copyright (c) 2011 __MyCompanyName__, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#define __Apicolypse_H
|
||||||
|
|
||||||
|
#ifndef __audioeffect__
|
||||||
|
#include "audioeffectx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
kParamA = 0,
|
||||||
|
kParamB = 1,
|
||||||
|
kParamC = 2,
|
||||||
|
kParamD = 3,
|
||||||
|
kNumParameters = 4
|
||||||
|
}; //
|
||||||
|
|
||||||
|
const int kNumPrograms = 0;
|
||||||
|
const int kNumInputs = 2;
|
||||||
|
const int kNumOutputs = 2;
|
||||||
|
const unsigned long kUniqueId = 'apic'; //Change this to what the AU identity is!
|
||||||
|
|
||||||
|
class Apicolypse :
|
||||||
|
public AudioEffectX
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Apicolypse(audioMasterCallback audioMaster);
|
||||||
|
~Apicolypse();
|
||||||
|
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;
|
||||||
|
|
||||||
|
double bR[35];
|
||||||
|
double lastSampleR;
|
||||||
|
double bL[35];
|
||||||
|
double lastSampleL;
|
||||||
|
uint32_t fpd;
|
||||||
|
//default stuff
|
||||||
|
|
||||||
|
float A;
|
||||||
|
float B;
|
||||||
|
float C;
|
||||||
|
float D;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
360
plugins/MacVST/Apicolypse/source/ApicolypseProc.cpp
Executable file
360
plugins/MacVST/Apicolypse/source/ApicolypseProc.cpp
Executable file
|
|
@ -0,0 +1,360 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void Apicolypse::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
float* in1 = inputs[0];
|
||||||
|
float* in2 = inputs[1];
|
||||||
|
float* out1 = outputs[0];
|
||||||
|
float* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-37) inputSampleL = fpd * 1.18e-37;
|
||||||
|
if (fabs(inputSampleR)<1.18e-37) inputSampleR = fpd * 1.18e-37;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 32 bit stereo 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));
|
||||||
|
frexpf((float)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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 Apicolypse::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
double* in1 = inputs[0];
|
||||||
|
double* in2 = inputs[1];
|
||||||
|
double* out1 = outputs[0];
|
||||||
|
double* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-43) inputSampleL = fpd * 1.18e-43;
|
||||||
|
if (fabs(inputSampleR)<1.18e-43) inputSampleR = fpd * 1.18e-43;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 64 bit stereo floating point dither
|
||||||
|
int expon; frexp((double)inputSampleL, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
|
||||||
|
frexp((double)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
plugins/WinVST/Apicolypse/.vs/Console4Channel64/v14/.suo
Executable file
BIN
plugins/WinVST/Apicolypse/.vs/Console4Channel64/v14/.suo
Executable file
Binary file not shown.
BIN
plugins/WinVST/Apicolypse/.vs/VSTProject/v14/.suo
Executable file
BIN
plugins/WinVST/Apicolypse/.vs/VSTProject/v14/.suo
Executable file
Binary file not shown.
145
plugins/WinVST/Apicolypse/Apicolypse.cpp
Executable file
145
plugins/WinVST/Apicolypse/Apicolypse.cpp
Executable file
|
|
@ -0,0 +1,145 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new Apicolypse(audioMaster);}
|
||||||
|
|
||||||
|
Apicolypse::Apicolypse(audioMasterCallback audioMaster) :
|
||||||
|
AudioEffectX(audioMaster, kNumPrograms, kNumParameters)
|
||||||
|
{
|
||||||
|
A = 0.70;
|
||||||
|
B = 0.3333333;
|
||||||
|
C = 0.3333333;
|
||||||
|
D = 1.0;
|
||||||
|
for(int count = 0; count < 34; count++) {bR[count] = 0;bL[count] = 0;}
|
||||||
|
lastSampleR = 0.0;lastSampleL = 0.0;
|
||||||
|
|
||||||
|
fpd = 17;
|
||||||
|
//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
|
||||||
|
}
|
||||||
|
|
||||||
|
Apicolypse::~Apicolypse() {}
|
||||||
|
VstInt32 Apicolypse::getVendorVersion () {return 1000;}
|
||||||
|
void Apicolypse::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);}
|
||||||
|
void Apicolypse::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 Apicolypse::getChunk (void** data, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)calloc(kNumParameters, sizeof(float));
|
||||||
|
chunkData[0] = A;
|
||||||
|
chunkData[1] = B;
|
||||||
|
chunkData[2] = C;
|
||||||
|
chunkData[3] = D;
|
||||||
|
/* Note: The way this is set up, it will break if you manage to save settings on an Intel
|
||||||
|
machine and load them on a PPC Mac. However, it's fine if you stick to the machine you
|
||||||
|
started with. */
|
||||||
|
|
||||||
|
*data = chunkData;
|
||||||
|
return kNumParameters * sizeof(float);
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::setChunk (void* data, VstInt32 byteSize, bool isPreset)
|
||||||
|
{
|
||||||
|
float *chunkData = (float *)data;
|
||||||
|
A = pinParameter(chunkData[0]);
|
||||||
|
B = pinParameter(chunkData[1]);
|
||||||
|
C = pinParameter(chunkData[2]);
|
||||||
|
D = pinParameter(chunkData[3]);
|
||||||
|
/* We're ignoring byteSize as we found it to be a filthy liar */
|
||||||
|
|
||||||
|
/* calculate any other fields you need here - you could copy in
|
||||||
|
code from setParameter() here. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::setParameter(VstInt32 index, float value) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: A = value; break;
|
||||||
|
case kParamB: B = value; break;
|
||||||
|
case kParamC: C = value; break;
|
||||||
|
case kParamD: D = value; break;
|
||||||
|
default: throw; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Apicolypse::getParameter(VstInt32 index) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: return A; break;
|
||||||
|
case kParamB: return B; break;
|
||||||
|
case kParamC: return C; break;
|
||||||
|
case kParamD: return D; break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} return 0.0; //we only need to update the relevant name, this is simple to manage
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterName(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "Hardns", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "Persnlty", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "Drive", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "Output", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this is our labels for displaying in the VST host
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterDisplay(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: float2string (A, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: float2string (B*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: float2string (C*3.0, text, kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: float2string (D, text, kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
} //this displays the values and handles 'popups' where it's discrete choices
|
||||||
|
}
|
||||||
|
|
||||||
|
void Apicolypse::getParameterLabel(VstInt32 index, char *text) {
|
||||||
|
switch (index) {
|
||||||
|
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamC: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
case kParamD: vst_strncpy (text, "", kVstMaxParamStrLen); break;
|
||||||
|
default: break; // unknown parameter, shouldn't happen!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VstInt32 Apicolypse::canDo(char *text)
|
||||||
|
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know
|
||||||
|
|
||||||
|
bool Apicolypse::getEffectName(char* name) {
|
||||||
|
vst_strncpy(name, "Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VstPlugCategory Apicolypse::getPlugCategory() {return kPlugCategEffect;}
|
||||||
|
|
||||||
|
bool Apicolypse::getProductString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows Apicolypse", kVstMaxProductStrLen); return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Apicolypse::getVendorString(char* text) {
|
||||||
|
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true;
|
||||||
|
}
|
||||||
72
plugins/WinVST/Apicolypse/Apicolypse.h
Executable file
72
plugins/WinVST/Apicolypse/Apicolypse.h
Executable file
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Created 8/12/11 by SPIAdmin
|
||||||
|
* Copyright (c) 2011 __MyCompanyName__, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#define __Apicolypse_H
|
||||||
|
|
||||||
|
#ifndef __audioeffect__
|
||||||
|
#include "audioeffectx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
kParamA = 0,
|
||||||
|
kParamB = 1,
|
||||||
|
kParamC = 2,
|
||||||
|
kParamD = 3,
|
||||||
|
kNumParameters = 4
|
||||||
|
}; //
|
||||||
|
|
||||||
|
const int kNumPrograms = 0;
|
||||||
|
const int kNumInputs = 2;
|
||||||
|
const int kNumOutputs = 2;
|
||||||
|
const unsigned long kUniqueId = 'apic'; //Change this to what the AU identity is!
|
||||||
|
|
||||||
|
class Apicolypse :
|
||||||
|
public AudioEffectX
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Apicolypse(audioMasterCallback audioMaster);
|
||||||
|
~Apicolypse();
|
||||||
|
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;
|
||||||
|
|
||||||
|
double bR[35];
|
||||||
|
double lastSampleR;
|
||||||
|
double bL[35];
|
||||||
|
double lastSampleL;
|
||||||
|
uint32_t fpd;
|
||||||
|
//default stuff
|
||||||
|
|
||||||
|
float A;
|
||||||
|
float B;
|
||||||
|
float C;
|
||||||
|
float D;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
360
plugins/WinVST/Apicolypse/ApicolypseProc.cpp
Executable file
360
plugins/WinVST/Apicolypse/ApicolypseProc.cpp
Executable file
|
|
@ -0,0 +1,360 @@
|
||||||
|
/* ========================================
|
||||||
|
* Apicolypse - Apicolypse.h
|
||||||
|
* Copyright (c) 2016 airwindows, All rights reserved
|
||||||
|
* ======================================== */
|
||||||
|
|
||||||
|
#ifndef __Apicolypse_H
|
||||||
|
#include "Apicolypse.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void Apicolypse::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
float* in1 = inputs[0];
|
||||||
|
float* in2 = inputs[1];
|
||||||
|
float* out1 = outputs[0];
|
||||||
|
float* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-37) inputSampleL = fpd * 1.18e-37;
|
||||||
|
if (fabs(inputSampleR)<1.18e-37) inputSampleR = fpd * 1.18e-37;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 32 bit stereo 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));
|
||||||
|
frexpf((float)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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 Apicolypse::processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)
|
||||||
|
{
|
||||||
|
double* in1 = inputs[0];
|
||||||
|
double* in2 = inputs[1];
|
||||||
|
double* out1 = outputs[0];
|
||||||
|
double* out2 = outputs[1];
|
||||||
|
|
||||||
|
double threshold = A;
|
||||||
|
double hardness;
|
||||||
|
double breakup = (1.0-(threshold/2.0))*3.14159265358979;
|
||||||
|
double bridgerectifier;
|
||||||
|
double sqdrive = (B*3.0);
|
||||||
|
if (sqdrive > 1.0) sqdrive *= sqdrive;
|
||||||
|
sqdrive = sqrt(sqdrive);
|
||||||
|
double indrive = C*3.0;
|
||||||
|
if (indrive > 1.0) indrive *= indrive;
|
||||||
|
indrive *= (1.0-(0.008*sqdrive));
|
||||||
|
//correct for gain loss of convolution
|
||||||
|
//calibrate this to match noise level with character at 1.0
|
||||||
|
//you get for instance 0.819 and 1.0-0.819 is 0.181
|
||||||
|
double randy;
|
||||||
|
double outlevel = D;
|
||||||
|
|
||||||
|
if (threshold < 1) hardness = 1.0 / (1.0-threshold);
|
||||||
|
else hardness = 999999999999999999999.0;
|
||||||
|
//set up hardness to exactly fill gap between threshold and 0db
|
||||||
|
//if threshold is literally 1 then hardness is infinite, so we make it very big
|
||||||
|
|
||||||
|
while (--sampleFrames >= 0)
|
||||||
|
{
|
||||||
|
long double inputSampleL = *in1;
|
||||||
|
long double inputSampleR = *in2;
|
||||||
|
if (fabs(inputSampleL)<1.18e-43) inputSampleL = fpd * 1.18e-43;
|
||||||
|
if (fabs(inputSampleR)<1.18e-43) inputSampleR = fpd * 1.18e-43;
|
||||||
|
|
||||||
|
inputSampleL *= indrive;
|
||||||
|
inputSampleR *= indrive;
|
||||||
|
//calibrated to match gain through convolution and -0.3 correction
|
||||||
|
|
||||||
|
if (sqdrive > 0.0){
|
||||||
|
bL[33] = bL[32]; bL[32] = bL[31];
|
||||||
|
bL[31] = bL[30]; bL[30] = bL[29]; bL[29] = bL[28]; bL[28] = bL[27]; bL[27] = bL[26]; bL[26] = bL[25]; bL[25] = bL[24]; bL[24] = bL[23];
|
||||||
|
bL[23] = bL[22]; bL[22] = bL[21]; bL[21] = bL[20]; bL[20] = bL[19]; bL[19] = bL[18]; bL[18] = bL[17]; bL[17] = bL[16]; bL[16] = bL[15];
|
||||||
|
bL[15] = bL[14]; bL[14] = bL[13]; bL[13] = bL[12]; bL[12] = bL[11]; bL[11] = bL[10]; bL[10] = bL[9]; bL[9] = bL[8]; bL[8] = bL[7];
|
||||||
|
bL[7] = bL[6]; bL[6] = bL[5]; bL[5] = bL[4]; bL[4] = bL[3]; bL[3] = bL[2]; bL[2] = bL[1]; bL[1] = bL[0]; bL[0] = inputSampleL * sqdrive;
|
||||||
|
|
||||||
|
inputSampleL += (bL[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bL[1]))));
|
||||||
|
inputSampleL -= (bL[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bL[2]))));
|
||||||
|
inputSampleL += (bL[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bL[3]))));
|
||||||
|
inputSampleL -= (bL[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bL[4]))));
|
||||||
|
inputSampleL += (bL[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bL[5]))));
|
||||||
|
inputSampleL -= (bL[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bL[6]))));
|
||||||
|
inputSampleL += (bL[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bL[7]))));
|
||||||
|
inputSampleL -= (bL[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bL[8]))));
|
||||||
|
inputSampleL += (bL[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bL[9]))));
|
||||||
|
inputSampleL -= (bL[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bL[10]))));
|
||||||
|
inputSampleL += (bL[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bL[11]))));
|
||||||
|
inputSampleL -= (bL[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bL[12]))));
|
||||||
|
inputSampleL -= (bL[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bL[13]))));
|
||||||
|
inputSampleL += (bL[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bL[14]))));
|
||||||
|
inputSampleL -= (bL[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bL[15]))));
|
||||||
|
inputSampleL += (bL[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bL[16]))));
|
||||||
|
inputSampleL -= (bL[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bL[17]))));
|
||||||
|
inputSampleL += (bL[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bL[18]))));
|
||||||
|
inputSampleL -= (bL[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bL[19]))));
|
||||||
|
inputSampleL += (bL[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bL[20]))));
|
||||||
|
inputSampleL -= (bL[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bL[21]))));
|
||||||
|
inputSampleL -= (bL[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bL[22]))));
|
||||||
|
inputSampleL -= (bL[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bL[23]))));
|
||||||
|
inputSampleL -= (bL[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bL[24]))));
|
||||||
|
inputSampleL -= (bL[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bL[25]))));
|
||||||
|
inputSampleL -= (bL[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bL[26]))));
|
||||||
|
inputSampleL -= (bL[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bL[27]))));
|
||||||
|
inputSampleL -= (bL[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bL[28]))));
|
||||||
|
inputSampleL -= (bL[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bL[29]))));
|
||||||
|
inputSampleL -= (bL[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bL[30]))));
|
||||||
|
inputSampleL -= (bL[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bL[31]))));
|
||||||
|
inputSampleL -= (bL[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bL[32]))));
|
||||||
|
inputSampleL -= (bL[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bL[33]))));
|
||||||
|
|
||||||
|
bR[33] = bR[32]; bR[32] = bR[31];
|
||||||
|
bR[31] = bR[30]; bR[30] = bR[29]; bR[29] = bR[28]; bR[28] = bR[27]; bR[27] = bR[26]; bR[26] = bR[25]; bR[25] = bR[24]; bR[24] = bR[23];
|
||||||
|
bR[23] = bR[22]; bR[22] = bR[21]; bR[21] = bR[20]; bR[20] = bR[19]; bR[19] = bR[18]; bR[18] = bR[17]; bR[17] = bR[16]; bR[16] = bR[15];
|
||||||
|
bR[15] = bR[14]; bR[14] = bR[13]; bR[13] = bR[12]; bR[12] = bR[11]; bR[11] = bR[10]; bR[10] = bR[9]; bR[9] = bR[8]; bR[8] = bR[7];
|
||||||
|
bR[7] = bR[6]; bR[6] = bR[5]; bR[5] = bR[4]; bR[4] = bR[3]; bR[3] = bR[2]; bR[2] = bR[1]; bR[1] = bR[0]; bR[0] = inputSampleR * sqdrive;
|
||||||
|
|
||||||
|
inputSampleR += (bR[1] * (0.09299870608542582 - (0.00009582362368873*fabs(bR[1]))));
|
||||||
|
inputSampleR -= (bR[2] * (0.11947847710741009 - (0.00004500891602770*fabs(bR[2]))));
|
||||||
|
inputSampleR += (bR[3] * (0.09071606264761795 + (0.00005639498984741*fabs(bR[3]))));
|
||||||
|
inputSampleR -= (bR[4] * (0.08561982770836980 - (0.00004964855606916*fabs(bR[4]))));
|
||||||
|
inputSampleR += (bR[5] * (0.06440549220820363 + (0.00002428052139507*fabs(bR[5]))));
|
||||||
|
inputSampleR -= (bR[6] * (0.05987991812840746 + (0.00000101867082290*fabs(bR[6]))));
|
||||||
|
inputSampleR += (bR[7] * (0.03980233135839382 + (0.00003312430049041*fabs(bR[7]))));
|
||||||
|
inputSampleR -= (bR[8] * (0.03648402630896925 - (0.00002116186381142*fabs(bR[8]))));
|
||||||
|
inputSampleR += (bR[9] * (0.01826860869525248 + (0.00003115110025396*fabs(bR[9]))));
|
||||||
|
inputSampleR -= (bR[10] * (0.01723968622495364 - (0.00002450634121718*fabs(bR[10]))));
|
||||||
|
inputSampleR += (bR[11] * (0.00187588812316724 + (0.00002838206198968*fabs(bR[11]))));
|
||||||
|
inputSampleR -= (bR[12] * (0.00381796423957237 - (0.00003155815499462*fabs(bR[12]))));
|
||||||
|
inputSampleR -= (bR[13] * (0.00852092214496733 - (0.00001702651162392*fabs(bR[13]))));
|
||||||
|
inputSampleR += (bR[14] * (0.00315560292270588 + (0.00002547861676047*fabs(bR[14]))));
|
||||||
|
inputSampleR -= (bR[15] * (0.01258630914496868 - (0.00004555319243213*fabs(bR[15]))));
|
||||||
|
inputSampleR += (bR[16] * (0.00536435648963575 + (0.00001812393657101*fabs(bR[16]))));
|
||||||
|
inputSampleR -= (bR[17] * (0.01272975658159178 - (0.00004103775306121*fabs(bR[17]))));
|
||||||
|
inputSampleR += (bR[18] * (0.00403818975172755 + (0.00003764615492871*fabs(bR[18]))));
|
||||||
|
inputSampleR -= (bR[19] * (0.01042617366897483 - (0.00003605210426041*fabs(bR[19]))));
|
||||||
|
inputSampleR += (bR[20] * (0.00126599583390057 + (0.00004305458668852*fabs(bR[20]))));
|
||||||
|
inputSampleR -= (bR[21] * (0.00747876207688339 - (0.00003731207018977*fabs(bR[21]))));
|
||||||
|
inputSampleR -= (bR[22] * (0.00149873689175324 - (0.00005086601800791*fabs(bR[22]))));
|
||||||
|
inputSampleR -= (bR[23] * (0.00503221309488033 - (0.00003636086782783*fabs(bR[23]))));
|
||||||
|
inputSampleR -= (bR[24] * (0.00342998224655821 - (0.00004103091180506*fabs(bR[24]))));
|
||||||
|
inputSampleR -= (bR[25] * (0.00355585977903117 - (0.00003698982145400*fabs(bR[25]))));
|
||||||
|
inputSampleR -= (bR[26] * (0.00437201792934817 - (0.00002720235666939*fabs(bR[26]))));
|
||||||
|
inputSampleR -= (bR[27] * (0.00299217874451556 - (0.00004446954727956*fabs(bR[27]))));
|
||||||
|
inputSampleR -= (bR[28] * (0.00457924652487249 - (0.00003859065778860*fabs(bR[28]))));
|
||||||
|
inputSampleR -= (bR[29] * (0.00298182934892027 - (0.00002064710931733*fabs(bR[29]))));
|
||||||
|
inputSampleR -= (bR[30] * (0.00438838441540584 - (0.00005223008424866*fabs(bR[30]))));
|
||||||
|
inputSampleR -= (bR[31] * (0.00323984218794705 - (0.00003397987535887*fabs(bR[31]))));
|
||||||
|
inputSampleR -= (bR[32] * (0.00407693981307314 - (0.00003935772436894*fabs(bR[32]))));
|
||||||
|
inputSampleR -= (bR[33] * (0.00350435348467321 - (0.00005525463935338*fabs(bR[33]))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(inputSampleL) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleL)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleL > 0) inputSampleL = bridgerectifier+threshold;
|
||||||
|
else inputSampleL = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
if (fabs(inputSampleR) > threshold)
|
||||||
|
{
|
||||||
|
bridgerectifier = (fabs(inputSampleR)-threshold)*hardness;
|
||||||
|
//skip flat area if any, scale to distortion limit
|
||||||
|
if (bridgerectifier > breakup) bridgerectifier = breakup;
|
||||||
|
//max value for sine function, 'breakup' modeling for trashed console tone
|
||||||
|
//more hardness = more solidness behind breakup modeling. more softness, more 'grunge' and sag
|
||||||
|
bridgerectifier = sin(bridgerectifier)/hardness;
|
||||||
|
//do the sine factor, scale back to proper amount
|
||||||
|
if (inputSampleR > 0) inputSampleR = bridgerectifier+threshold;
|
||||||
|
else inputSampleR = -(bridgerectifier+threshold);
|
||||||
|
}
|
||||||
|
//otherwise we leave it untouched by the overdrive stuff
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleL = ((inputSampleL*(1-randy))+(lastSampleL*randy)) * outlevel;
|
||||||
|
lastSampleL = inputSampleL;
|
||||||
|
|
||||||
|
randy = ((rand()/(double)RAND_MAX)*0.033);
|
||||||
|
inputSampleR = ((inputSampleR*(1-randy))+(lastSampleR*randy)) * outlevel;
|
||||||
|
lastSampleR = inputSampleR;
|
||||||
|
|
||||||
|
|
||||||
|
//begin 64 bit stereo floating point dither
|
||||||
|
int expon; frexp((double)inputSampleL, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleL += ((double(fpd)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
|
||||||
|
frexp((double)inputSampleR, &expon);
|
||||||
|
fpd ^= fpd << 13; fpd ^= fpd >> 17; fpd ^= fpd << 5;
|
||||||
|
inputSampleR += ((double(fpd)-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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
28
plugins/WinVST/Apicolypse/VSTProject.sln
Executable file
28
plugins/WinVST/Apicolypse/VSTProject.sln
Executable file
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VSTProject", "VSTProject.vcxproj", "{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x64.Build.0 = Release|x64
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
183
plugins/WinVST/Apicolypse/VSTProject.vcxproj
Executable file
183
plugins/WinVST/Apicolypse/VSTProject.vcxproj
Executable file
|
|
@ -0,0 +1,183 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp" />
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp" />
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp" />
|
||||||
|
<ClCompile Include="Apicolypse.cpp" />
|
||||||
|
<ClCompile Include="ApicolypseProc.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h" />
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h" />
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h" />
|
||||||
|
<ClInclude Include="Apicolypse.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{16F7AB3C-1AE0-4574-B60C-7B4DED82938C}</ProjectGuid>
|
||||||
|
<RootNamespace>VSTProject</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>Apicolypse64</ProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<TargetExt>.dll</TargetExt>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(Configuration)\</IntDir>
|
||||||
|
<ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(Configuration)\</IntDir>
|
||||||
|
<ExecutablePath>$(VC_ExecutablePath_x64);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH)</ExecutablePath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||||
|
<DebugInformationFormat>None</DebugInformationFormat>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
|
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||||
|
<DebugInformationFormat>None</DebugInformationFormat>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<DebugInformationFormat>None</DebugInformationFormat>
|
||||||
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
|
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<AdditionalIncludeDirectories>C:\Users\christopherjohnson\Documents\Visual Studio 2015\Projects\VSTProject\vst2.x;C:\Users\christopherjohnson\Documents\vstsdk2.4;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<DebugInformationFormat>None</DebugInformationFormat>
|
||||||
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
|
<PreprocessorDefinitions>WINDOWS;_WINDOWS;WIN32;_USRDLL;_USE_MATH_DEFINES;_CRT_SECURE_NO_DEPRECATE;VST_FORCE_DEPRECATED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<IgnoreSpecificDefaultLibraries>libcmt.dll;libcmtd.dll;msvcrt.lib;libc.lib;libcd.lib;libcmt.lib;msvcrtd.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||||
|
<AdditionalDependencies>libcmt.lib;uuid.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<ModuleDefinitionFile>vstplug.def</ModuleDefinitionFile>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
48
plugins/WinVST/Apicolypse/VSTProject.vcxproj.filters
Executable file
48
plugins/WinVST/Apicolypse/VSTProject.vcxproj.filters
Executable file
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\vstplugmain.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Apicolypse.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="ApicolypseProc.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\aeffeditor.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffect.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\vstsdk2.4\public.sdk\source\vst2.x\audioeffectx.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Apicolypse.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
19
plugins/WinVST/Apicolypse/VSTProject.vcxproj.user
Executable file
19
plugins/WinVST/Apicolypse/VSTProject.vcxproj.user
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LocalDebuggerAmpDefaultAccelerator>{ADEFF70D-84BF-47A1-91C3-FF6B0FC71218}</LocalDebuggerAmpDefaultAccelerator>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
3
plugins/WinVST/Apicolypse/vstplug.def
Executable file
3
plugins/WinVST/Apicolypse/vstplug.def
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
EXPORTS
|
||||||
|
VSTPluginMain
|
||||||
|
main=VSTPluginMain
|
||||||
Loading…
Add table
Add a link
Reference in a new issue