summaryrefslogtreecommitdiff
path: root/plugin/drumgizmo_plugin.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2019-04-01 20:22:14 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2019-04-08 18:08:42 +0200
commit10d483417fa70bb4c357d598f3bdfcf4f0b75f21 (patch)
tree08f3055d0432511e8e9fbd362bd05307d95c9f5c /plugin/drumgizmo_plugin.cc
parentaa6ef7e42966e36db74a4d15367379cbff37bbc8 (diff)
Add midi aftertouch choke for plugins.
Diffstat (limited to 'plugin/drumgizmo_plugin.cc')
-rw-r--r--plugin/drumgizmo_plugin.cc32
1 files changed, 25 insertions, 7 deletions
diff --git a/plugin/drumgizmo_plugin.cc b/plugin/drumgizmo_plugin.cc
index 3328f6b..67436af 100644
--- a/plugin/drumgizmo_plugin.cc
+++ b/plugin/drumgizmo_plugin.cc
@@ -372,15 +372,33 @@ void DrumGizmoPlugin::Input::run(size_t pos, size_t len, std::vector<event_t>& e
for(auto& event : *plugin.input_events)
{
- if(event.type != MidiEventType::NoteOn)
+ switch(event.type)
{
- continue;
- }
+ case MidiEventType::NoteOn:
+ {
+ int i = mmap.lookup(event.key);
+ if(event.velocity != 0 && (i != -1))
+ {
+ events.push_back({EventType::OnSet, (size_t)i,
+ (size_t)event.getTime(), event.velocity / 127.0f});
+ }
+ }
+ break;
- int i = mmap.lookup(event.key);
- if(event.velocity && (i != -1))
- {
- events.push_back({EventType::OnSet, (size_t)i, (size_t)event.getTime(), event.velocity / 127.0f});
+ case MidiEventType::Aftertouch:
+ {
+ int i = mmap.lookup(event.key);
+ if(event.velocity == 0 && i != -1)
+ {
+ events.push_back({EventType::Choke, (size_t)i,
+ (size_t)event.getTime(), .0f});
+ }
+ }
+ break;
+
+ case MidiEventType::NoteOff:
+ case MidiEventType::Unknown:
+ break;
}
}
}