dynamite/plugin.cc
2023-04-14 11:31:15 -04:00

34 lines
No EOL
936 B
C++

#include "plugin.hh"
#include "util.hh"
namespace Dynamite {
void Drive::connect_port(uint32_t port, void* data) {
switch((PluginPort)port) {
case IN:
input = (const float *)data;
break;
case OUT:
output = (float *)data;
break;
case DRIVE:
drive = (const float *)data;
break;
case THRESHOLD:
threshold = (const float *)data;
break;
}
}
void Drive::run(uint32_t n_samples) {
const float coeff = dbCo(*drive);
for(uint32_t pos = 0; pos < n_samples; pos++) {
output[pos] = input[pos] * coeff;
if(output[pos] > *threshold) {
output[pos] = *threshold;
} else if (output[pos] < -*threshold) {
output[pos] = -*threshold;
}
}
}
}