-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
1,708 additions
and
2 deletions.
There are no files selected for viewing
Submodule airwindows
updated
278 files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# ZOutputStage is the output clipping from the Emu e6400 style Z filters. | ||
|
||
So I didn't get asked for this, exactly. | ||
|
||
I got asked for the exciter setting out of the Emu e6400 Ultra. And this isn't it. | ||
|
||
But I did have an exciter (and so have you, as it's in the plugin collection.) I'm sure it's weirder and twitchier than the Emu one, but it does exist. It just won't sound anything like that sampler, because the sampler has a lot of hardware on the analog outs, as well as being probably a totally different algorithm than mine, one that I have no idea how it's done. | ||
|
||
Wait a second. | ||
|
||
The reason I got asked for this was, drum and bass guys in the UK wanted to add some insane grind and energy, to basically synth waves. And I don't have the algo for that… but my exciter is nothing if not insane, and I did an output stage on the Z filters. That would apply exactly the same to an exciter, or anything else. I'd just do it as a simple distortion, except that rather than being a normal distortion it'd use the special filtering used in the Z filters to get that 'frizz' on the edges of clipped sounds that I clearly saw in the recordings of the real e6400. If it did that on distorting filters, it would do the same on an exciter, or anything. | ||
|
||
And so I did :) | ||
|
||
This goes after… well, anything. Whatever you like. Turn it up past 0.1 to distort, just like the Z filters. Turn the output way down because it's really hot. Apply to whatever digital mayhem you can wreak, and it should act a little more like it's coming off that sampler. | ||
|
||
See ya next week :) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
/* ======================================== | ||
* ConsoleLABuss - ConsoleLABuss.h | ||
* Copyright (c) airwindows, Airwindows uses the MIT license | ||
* ======================================== */ | ||
|
||
#ifndef __ConsoleLABuss_H | ||
#include "ConsoleLABuss.h" | ||
#endif | ||
namespace airwin2rack::ConsoleLABuss { | ||
|
||
AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new ConsoleLABuss(audioMaster);} | ||
|
||
ConsoleLABuss::ConsoleLABuss(audioMasterCallback audioMaster) : | ||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters) | ||
{ | ||
A = 1.0; | ||
|
||
lastSinewL = lastSinewR = 0.0; | ||
subAL = subAR = subBL = subBR = subCL = subCR = 0.0; | ||
gainA = gainB = 1.0; | ||
|
||
fpdL = 1.0; while (fpdL < 16386) fpdL = rand()*UINT32_MAX; | ||
fpdR = 1.0; while (fpdR < 16386) fpdR = rand()*UINT32_MAX; | ||
//this is reset: values being initialized only once. Startup values, whatever they are. | ||
|
||
_canDo.insert("plugAsChannelInsert"); // plug-in can be used as a channel insert effect. | ||
_canDo.insert("plugAsSend"); // plug-in can be used as a send effect. | ||
_canDo.insert("x2in2out"); | ||
setNumInputs(kNumInputs); | ||
setNumOutputs(kNumOutputs); | ||
setUniqueID(kUniqueId); | ||
canProcessReplacing(); // supports output replacing | ||
canDoubleReplacing(); // supports double precision processing | ||
programsAreChunks(true); | ||
vst_strncpy (_programName, "Default", kVstMaxProgNameLen); // default program name | ||
} | ||
|
||
ConsoleLABuss::~ConsoleLABuss() {} | ||
VstInt32 ConsoleLABuss::getVendorVersion () {return 1000;} | ||
void ConsoleLABuss::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} | ||
void ConsoleLABuss::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; | ||
} | ||
|
||
void ConsoleLABuss::setParameter(VstInt32 index, float value) { | ||
switch (index) { | ||
case kParamA: A = value; break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} | ||
} | ||
|
||
float ConsoleLABuss::getParameter(VstInt32 index) { | ||
switch (index) { | ||
case kParamA: return A; 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 ConsoleLABuss::getParameterName(VstInt32 index, char *text) { | ||
switch (index) { | ||
case kParamA: vst_strncpy (text, "Master", kVstMaxParamStrLen); break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} //this is our labels for displaying in the VST host | ||
} | ||
|
||
void ConsoleLABuss::getParameterDisplay(VstInt32 index, char *text) { | ||
switch (index) { | ||
case kParamA: float2string (A, text, kVstMaxParamStrLen); break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} //this displays the values and handles 'popups' where it's discrete choices | ||
} | ||
|
||
void ConsoleLABuss::getParameterLabel(VstInt32 index, char *text) { | ||
switch (index) { | ||
case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} | ||
} | ||
|
||
VstInt32 ConsoleLABuss::canDo(char *text) | ||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know | ||
|
||
bool ConsoleLABuss::getEffectName(char* name) { | ||
vst_strncpy(name, "ConsoleLABuss", kVstMaxProductStrLen); return true; | ||
} | ||
|
||
VstPlugCategory ConsoleLABuss::getPlugCategory() {return kPlugCategEffect;} | ||
|
||
bool ConsoleLABuss::getProductString(char* text) { | ||
vst_strncpy (text, "airwindows ConsoleLABuss", kVstMaxProductStrLen); return true; | ||
} | ||
|
||
bool ConsoleLABuss::getVendorString(char* text) { | ||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; | ||
} | ||
bool ConsoleLABuss::parameterTextToValue(VstInt32 index, const char *text, float &value) { | ||
switch(index) { | ||
case kParamA: { auto b = string2float(text, value); return b; break; } | ||
|
||
} | ||
return false; | ||
} | ||
bool ConsoleLABuss::canConvertParameterTextToValue(VstInt32 index) { | ||
switch(index) { | ||
case kParamA: return true; | ||
|
||
} | ||
return false; | ||
} | ||
} // end namespace |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* ======================================== | ||
* ConsoleLABuss - ConsoleLABuss.h | ||
* Created 8/12/11 by SPIAdmin | ||
* Copyright (c) Airwindows, Airwindows uses the MIT license | ||
* ======================================== */ | ||
|
||
#ifndef __ConsoleLABuss_ConsoleLABuss_H | ||
#define __ConsoleLABuss_ConsoleLABuss_H | ||
|
||
#ifndef __audioeffect__ | ||
#include "../airwin2rackbase.h" | ||
#endif | ||
|
||
#include <set> | ||
#include <string> | ||
#include <math.h> | ||
|
||
namespace airwin2rack::ConsoleLABuss { | ||
enum { | ||
kParamA = 0, | ||
kNumParameters = 1 | ||
}; // | ||
|
||
const int kNumPrograms = 0; | ||
const int kNumInputs = 2; | ||
const int kNumOutputs = 2; | ||
const unsigned long kUniqueId = 'clab'; //Change this to what the AU identity is! | ||
|
||
class ConsoleLABuss : | ||
public AudioEffectX | ||
{ | ||
public: | ||
ConsoleLABuss(audioMasterCallback audioMaster); | ||
~ConsoleLABuss(); | ||
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 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 | ||
// Added by the perl as inverses | ||
virtual bool parameterTextToValue(VstInt32 index, const char *text, float &value); | ||
virtual bool canConvertParameterTextToValue(VstInt32 index); | ||
virtual VstInt32 canDo(char *text); | ||
private: | ||
char _programName[kVstMaxProgNameLen + 1]; | ||
std::set< std::string > _canDo; | ||
|
||
uint32_t fpdL; | ||
uint32_t fpdR; | ||
//default stuff | ||
|
||
double lastSinewL; | ||
double lastSinewR; | ||
|
||
double subAL; | ||
double subAR; | ||
double subBL; | ||
double subBR; | ||
double subCL; | ||
double subCR; | ||
|
||
double gainA; | ||
double gainB; //smoothed master fader for channel, from Z2 series filter code | ||
|
||
float A; | ||
}; | ||
|
||
#endif | ||
} // end namespace |
Oops, something went wrong.