-
-
Notifications
You must be signed in to change notification settings - Fork 10
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
15 changed files
with
5,211 additions
and
22 deletions.
There are no files selected for viewing
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,156 @@ | ||
/* ======================================== | ||
* DeRez2 - DeRez2.h | ||
* Copyright (c) 2016 airwindows, Airwindows uses the MIT license | ||
* ======================================== */ | ||
|
||
#ifndef __DeRez2_H | ||
#include "DeRez2.h" | ||
#endif | ||
|
||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wfloat-conversion", "-Wimplicit-float-conversion", "-Wunused-parameter") | ||
|
||
DeRez2::DeRez2(audioMasterCallback audioMaster) : | ||
AudioEffectX(audioMaster, kNumPrograms, kNumParameters) | ||
{ | ||
A = 1.0; | ||
B = 1.0; | ||
C = 1.0; | ||
D = 1.0; | ||
lastSampleL = 0.0; | ||
heldSampleL = 0.0; | ||
lastDrySampleL = 0.0; | ||
lastOutputSampleL = 0.0; | ||
|
||
lastSampleR = 0.0; | ||
heldSampleR = 0.0; | ||
lastDrySampleR = 0.0; | ||
lastOutputSampleR = 0.0; | ||
|
||
position = 0.0; | ||
incrementA = 0.0; | ||
incrementB = 0.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 | ||
} | ||
|
||
DeRez2::~DeRez2() {} | ||
VstInt32 DeRez2::getVendorVersion () {return 1000;} | ||
void DeRez2::setProgramName(char *name) {vst_strncpy (_programName, name, kVstMaxProgNameLen);} | ||
void DeRez2::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 DeRez2::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 DeRez2::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 DeRez2::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 DeRez2::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 DeRez2::getParameterName(VstInt32 index, char *text) { | ||
switch (index) { | ||
case kParamA: vst_strncpy (text, "Rate", kVstMaxParamStrLen); break; | ||
case kParamB: vst_strncpy (text, "Rez", kVstMaxParamStrLen); break; | ||
case kParamC: vst_strncpy (text, "Hard", kVstMaxParamStrLen); break; | ||
case kParamD: vst_strncpy (text, "Dry/Wet", kVstMaxParamStrLen); break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} //this is our labels for displaying in the VST host | ||
} | ||
|
||
void DeRez2::getParameterDisplay(VstInt32 index, char *text) { | ||
switch (index) { | ||
case kParamA: float2string (A, text, kVstMaxParamStrLen); break; | ||
case kParamB: float2string (B, text, kVstMaxParamStrLen); break; | ||
case kParamC: float2string (C, text, kVstMaxParamStrLen); break; | ||
case kParamD: float2string (D, text, kVstMaxParamStrLen); break; | ||
default: break; // unknown parameter, shouldn't happen! | ||
} //this displays the values and handles 'popups' where it's discrete choices | ||
} | ||
|
||
void DeRez2::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 DeRez2::canDo(char *text) | ||
{ return (_canDo.find(text) == _canDo.end()) ? -1: 1; } // 1 = yes, -1 = no, 0 = don't know | ||
|
||
bool DeRez2::getEffectName(char* name) { | ||
vst_strncpy(name, "DeRez2", kVstMaxProductStrLen); return true; | ||
} | ||
|
||
VstPlugCategory DeRez2::getPlugCategory() {return kPlugCategEffect;} | ||
|
||
bool DeRez2::getProductString(char* text) { | ||
vst_strncpy (text, "airwindows DeRez2", kVstMaxProductStrLen); return true; | ||
} | ||
|
||
bool DeRez2::getVendorString(char* text) { | ||
vst_strncpy (text, "airwindows", kVstMaxVendorStrLen); return true; | ||
} |
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,79 @@ | ||
/* ======================================== | ||
* DeRez2 - DeRez2.h | ||
* Created 8/12/11 by SPIAdmin | ||
* Copyright (c) 2011 __MyCompanyName__, Airwindows uses the MIT license | ||
* ======================================== */ | ||
|
||
#pragma once | ||
|
||
#include "FXBase.h" | ||
|
||
#include <set> | ||
#include <string> | ||
#include <math.h> | ||
|
||
class DeRez2 : | ||
public AudioEffectX | ||
{ | ||
public: | ||
enum { | ||
kParamA = 0, | ||
kParamB = 1, | ||
kParamC = 2, | ||
kParamD = 3, | ||
kNumParameters = 4 | ||
}; // | ||
|
||
static constexpr int kNumPrograms = 0; | ||
static constexpr int kNumInputs = 2; | ||
static constexpr int kNumOutputs = 2; | ||
static constexpr unsigned long kUniqueId = 'eerz'; //Change this to what the AU identity is! | ||
|
||
DeRez2(audioMasterCallback audioMaster); | ||
~DeRez2(); | ||
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 lastSampleL; | ||
double heldSampleL; | ||
double lastDrySampleL; | ||
double lastOutputSampleL; | ||
|
||
double lastSampleR; | ||
double heldSampleR; | ||
double lastDrySampleR; | ||
double lastOutputSampleR; | ||
|
||
double position; | ||
double incrementA; | ||
double incrementB; | ||
|
||
uint32_t fpdL; | ||
uint32_t fpdR; | ||
//default stuff | ||
|
||
float A; | ||
float B; | ||
float C; | ||
float D; | ||
|
||
}; | ||
|
Oops, something went wrong.