diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2020-07-18 19:02:26 +0200 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2020-07-18 19:02:26 +0200 |
commit | 225608fe4a2370a08e80db0b72f70a56fbcf5060 (patch) | |
tree | 7272a563818b527dd34a9b844672d427886b32c9 /plugins/LV2/src/ADClip7/ADClip7.cpp | |
parent | c7aae3b8ad576ae0f69693da21d1e5a40780f9b4 (diff) | |
download | airwindows-lv2-port-225608fe4a2370a08e80db0b72f70a56fbcf5060.tar.gz airwindows-lv2-port-225608fe4a2370a08e80db0b72f70a56fbcf5060.tar.bz2 airwindows-lv2-port-225608fe4a2370a08e80db0b72f70a56fbcf5060.zip |
LV2: Port plugin ADClip7.
See https://www.airwindows.com/adclip-7/ for a great introduction to
what this plugin does.
Diffstat (limited to 'plugins/LV2/src/ADClip7/ADClip7.cpp')
-rw-r--r-- | plugins/LV2/src/ADClip7/ADClip7.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/LV2/src/ADClip7/ADClip7.cpp b/plugins/LV2/src/ADClip7/ADClip7.cpp new file mode 100644 index 0000000..0c0891a --- /dev/null +++ b/plugins/LV2/src/ADClip7/ADClip7.cpp @@ -0,0 +1,90 @@ +#include "ADClip7.h" +#include <cmath> +#include <iostream> + +namespace { + +enum class PortIndex : uint32_t { + BOOST, + SOFTEN, + ENHANCE, + MODE, + IN_L, + IN_R, + OUT_L, + OUT_R, +}; + +} // anon namespace + +ADClip7::ADClip7(double rate) + : rate(rate) + , refclipL(0.99) + , refclipR(0.99) +{ +} + +void ADClip7::connect_port(uint32_t port, void * data) +{ + switch (static_cast<PortIndex>(port)) { + case PortIndex::BOOST: + boost = static_cast<const float *>(data); + break; + + case PortIndex::SOFTEN: + soften = static_cast<const float *>(data); + break; + + case PortIndex::ENHANCE: + enhance = static_cast<const float *>(data); + break; + + case PortIndex::MODE: + mode = static_cast<const float *>(data); + break; + + case PortIndex::IN_L: + in[0] = static_cast<const float *>(data); + break; + + case PortIndex::IN_R: + in[1] = static_cast<const float *>(data); + break; + + case PortIndex::OUT_L: + out[0] = static_cast<float *>(data); + break; + + case PortIndex::OUT_R: + out[1] = static_cast<float *>(data); + break; + + default: + std::cerr << "Invalid port " << port << ": ignoring." << std::endl; + } +} + +void ADClip7::run(uint32_t num_samples) +{ + A = *boost; + B = *soften; + C = *enhance; + D = *mode; + + processReplacing(const_cast<float **>(in), out, num_samples); +} + +// +// Helper functions to satisfy the processing code +// + +double ADClip7::getSampleRate() +{ + return rate; +} + + +// +// Include the processing code from the VST version. +// +#include "../../../LinuxVST/src/ADClip7/ADClip7Proc.cpp" |