From 52bcc4db2fd8ca3f1da36d3ffb488a0a6b113d10 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 1 May 2020 19:29:06 +0200 Subject: Make velocity modifier reporting a filter. --- src/inputprocessor.cc | 27 +++++++++++++++++++++++---- src/inputprocessor.h | 1 + 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(settings)); filters.emplace_back(std::make_unique(settings)); filters.emplace_back(std::make_unique(settings, random)); + filters.emplace_back(std::make_unique(settings, original_velocity)); filters.emplace_back(std::make_unique(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> filters; Settings& settings; + float original_velocity{0.0f}; }; -- cgit v1.2.3