Discontinuity

This commit is contained in:
Christopher Johnson 2024-05-12 14:18:34 -04:00
parent 1e0fd756ed
commit 249c1fe508
29 changed files with 285 additions and 221 deletions

View file

@ -41,7 +41,7 @@ Saturation: Creature, Huge, NCSeventeen, Tube2, Tube, Spiral2, PurestDrive, Focu
Stereo: Srsly, Srsly2, Wider, StereoFX, ToVinyl4, AutoPan, LRFlipTimer, MSFlipTimer, Sidepass, SideDull
Subtlety: Hype, Shape, Inflamer, Sweeten, PurestWarm2, PurestWarm, Coils2, Interstage, PhaseNudge, Remap, SingleEndedTriode, Coils, Desk, TransDesk, TubeDesk
Subtlety: Discontinuity, Hype, Shape, Inflamer, Sweeten, PurestWarm2, PurestWarm, Coils2, Interstage, PhaseNudge, Remap, SingleEndedTriode, Coils, Desk, TransDesk, TubeDesk
Tape: ToTape6, FromTape, Tape, IronOxideClassic2, IronOxide5, ToTape5, IronOxideClassic
@ -1444,6 +1444,26 @@ If you liked Airwindows Edge, this is a variation. It doesnt go nearly as hig
I hope you like it… and not just on guitars. In line with my current ultrasonic filtering approach, youll get more mileage out of this and Edge at high sample rates, but the lowpass will let you get some space between you and aliasing no matter what sample rate youre at.
############ Discontinuity models air under intense loudness.
This might be the most important subtle sound effect I've ever done.
Air isn't linear. That's why DAWs don't sound like reality: they are literally too perfect, in that their transients, their sound combining, every aspect of their operation has no error at all. One would assume this would produce perfect sound, but some of us have never shut up about our grievances with it. (we just lost a titan of that grievance in Steve Albini, but he's far from alone in that.)
If you have sounds in air, they sound real even while the air itself distorts them. Much like my recent work with capacitors modulating their values under voltage pressure (up to 80% in some cases!), air modulates the speed of sound under AIR pressure. This makes incredibly obvious and intense crackles on loud sounds like rocket takeoffs, but many of us have heard this crackle at things like rock concerts, especially in a really live room like a hockey rink.
Discontinuity simply adds THAT distortion. At loudnesses from 70 dB to 140 dB. That's all it does, and at loudnesses below 110 dB or so it's quite subtle… but I've found use for it as quiet as 71dB (the voice tracks on my last two videos!)
I won't say it's correct and accurate at 140dB: I include that because people will enjoy it so much, but I'm not using that much. I just have to… because people will enjoy it, and because it's impossible not to hear when cranked that high.
How to use Discontinuity? At any point in the mix where there's a sound, apply it so that the loudest possible sound (typically 0dB, or clipping) matches the loudness you need. If your sound peaks at 10 dB quieter than clipping, and the sound needs to seem like it's 102 dB, set Discontinuity to 112 dB. And listen! There will be an obvious sweet spot where it starts to seem exactly right, and you can dial in the apparent loudness as if it was a tone or EQ move.
Discontinuity does its frequency modulation using sample buffers. For that reason, it permanently has a bit of latency and it's never quite the same latency because it's frequency modulated by the track it's on. For that reason, you could put it on every track and drum mic as long as you give up the idea of phase coherence. It's better on minimally miked things or possibly submixes, and on distinct sounds that don't need to keep perfect phase alignment with each other.
Depending on who you are and what you've dreamed of being able to make sound do, you might immediately not care about any of that, and immediately start using it on everything and never stop. That's me. It's like when I invented Console, only more so. The interesting thing is how useful I find the quiet, subtle settings when getting a mix to gel and come alive like it's a real sonic event happening. I can set very delicate and quiet, against super loud, and have them all just work.
Discontinuity is a fundamental part of ConsoleX, which I'm still working on. I hope you like getting a little piece of the mixing revolution early, so you can learn about it :)
############ Distance is a sound design or reverb far-away-izer.
Heres another utility plugin: Distance is specifically set up to mimic through-air high frequency attenuation. Its from my initial wave of Airwindows plugins, come to VST and with a new twist: though in the video its a one-knobber, when you download it youll find that its got a Dry/Wet control, just to expand the things you can do with it. Thats new! I try to listen to people, even when its tempting to make it a super-dedicated one-trick pony.

View file

@ -230,8 +230,8 @@ void ConsoleXBuss::processReplacing(float **inputs, float **outputs, VstInt32 sa
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -947,8 +947,8 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1423,12 +1423,12 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -175,8 +175,8 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -390,7 +390,7 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -813,8 +813,8 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1028,7 +1028,7 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -1265,12 +1265,12 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -149,7 +149,6 @@ ComponentResult ConsoleXBuss::GetParameterInfo(AudioUnitScope inScope,
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamLOP;
break;
case kParam_AIR:
AUBase::FillInParameterName (outParameterInfo, kParameterAIRName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
@ -375,7 +374,6 @@ ComponentResult ConsoleXBuss::GetParameterInfo(AudioUnitScope inScope,
outParameterInfo.maxValue = 1.0;
outParameterInfo.defaultValue = kDefaultValue_ParamBSR;
break;
case kParam_DSC:
AUBase::FillInParameterName (outParameterInfo, kParameterDSCName, false);
outParameterInfo.unit = kAudioUnitParameterUnit_Generic;
@ -735,8 +733,8 @@ OSStatus ConsoleXBuss::ProcessBufferLists(AudioUnitRenderActionFlags & ioAction
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
long double inputSampleL = *inputL;
long double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;

View file

@ -49,13 +49,13 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 736434312;
PBXWorkspaceStateSaveDate = 736434312;
PBXPerProjectTemplateStateSaveDate = 737070593;
PBXWorkspaceStateSaveDate = 737070593;
};
perUserProjectItems = {
8B0FC5EF2BE5188D00C41CDA /* PBXTextBookmark */ = 8B0FC5EF2BE5188D00C41CDA /* PBXTextBookmark */;
8B0FC5F02BE5188D00C41CDA /* PBXTextBookmark */ = 8B0FC5F02BE5188D00C41CDA /* PBXTextBookmark */;
8B0FC5F12BE5188D00C41CDA /* PBXTextBookmark */ = 8B0FC5F12BE5188D00C41CDA /* PBXTextBookmark */;
8B90BE082BEECD94001187CB /* PBXTextBookmark */ = 8B90BE082BEECD94001187CB /* PBXTextBookmark */;
8B90BE2F2BEECEAB001187CB /* PBXTextBookmark */ = 8B90BE2F2BEECEAB001187CB /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
@ -71,32 +71,32 @@
vrLen = 209;
vrLoc = 3;
};
8B0FC5F02BE5188D00C41CDA /* PBXTextBookmark */ = {
8B90BE082BEECD94001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleXBuss.cpp */;
name = "ConsoleXBuss.cpp: 592";
name = "ConsoleXBuss.cpp: 590";
rLen = 0;
rLoc = 28214;
rLoc = 28208;
rType = 0;
vrLen = 415;
vrLoc = 38727;
vrLen = 228;
vrLoc = 38667;
};
8B0FC5F12BE5188D00C41CDA /* PBXTextBookmark */ = {
8B90BE2F2BEECEAB001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleXBuss.cpp */;
name = "ConsoleXBuss.cpp: 592";
name = "ConsoleXBuss.cpp: 590";
rLen = 0;
rLoc = 28214;
rLoc = 28208;
rType = 0;
vrLen = 415;
vrLoc = 38727;
vrLen = 150;
vrLoc = 38667;
};
8BA05A660720730100365D66 /* ConsoleXBuss.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1290, 22248}}";
sepNavSelRange = "{28214, 0}";
sepNavVisRange = "{38727, 415}";
sepNavWindowFrame = "{{727, 41}, {983, 837}}";
sepNavIntBoundsRect = "{{0, 0}, {1137, 22446}}";
sepNavSelRange = "{28208, 0}";
sepNavVisRange = "{38667, 150}";
sepNavWindowFrame = "{{457, 41}, {983, 837}}";
};
};
8BA05A690720730100365D66 /* ConsoleXBussVersion.h */ = {
@ -116,9 +116,9 @@
};
8BC6025B073B072D006C4272 /* ConsoleXBuss.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {554, 5688}}";
sepNavSelRange = "{6849, 0}";
sepNavVisRange = "{3, 209}";
sepNavIntBoundsRect = "{{0, 0}, {828, 5364}}";
sepNavSelRange = "{6655, 0}";
sepNavVisRange = "{5816, 1355}";
sepNavWindowFrame = "{{565, 38}, {875, 840}}";
};
};

View file

@ -352,11 +352,11 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B0FC5F12BE5188D00C41CDA</string>
<string>8B90BE2F2BEECEAB001187CB</string>
<key>history</key>
<array>
<string>8B0FC5EF2BE5188D00C41CDA</string>
<string>8B0FC5F02BE5188D00C41CDA</string>
<string>8B90BE082BEECD94001187CB</string>
</array>
</dict>
<key>SplitCount</key>
@ -370,18 +370,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {603, 132}}</string>
<string>{{0, 0}, {603, 102}}</string>
<key>RubberWindowFrame</key>
<string>611 309 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>132pt</string>
<string>102pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>309pt</string>
<string>339pt</string>
<key>Tabs</key>
<array>
<dict>
@ -395,7 +395,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 282}}</string>
<string>{{10, 27}, {603, 312}}</string>
<key>RubberWindowFrame</key>
<string>611 309 810 487 0 0 1440 878 </string>
</dict>
@ -451,7 +451,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 363}}</string>
<string>{{10, 27}, {603, 297}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -479,11 +479,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B0FC5F22BE5188D00C41CDA</string>
<string>8B90BE302BEECEAB001187CB</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B0FC5F32BE5188D00C41CDA</string>
<string>8B90BE312BEECEAB001187CB</string>
<string>8BD12F7A2B8931E2007C2EEC</string>
<string>8B0FC5F42BE5188D00C41CDA</string>
<string>8B90BE322BEECEAB001187CB</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -636,7 +636,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>736434317.63132</real>
<real>737070763.11251795</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>

View file

@ -682,8 +682,8 @@ OSStatus ConsoleXChannel::ProcessBufferLists(AudioUnitRenderActionFlags & ioAct
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
long double inputSampleL = *inputL;
long double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -897,7 +897,7 @@ OSStatus ConsoleXChannel::ProcessBufferLists(AudioUnitRenderActionFlags & ioAct
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));

View file

@ -49,18 +49,29 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 736198355;
PBXWorkspaceStateSaveDate = 736198355;
PBXPerProjectTemplateStateSaveDate = 737071035;
PBXWorkspaceStateSaveDate = 737071035;
};
perUserProjectItems = {
8B0FC5B32BE513B500C41CDA /* PBXTextBookmark */ = 8B0FC5B32BE513B500C41CDA /* PBXTextBookmark */;
8B3036552BE05713005401EF /* PBXTextBookmark */ = 8B3036552BE05713005401EF /* PBXTextBookmark */;
8BCB29FA2BE17763001B6E66 /* PBXTextBookmark */ = 8BCB29FA2BE17763001B6E66 /* PBXTextBookmark */;
8BCB2A212BE17F17001B6E66 /* PBXTextBookmark */ = 8BCB2A212BE17F17001B6E66 /* PBXTextBookmark */;
8B90BEB82BEECFC7001187CB /* PBXTextBookmark */ = 8B90BEB82BEECFC7001187CB /* PBXTextBookmark */;
8B90BEB92BEECFC7001187CB /* PBXTextBookmark */ = 8B90BEB92BEECFC7001187CB /* PBXTextBookmark */;
};
sourceControlManager = 8BD3CCB8148830B20062E48C /* Source Control */;
userBuildSettings = {
};
};
8B0FC5B32BE513B500C41CDA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ConsoleXChannelVersion.h */;
name = "ConsoleXChannelVersion.h: 54";
rLen = 4;
rLoc = 2944;
rType = 0;
vrLen = 97;
vrLoc = 2905;
};
8B3036552BE05713005401EF /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BC6025B073B072D006C4272 /* ConsoleXChannel.h */;
@ -71,19 +82,39 @@
vrLen = 94;
vrLoc = 10449;
};
8B90BEB82BEECFC7001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleXChannel.cpp */;
name = "ConsoleXChannel.cpp: 1103";
rLen = 770;
rLoc = 59807;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8B90BEB92BEECFC7001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A660720730100365D66 /* ConsoleXChannel.cpp */;
name = "ConsoleXChannel.cpp: 1103";
rLen = 770;
rLoc = 59807;
rType = 0;
vrLen = 0;
vrLoc = 0;
};
8BA05A660720730100365D66 /* ConsoleXChannel.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1362, 19656}}";
sepNavSelRange = "{59797, 770}";
sepNavVisRange = "{55292, 2750}";
sepNavWindowFrame = "{{632, 38}, {972, 840}}";
sepNavIntBoundsRect = "{{0, 0}, {939, 21024}}";
sepNavSelRange = "{59807, 770}";
sepNavVisRange = "{0, 0}";
sepNavWindowFrame = "{{69, 38}, {972, 840}}";
};
};
8BA05A690720730100365D66 /* ConsoleXChannelVersion.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {471, 1188}}";
sepNavIntBoundsRect = "{{0, 0}, {471, 1152}}";
sepNavSelRange = "{2944, 4}";
sepNavVisRange = "{2862, 140}";
sepNavVisRange = "{2905, 97}";
sepNavWindowFrame = "{{543, 38}, {897, 840}}";
};
};
@ -96,32 +127,12 @@
};
8BC6025B073B072D006C4272 /* ConsoleXChannel.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1056, 5130}}";
sepNavSelRange = "{2954, 0}";
sepNavVisRange = "{2056, 1688}";
sepNavIntBoundsRect = "{{0, 0}, {1146, 5220}}";
sepNavSelRange = "{6671, 0}";
sepNavVisRange = "{5586, 1528}";
sepNavWindowFrame = "{{4, 38}, {876, 840}}";
};
};
8BCB29FA2BE17763001B6E66 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ConsoleXChannelVersion.h */;
name = "ConsoleXChannelVersion.h: 54";
rLen = 4;
rLoc = 2944;
rType = 0;
vrLen = 192;
vrLoc = 2810;
};
8BCB2A212BE17F17001B6E66 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 8BA05A690720730100365D66 /* ConsoleXChannelVersion.h */;
name = "ConsoleXChannelVersion.h: 54";
rLen = 4;
rLoc = 2944;
rType = 0;
vrLen = 140;
vrLoc = 2862;
};
8BD3CCB8148830B20062E48C /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;

View file

@ -324,7 +324,7 @@
<real>235</real>
</array>
<key>RubberWindowFrame</key>
<string>773 299 667 487 0 0 1440 878 </string>
<string>64 304 667 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -340,7 +340,7 @@
<key>PBXProjectModuleGUID</key>
<string>8BD12F472B89309E007C2EEC</string>
<key>PBXProjectModuleLabel</key>
<string>ConsoleXChannelVersion.h</string>
<string>ConsoleXChannel.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -348,15 +348,16 @@
<key>PBXProjectModuleGUID</key>
<string>8BD12F482B89309E007C2EEC</string>
<key>PBXProjectModuleLabel</key>
<string>ConsoleXChannelVersion.h</string>
<string>ConsoleXChannel.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8BCB2A212BE17F17001B6E66</string>
<string>8B90BEB92BEECFC7001187CB</string>
<key>history</key>
<array>
<string>8B3036552BE05713005401EF</string>
<string>8BCB29FA2BE17763001B6E66</string>
<string>8B0FC5B32BE513B500C41CDA</string>
<string>8B90BEB82BEECFC7001187CB</string>
</array>
</dict>
<key>SplitCount</key>
@ -370,18 +371,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {410, 86}}</string>
<string>{{0, 0}, {410, 13}}</string>
<key>RubberWindowFrame</key>
<string>773 299 667 487 0 0 1440 878 </string>
<string>64 304 667 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>86pt</string>
<string>13pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>355pt</string>
<string>428pt</string>
<key>Tabs</key>
<array>
<dict>
@ -395,9 +396,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {410, 328}}</string>
<string>{{10, 27}, {410, 401}}</string>
<key>RubberWindowFrame</key>
<string>773 299 667 487 0 0 1440 878 </string>
<string>64 304 667 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -451,7 +452,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {410, 282}}</string>
<string>{{10, 27}, {410, 382}}</string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -479,11 +480,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8BCB2A222BE17F17001B6E66</string>
<string>8B90BEBA2BEECFC7001187CB</string>
<string>1CA23ED40692098700951B8B</string>
<string>8BCB2A232BE17F17001B6E66</string>
<string>8B90BEBB2BEECFC7001187CB</string>
<string>8BD12F472B89309E007C2EEC</string>
<string>8BCB2A242BE17F17001B6E66</string>
<string>8B90BEBC2BEECFC7001187CB</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -636,7 +637,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>736198423.42711902</real>
<real>737071047.99241996</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -653,11 +654,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8BCB2A252BE17F17001B6E66</string>
<string>8B90BE2C2BEECEA8001187CB</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacAU/ConsoleXChannel/ConsoleXChannel.xcodeproj</string>
</array>
<key>WindowString</key>
<string>773 299 667 487 0 0 1440 878 </string>
<string>64 304 667 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -735,8 +735,8 @@ OSStatus ConsoleXBuss::ProcessBufferLists(AudioUnitRenderActionFlags & ioAction
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
long double inputSampleL = *inputL;
long double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;

View file

@ -682,8 +682,8 @@ OSStatus ConsoleXChannel::ProcessBufferLists(AudioUnitRenderActionFlags & ioAct
inTrimA = inTrimB; inTrimB = GetParameter( kParam_FAD )*2.0;
while (nSampleFrames-- > 0) {
double inputSampleL = *inputL;
double inputSampleR = *inputR;
long double inputSampleL = *inputL;
long double inputSampleR = *inputR;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -897,7 +897,7 @@ OSStatus ConsoleXChannel::ProcessBufferLists(AudioUnitRenderActionFlags & ioAct
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));

View file

@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BuildableName = "ConsoleXBuss.vst"
BlueprintName = "ConsoleXBuss"
ReferencedContainer = "container:ConsoleXBuss.xcodeproj">
</BuildableReference>
@ -51,7 +51,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BuildableName = "ConsoleXBuss.vst"
BlueprintName = "ConsoleXBuss"
ReferencedContainer = "container:ConsoleXBuss.xcodeproj">
</BuildableReference>

View file

@ -230,8 +230,8 @@ void ConsoleXBuss::processReplacing(float **inputs, float **outputs, VstInt32 sa
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -947,8 +947,8 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1423,12 +1423,12 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BuildableName = "ConsoleXChannel.vst"
BlueprintName = "ConsoleXChannel"
ReferencedContainer = "container:ConsoleXChannel.xcodeproj">
</BuildableReference>
@ -51,7 +51,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "8D01CCC60486CAD60068D4B7"
BuildableName = "Gain.vst"
BuildableName = "ConsoleXChannel.vst"
BlueprintName = "ConsoleXChannel"
ReferencedContainer = "container:ConsoleXChannel.xcodeproj">
</BuildableReference>

View file

@ -175,8 +175,8 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -390,7 +390,7 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -813,8 +813,8 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1028,7 +1028,7 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -1265,12 +1265,12 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -49,12 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 736433846;
PBXWorkspaceStateSaveDate = 736433846;
PBXPerProjectTemplateStateSaveDate = 737070894;
PBXWorkspaceStateSaveDate = 737070894;
};
perUserProjectItems = {
8B0FC5F92BE5189E00C41CDA /* PBXTextBookmark */ = 8B0FC5F92BE5189E00C41CDA /* PBXTextBookmark */;
8BE201162BE50FB400EE2C21 /* PBXTextBookmark */ = 8BE201162BE50FB400EE2C21 /* PBXTextBookmark */;
8B90BE522BEECF25001187CB /* PBXTextBookmark */ = 8B90BE522BEECF25001187CB /* PBXTextBookmark */;
8B90BE902BEECF6B001187CB /* PBXTextBookmark */ = 8B90BE902BEECF6B001187CB /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@ -62,9 +62,9 @@
};
2407DEB6089929BA00EB68BF /* ConsoleXBuss.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {966, 8118}}";
sepNavIntBoundsRect = "{{0, 0}, {561, 8064}}";
sepNavSelRange = "{499, 0}";
sepNavVisRange = "{479, 48}";
sepNavVisRange = "{491, 24}";
sepNavWindowFrame = "{{7, 47}, {895, 831}}";
};
};
@ -86,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* ConsoleXBussProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {948, 26010}}";
sepNavSelRange = "{44946, 0}";
sepNavVisRange = "{60229, 2712}";
sepNavIntBoundsRect = "{{0, 0}, {1290, 26046}}";
sepNavSelRange = "{82736, 0}";
sepNavVisRange = "{80607, 2355}";
sepNavWindowFrame = "{{24, 38}, {945, 840}}";
};
};
@ -106,25 +106,25 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8B0FC5F92BE5189E00C41CDA /* PBXTextBookmark */ = {
8B90BE522BEECF25001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* ConsoleXBuss.cpp */;
name = "ConsoleXBuss.cpp: 16";
rLen = 0;
rLoc = 499;
rType = 0;
vrLen = 48;
vrLen = 36;
vrLoc = 479;
};
8BE201162BE50FB400EE2C21 /* PBXTextBookmark */ = {
8B90BE902BEECF6B001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2407DEB6089929BA00EB68BF /* ConsoleXBuss.cpp */;
name = "ConsoleXBuss.cpp: 16";
rLen = 0;
rLoc = 499;
rType = 0;
vrLen = 50;
vrLoc = 477;
vrLen = 24;
vrLoc = 491;
};
8D01CCC60486CAD60068D4B7 /* ConsoleXBuss */ = {
activeExec = 0;

View file

@ -351,10 +351,10 @@
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B0FC5F92BE5189E00C41CDA</string>
<string>8B90BE902BEECF6B001187CB</string>
<key>history</key>
<array>
<string>8BE201162BE50FB400EE2C21</string>
<string>8B90BE522BEECF25001187CB</string>
</array>
</dict>
<key>SplitCount</key>
@ -368,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {603, 86}}</string>
<string>{{0, 0}, {603, 51}}</string>
<key>RubberWindowFrame</key>
<string>56 232 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>86pt</string>
<string>51pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>355pt</string>
<string>390pt</string>
<key>Tabs</key>
<array>
<dict>
@ -393,7 +393,7 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 328}}</string>
<string>{{10, 27}, {603, 363}}</string>
<key>RubberWindowFrame</key>
<string>56 232 810 487 0 0 1440 878 </string>
</dict>
@ -477,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8B0FC5FA2BE5189E00C41CDA</string>
<string>8B90BE912BEECF6B001187CB</string>
<string>1CA23ED40692098700951B8B</string>
<string>8B0FC5FB2BE5189E00C41CDA</string>
<string>8B90BE922BEECF6B001187CB</string>
<string>8B0237581D42B1C400E1E8C8</string>
<string>8B0FC5FC2BE5189E00C41CDA</string>
<string>8B90BE932BEECF6B001187CB</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -634,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>736434334.81569004</real>
<real>737070955.67392898</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -651,6 +651,7 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8B90BE942BEECF6B001187CB</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacVST/ConsoleXBuss/ConsoleXBuss.xcodeproj</string>
</array>
<key>WindowString</key>

View file

@ -230,8 +230,8 @@ void ConsoleXBuss::processReplacing(float **inputs, float **outputs, VstInt32 sa
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -947,8 +947,8 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1423,12 +1423,12 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -2,7 +2,7 @@
{
089C1669FE841209C02AAC07 /* Project object */ = {
activeBuildConfigurationName = Release;
activeTarget = 8D01CCC60486CAD60068D4B7 /* AudioUnit */;
activeTarget = 8D01CCC60486CAD60068D4B7 /* ConsoleXChannel */;
codeSenseManager = 8B02375F1D42B1C400E1E8C8 /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
@ -49,8 +49,12 @@
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 736123418;
PBXWorkspaceStateSaveDate = 736123418;
PBXPerProjectTemplateStateSaveDate = 737070989;
PBXWorkspaceStateSaveDate = 737070989;
};
perUserProjectItems = {
8B90BE652BEECF2C001187CB /* PBXTextBookmark */ = 8B90BE652BEECF2C001187CB /* PBXTextBookmark */;
8B90BEC12BEED0CD001187CB /* PBXTextBookmark */ = 8B90BEC12BEED0CD001187CB /* PBXTextBookmark */;
};
sourceControlManager = 8B02375E1D42B1C400E1E8C8 /* Source Control */;
userBuildSettings = {
@ -82,9 +86,9 @@
};
24D8286F09A914000093AEF8 /* ConsoleXChannelProc.cpp */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1290, 23094}}";
sepNavSelRange = "{45194, 0}";
sepNavVisRange = "{44804, 2525}";
sepNavIntBoundsRect = "{{0, 0}, {696, 23238}}";
sepNavSelRange = "{45204, 0}";
sepNavVisRange = "{45100, 184}";
sepNavWindowFrame = "{{17, 47}, {895, 831}}";
};
};
@ -102,7 +106,27 @@
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
8B90BE652BEECF2C001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ConsoleXChannelProc.cpp */;
name = "ConsoleXChannelProc.cpp: 808";
rLen = 0;
rLoc = 45204;
rType = 0;
vrLen = 287;
vrLoc = 44987;
};
8B90BEC12BEED0CD001187CB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 24D8286F09A914000093AEF8 /* ConsoleXChannelProc.cpp */;
name = "ConsoleXChannelProc.cpp: 808";
rLen = 0;
rLoc = 45204;
rType = 0;
vrLen = 184;
vrLoc = 45100;
};
8D01CCC60486CAD60068D4B7 /* ConsoleXChannel */ = {
activeExec = 0;
};
}

View file

@ -300,7 +300,7 @@
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>5</integer>
<integer>6</integer>
<integer>4</integer>
<integer>0</integer>
</array>
@ -323,7 +323,7 @@
<real>185</real>
</array>
<key>RubberWindowFrame</key>
<string>13 106 810 487 0 0 1440 878 </string>
<string>343 200 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
@ -339,7 +339,7 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237581D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
<string>Gain.h</string>
<string>ConsoleXChannelProc.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -347,7 +347,15 @@
<key>PBXProjectModuleGUID</key>
<string>8B0237591D42B1C400E1E8C8</string>
<key>PBXProjectModuleLabel</key>
<string>Gain.h</string>
<string>ConsoleXChannelProc.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>8B90BEC12BEED0CD001187CB</string>
<key>history</key>
<array>
<string>8B90BE652BEECF2C001187CB</string>
</array>
</dict>
<key>SplitCount</key>
<string>1</string>
@ -360,18 +368,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {603, 0}}</string>
<string>{{0, 0}, {603, 117}}</string>
<key>RubberWindowFrame</key>
<string>13 106 810 487 0 0 1440 878 </string>
<string>343 200 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>0pt</string>
<string>117pt</string>
</dict>
<dict>
<key>Proportion</key>
<string>441pt</string>
<string>324pt</string>
<key>Tabs</key>
<array>
<dict>
@ -385,9 +393,9 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{10, 27}, {603, 414}}</string>
<string>{{10, 27}, {603, 297}}</string>
<key>RubberWindowFrame</key>
<string>13 106 810 487 0 0 1440 878 </string>
<string>343 200 810 487 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
@ -469,11 +477,11 @@
</array>
<key>TableOfContents</key>
<array>
<string>8BC89E1D2BE05A3000FE7BCC</string>
<string>8B90BEC22BEED0CD001187CB</string>
<string>1CA23ED40692098700951B8B</string>
<string>8BC89E1E2BE05A3000FE7BCC</string>
<string>8B90BEC32BEED0CD001187CB</string>
<string>8B0237581D42B1C400E1E8C8</string>
<string>8BC89E1F2BE05A3000FE7BCC</string>
<string>8B90BEC42BEED0CD001187CB</string>
<string>1CA23EDF0692099D00951B8B</string>
<string>1CA23EE00692099D00951B8B</string>
<string>1CA23EE10692099D00951B8B</string>
@ -626,7 +634,7 @@
<key>StatusbarIsVisible</key>
<true/>
<key>TimeStamp</key>
<real>736123440.64066994</real>
<real>737071309.19377303</real>
<key>ToolbarConfigUserDefaultsMinorVersion</key>
<string>2</string>
<key>ToolbarDisplayMode</key>
@ -643,11 +651,11 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>8BC89E202BE05A3000FE7BCC</string>
<string>8B90BEC52BEED0CD001187CB</string>
<string>/Users/christopherjohnson/Desktop/airwindows/plugins/MacVST/ConsoleXChannel/ConsoleXChannel.xcodeproj</string>
</array>
<key>WindowString</key>
<string>13 106 810 487 0 0 1440 878 </string>
<string>343 200 810 487 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>

View file

@ -1894,7 +1894,7 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8D01CCC60486CAD60068D4B7 /* AudioUnit */ = {
8D01CCC60486CAD60068D4B7 /* ConsoleXChannel */ = {
isa = PBXNativeTarget;
buildConfigurationList = 24BEAAED08919AE700E695F9 /* Build configuration list for PBXNativeTarget "ConsoleXChannel" */;
buildPhases = (
@ -1947,7 +1947,7 @@
);
projectRoot = "";
targets = (
8D01CCC60486CAD60068D4B7 /* AudioUnit */,
8D01CCC60486CAD60068D4B7 /* ConsoleXChannel */,
);
};
/* End PBXProject section */

View file

@ -175,8 +175,8 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -390,7 +390,7 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -813,8 +813,8 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1028,7 +1028,7 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -1265,12 +1265,12 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -230,8 +230,8 @@ void ConsoleXBuss::processReplacing(float **inputs, float **outputs, VstInt32 sa
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -947,8 +947,8 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1423,12 +1423,12 @@ void ConsoleXBuss::processDoubleReplacing(double **inputs, double **outputs, Vst
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -175,8 +175,8 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -390,7 +390,7 @@ void ConsoleXChannel::processReplacing(float **inputs, float **outputs, VstInt32
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -813,8 +813,8 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
while (--sampleFrames >= 0)
{
double inputSampleL = *in1;
double inputSampleR = *in2;
long double inputSampleL = *in1;
long double inputSampleR = *in2;
if (fabs(inputSampleL)<1.18e-23) inputSampleL = fpdL * 1.18e-17;
if (fabs(inputSampleR)<1.18e-23) inputSampleR = fpdR * 1.18e-17;
@ -1028,7 +1028,7 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
double gain = (inTrimA*temp)+(inTrimB*(1.0-temp));
if (gain > 1.0) gain *= gain;
if (gain < 1.0) gain = 1.0-pow(1.0-gain,2);
gain *= 1.527864045000421;
gain *= 0.763932022500211;
double airGain = (airGainA*temp)+(airGainB*(1.0-temp));
double fireGain = (fireGainA*temp)+(fireGainB*(1.0-temp));
double stoneGain = (stoneGainA*temp)+(stoneGainB*(1.0-temp));
@ -1265,12 +1265,12 @@ void ConsoleXChannel::processDoubleReplacing(double **inputs, double **outputs,
//final stacked biquad section is the softest Q for smoothness
//begin 64 bit stereo floating point dither
//int expon; frexp((double)inputSampleL, &expon);
int expon; frexp((double)inputSampleL, &expon);
fpdL ^= fpdL << 13; fpdL ^= fpdL >> 17; fpdL ^= fpdL << 5;
//inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//frexp((double)inputSampleR, &expon);
inputSampleL += ((double(fpdL)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
frexp((double)inputSampleR, &expon);
fpdR ^= fpdR << 13; fpdR ^= fpdR >> 17; fpdR ^= fpdR << 5;
//inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
inputSampleR += ((double(fpdR)-uint32_t(0x7fffffff)) * 1.1e-44l * pow(2,expon+62));
//end 64 bit stereo floating point dither
*out1 = inputSampleL;

View file

@ -123,6 +123,7 @@ Desk is classic Airwindows subtle analog modeling.[coll=]
Desk4 is distinctive analog coloration (a tuneable version of the control-less Desk plugins)[coll=Latest]
DigitalBlack is a quick, staccato gate.[coll=Basic,Recommended,Latest]
Dirt is a soft-clip distortion in the spirit of Edge.[coll=Latest]
Discontinuity models air under intense loudness.[coll=Recommended,Latest]
Distance is a sound design or reverb far-away-izer.[coll=]
Distance2 is a versatile space shaper for creating depth.[coll=Latest]
Distortion is a slightly dark analog-style distortion with several presets, like Focus.[coll=Latest]