From 84730760698833df09eb8b082a5473be5fc85c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Nusser?= Date: Thu, 2 Aug 2018 10:49:39 +0200 Subject: Fix rampdown issue and clean up a bit while at it. --- src/inputprocessor.cc | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/inputprocessor.cc') diff --git a/src/inputprocessor.cc b/src/inputprocessor.cc index 3af203c..1421d43 100644 --- a/src/inputprocessor.cc +++ b/src/inputprocessor.cc @@ -109,43 +109,43 @@ bool InputProcessor::processOnset(event_t& event, return false; } + auto orig_level = event.velocity; + for(auto& filter : filters) + { + // This line might change the 'event' variable + bool keep = filter->filter(event, event.offset + pos); + + if(!keep) + { + return false; // Skip event completely + } + } + if(instr->getGroup() != "") { // Add event to ramp down all existing events with the same groupname. for(Channel& ch: kit.channels) { - for(Event* event: activeevents[ch.num]) + for(Event* active_event: activeevents[ch.num]) { - if(event->getType() == Event::sample) + if(active_event->getType() == Event::sample) { - auto& event_sample = *static_cast(event); + auto& event_sample = *static_cast(active_event); if(event_sample.group == instr->getGroup() && event_sample.instrument != instr) { // Fixed ramp of 68ms, independent of samplerate - std::size_t ramp_length = (68./1000.)*settings.samplerate.load(); - event_sample.rampdown = ramp_length; // TODO: This must be configurable at some point... // ... perhaps even by instrument (ie. in the xml file) - event_sample.ramp_start = event_sample.rampdown; + std::size_t ramp_length = (68./1000.)*settings.samplerate.load(); + event_sample.rampdown_count = event.offset + ramp_length; + event_sample.ramp_length = ramp_length; } } } } } - auto orig_level = event.velocity; - for(auto& filter : filters) - { - // This line might change the 'event' variable - bool keep = filter->filter(event, event.offset + pos); - - if(!keep) - { - return false; // Skip event completely - } - } - Sample* sample = instr->sample(event.velocity, event.offset + pos); if(sample == nullptr) -- cgit v1.2.3