From 38c9341c63c09ded0ad2f69c1948d2da41c416c2 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 3 Feb 2010 07:35:34 +0000 Subject: Only bind notes to toggle controls, so it is possible to bind non-toggle controls to aftertouch. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2413 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/ControlBindings.cpp | 10 +++++++++- src/engine/ControlBindings.hpp | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/engine') diff --git a/src/engine/ControlBindings.cpp b/src/engine/ControlBindings.cpp index 0c31c731..6fb1c6a8 100644 --- a/src/engine/ControlBindings.cpp +++ b/src/engine/ControlBindings.cpp @@ -109,16 +109,24 @@ ControlBindings::set_port_value(ProcessContext& context, PortImpl* port, Type ty } -void +bool ControlBindings::bind(ProcessContext& context, Type type, int16_t num) { + const Shared::LV2URIMap& uris = Shared::LV2URIMap::instance(); assert(_learn_port); + if (type == MIDI_NOTE) { + bool toggled = _learn_port->has_property(uris.lv2_portProperty, uris.lv2_toggled); + if (!toggled) + return false; + } + _bindings->insert(make_pair(Key(type, num), _learn_port)); const Events::SendBinding ev(context.engine(), context.start(), _learn_port, type, num); context.event_sink().write(sizeof(ev), &ev); _learn_port = NULL; + return true; } diff --git a/src/engine/ControlBindings.hpp b/src/engine/ControlBindings.hpp index 092a2730..1227df09 100644 --- a/src/engine/ControlBindings.hpp +++ b/src/engine/ControlBindings.hpp @@ -76,7 +76,7 @@ private: PortImpl* _learn_port; void set_port_value(ProcessContext& context, PortImpl* port, Type type, int16_t value); - void bind(ProcessContext& context, Type type, int16_t num=0); + bool bind(ProcessContext& context, Type type, int16_t num=0); SharedPtr _bindings; }; -- cgit v1.2.1