summaryrefslogtreecommitdiff
path: root/src/inputprocessor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/inputprocessor.cc')
-rw-r--r--src/inputprocessor.cc25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/inputprocessor.cc b/src/inputprocessor.cc
index abd2898..d8a7ff9 100644
--- a/src/inputprocessor.cc
+++ b/src/inputprocessor.cc
@@ -36,6 +36,7 @@
#include "powermapfilter.h"
#include "staminafilter.h"
#include "velocityfilter.h"
+#include "positionfilter.h"
#include "cpp11fix.h"
@@ -93,6 +94,7 @@ InputProcessor::InputProcessor(Settings& settings,
filters.emplace_back(std::make_unique<StaminaFilter>(settings));
filters.emplace_back(std::make_unique<LatencyFilter>(settings, random));
filters.emplace_back(std::make_unique<VelocityFilter>(settings, random));
+ filters.emplace_back(std::make_unique<PositionFilter>(settings, random));
filters.emplace_back(std::make_unique<Reporter>(settings, original_velocity));
}
@@ -244,7 +246,8 @@ bool InputProcessor::processOnset(event_t& event, std::size_t pos,
auto const power_min = instr->getMinPower();
float const power_span = power_max - power_min;
float const instrument_level = power_min + event.velocity*power_span;
- const auto sample = instr->sample(instrument_level, event.offset + pos);
+ // FIXME: bad variable naming of parameters
+ const auto sample = instr->sample(instrument_level, event.position, event.offset + pos);
if(sample == nullptr)
{
@@ -287,6 +290,26 @@ bool InputProcessor::processOnset(event_t& event, std::size_t pos,
{
event_sample.scale *= event.velocity;
}
+
+// TEST dynamic expander
+//printf("event_sample.scale: %f, event.velocity: %f, sample->getPower(): %f, instr->getMinPower(): %f, instr->getMaxPower(): %f\n", event_sample.scale, event.velocity, sample->getPower(), instr->getMinPower(), instr->getMaxPower());
+
+auto instr_dynamic = 10 * log10(instr->getMaxPower()) - 10 * log10(instr->getMinPower());
+auto sel_power = 10 * log10(sample->getPower());
+
+auto target_dynamic = 35.0; // dB
+auto target_max_power = 10 * log10(instr->getMaxPower());
+auto target_min_power = target_max_power - target_dynamic;
+
+auto target_power = event.velocity * target_dynamic - target_dynamic + target_max_power;
+
+auto diff_power = target_power - sel_power;
+
+event_sample.scale = pow(10.0, diff_power / 20);
+
+//printf("event_sample.scale: %f, diff_power: %f, target_power: %f, sel_power: %f\n", event_sample.scale, diff_power, target_power, sel_power);
+
+
}
}