summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2020-05-01 19:29:06 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2020-05-01 19:29:06 +0200
commit52bcc4db2fd8ca3f1da36d3ffb488a0a6b113d10 (patch)
tree938a3fd1a412be409d9c07813888c9480adbc1a0
parentbfc8486a9428274d421f5c51cca8779b3ab88073 (diff)
Make velocity modifier reporting a filter.
-rw-r--r--src/inputprocessor.cc27
-rw-r--r--src/inputprocessor.h1
2 files changed, 24 insertions, 4 deletions
diff --git a/src/inputprocessor.cc b/src/inputprocessor.cc
index b03dda8..1054539 100644
--- a/src/inputprocessor.cc
+++ b/src/inputprocessor.cc
@@ -39,6 +39,27 @@
#include "cpp11fix.h"
+class Reporter
+ : public InputFilter
+{
+public:
+ Reporter(Settings& settings, float& original_velocity)
+ : settings(settings)
+ , original_velocity(original_velocity)
+ {
+ }
+
+ bool filter(event_t& event, std::size_t pos) override
+ {
+ settings.velocity_modifier_current.store(event.velocity / original_velocity);
+ return true;
+ }
+
+
+ Settings& settings;
+ float& original_velocity;
+};
+
InputProcessor::InputProcessor(Settings& settings,
DrumKit& kit,
EventsDS& events_ds,
@@ -51,6 +72,7 @@ InputProcessor::InputProcessor(Settings& settings,
filters.emplace_back(std::make_unique<PowermapFilter>(settings));
filters.emplace_back(std::make_unique<StaminaFilter>(settings));
filters.emplace_back(std::make_unique<LatencyFilter>(settings, random));
+ filters.emplace_back(std::make_unique<Reporter>(settings, original_velocity));
filters.emplace_back(std::make_unique<VelocityFilter>(settings, random));
}
@@ -180,7 +202,7 @@ bool InputProcessor::processOnset(event_t& event, std::size_t pos,
return false;
}
- auto const original_level = event.velocity;
+ original_velocity = event.velocity;
for(auto& filter : filters)
{
// This line might change the 'event' variable
@@ -210,9 +232,6 @@ bool InputProcessor::processOnset(event_t& event, std::size_t pos,
return false;
}
- auto const selected_level = (sample->getPower() - power_min)/power_span;
- settings.velocity_modifier_current.store(selected_level/original_level);
-
events_ds.startAddingNewGroup(instrument_id);
for(Channel& ch: kit.channels)
{
diff --git a/src/inputprocessor.h b/src/inputprocessor.h
index 546f348..3c2cd5a 100644
--- a/src/inputprocessor.h
+++ b/src/inputprocessor.h
@@ -67,4 +67,5 @@ private:
std::vector<std::unique_ptr<InputFilter>> filters;
Settings& settings;
+ float original_velocity{0.0f};
};