summaryrefslogtreecommitdiff
path: root/src/inputprocessor.cc
diff options
context:
space:
mode:
authorAndré Nusser <andre.nusser@googlemail.com>2018-08-02 10:49:39 +0200
committerAndré Nusser <andre.nusser@googlemail.com>2018-08-02 14:06:34 +0200
commit84730760698833df09eb8b082a5473be5fc85c85 (patch)
tree18db88656718463c3af7349637c613cf9c889e5d /src/inputprocessor.cc
parente39d82f5a06db9d4c4c505d30c4ac116037e1399 (diff)
Fix rampdown issue and clean up a bit while at it.
Diffstat (limited to 'src/inputprocessor.cc')
-rw-r--r--src/inputprocessor.cc36
1 files changed, 18 insertions, 18 deletions
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<EventSample*>(event);
+ auto& event_sample = *static_cast<EventSample*>(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)