From 4f24f595207ffca61292af8e0d343b5ba1b35e44 Mon Sep 17 00:00:00 2001 From: Volker Fischer Date: Sun, 8 Aug 2021 17:27:03 +0200 Subject: proof of concept of using varying choke times of open hi-hat to support continuous hi-hat pedal changes --- src/inputprocessor.cc | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/inputprocessor.cc') diff --git a/src/inputprocessor.cc b/src/inputprocessor.cc index d8a7ff9..285daaa 100644 --- a/src/inputprocessor.cc +++ b/src/inputprocessor.cc @@ -168,8 +168,8 @@ static void applyChokeGroup(Settings& settings, DrumKit& kit, for(auto& event_sample : events_ds.iterateOver(ch.num)) { if(event_sample.group == instr.getGroup() && - event_sample.instrument_id != instrument_id && - event_sample.rampdown_count == -1) // Only if not already ramping. + event_sample.instrument_id != instrument_id /*&& + event_sample.rampdown_count == -1*/) // Only if not already ramping. { // Fixed group rampdown time of 68ms, independent of samplerate applyChoke(settings, event_sample, 68, event.offset); @@ -190,8 +190,8 @@ static void applyDirectedChoke(Settings& settings, DrumKit& kit, { for(auto& event_sample : events_ds.iterateOver(ch.num)) { - if(choke.instrument_id == event_sample.instrument_id && - event_sample.rampdown_count == -1) // Only if not already ramping. + if(choke.instrument_id == event_sample.instrument_id /*&& + event_sample.rampdown_count == -1*/) // Only if not already ramping. { // choke.choketime is in ms applyChoke(settings, event_sample, choke.choketime, event.offset); @@ -355,11 +355,22 @@ bool InputProcessor::processChoke(event_t& event, { for(auto& event_sample : events_ds.iterateOver(ch.num)) { - if(event_sample.instrument_id == instrument_id && - event_sample.rampdown_count == -1) // Only if not already ramping. + if(event_sample.instrument_id == instrument_id /*&& + event_sample.rampdown_count == -1*/) // Only if not already ramping. { // Fixed group rampdown time of 68ms, independent of samplerate + +// quick hack: all "Only if not already ramping" must be disabled for hi-hat pedal to work +if(event.offset >= 1000000) // quick hack: added 1000000 to offset to transport hi-hat controller value +{ + int hihat_controller = event.offset - 1000000; + int rampdown_time = static_cast(std::max(100.0, pow(10.0, (127.0 - hihat_controller) / 38.0))); // TODO optimize + applyChoke(settings, event_sample, rampdown_time, 0); +} +else +{ applyChoke(settings, event_sample, 68, event.offset); +} } } } -- cgit v1.2.3