blob: 11c8c2791f1ab6ceb2834eab30fd78645686ade0 (
plain) (
tree)
|
|
#include "ADClip7.h"
#include <cmath>
#include <iostream>
#include <lv2wrapper.h>
namespace {
enum class PortIndex : uint32_t {
BOOST,
SOFTEN,
ENHANCE,
MODE,
IN_L,
IN_R,
OUT_L,
OUT_R,
};
} // anon namespace
ADClip7::ADClip7(double rate)
: LV2Plugin(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);
}
//
// Include the processing code from the VST version.
//
#include "../../../LinuxVST/src/ADClip7/ADClip7Proc.cpp"
// Create the LV2Wrapper and register the plugin
LV2Wrapper<ADClip7> plugin;
|