diff options
Diffstat (limited to 'plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp')
-rwxr-xr-x | plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp | 56 |
1 files changed, 54 insertions, 2 deletions
diff --git a/plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp b/plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp index 22a3cc7..7727b50 100755 --- a/plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp +++ b/plugins/MacVST/NotJustAnotherDither/source/NotJustAnotherDither.cpp @@ -12,6 +12,9 @@ AudioEffect* createEffectInstance(audioMasterCallback audioMaster) {return new N NotJustAnotherDither::NotJustAnotherDither(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, kNumPrograms, kNumParameters) { + A = 1.0; + B = 0.0; + fpd = 17; bynL[0] = 1000; bynL[1] = 301; bynL[2] = 176; @@ -58,31 +61,80 @@ void NotJustAnotherDither::getProgramName(char *name) {vst_strncpy (name, _progr //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 NotJustAnotherDither::getChunk (void** data, bool isPreset) { + float *chunkData = (float *)calloc(kNumParameters, sizeof(float)); + chunkData[0] = A; + chunkData[1] = B; + /* 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 NotJustAnotherDither::setChunk (void* data, VstInt32 byteSize, bool isPreset) { + float *chunkData = (float *)data; + A = pinParameter(chunkData[0]); + B = pinParameter(chunkData[1]); + /* 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 NotJustAnotherDither::setParameter(VstInt32 index, float value) { - } + switch (index) { + case kParamA: A = value; break; + case kParamB: B = value; break; + default: throw; // unknown parameter, shouldn't happen! + } +} float NotJustAnotherDither::getParameter(VstInt32 index) { - return 0.0; //we only need to update the relevant name, this is simple to manage + switch (index) { + case kParamA: return A; break; + case kParamB: return B; 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 NotJustAnotherDither::getParameterName(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "Quant", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "DeRez", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this is our labels for displaying in the VST host } void NotJustAnotherDither::getParameterDisplay(VstInt32 index, char *text) { + switch (index) { + case kParamA: switch((VstInt32)( A * 1.999 )) //0 to almost edge of # of params + { case 0: vst_strncpy (text, "CD 16", kVstMaxParamStrLen); break; + case 1: vst_strncpy (text, "HD 24", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } break; //completed consoletype 'popup' parameter, exit + case kParamB: float2string (B, text, kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } //this displays the values and handles 'popups' where it's discrete choices } void NotJustAnotherDither::getParameterLabel(VstInt32 index, char *text) { + switch (index) { + case kParamA: vst_strncpy (text, "", kVstMaxParamStrLen); break; + case kParamB: vst_strncpy (text, "", kVstMaxParamStrLen); break; + default: break; // unknown parameter, shouldn't happen! + } } VstInt32 NotJustAnotherDither::canDo(char *text) |