From c7f671ff5bf9cf2559697bbc90cf3cee97cc7975 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 15 Sep 2011 07:17:10 +0000 Subject: Fix control bindings (MIDI learn). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3464 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/ControlBindings.hpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/server/ControlBindings.hpp') diff --git a/src/server/ControlBindings.hpp b/src/server/ControlBindings.hpp index 92eee7c7..b1e69498 100644 --- a/src/server/ControlBindings.hpp +++ b/src/server/ControlBindings.hpp @@ -60,10 +60,20 @@ public: explicit ControlBindings(Engine& engine); ~ControlBindings(); + Key port_binding(PortImpl* port) const; + Key binding_key(const Raul::Atom& binding) const; + void learn(PortImpl* port); - void port_binding_changed(ProcessContext& context, PortImpl* port); - void port_value_changed(ProcessContext& context, PortImpl* port); + void port_binding_changed(ProcessContext& context, + PortImpl* port, + const Raul::Atom& binding); + + void port_value_changed(ProcessContext& context, + PortImpl* port, + Key key, + const Raul::Atom& value); + void pre_process(ProcessContext& context, EventBuffer* control_in); void post_process(ProcessContext& context, EventBuffer* control_out); @@ -80,14 +90,21 @@ public: SharedPtr remove(PortImpl* port); private: - Key port_binding(PortImpl* port); Key midi_event_key(uint16_t size, uint8_t* buf, uint16_t& value); void set_port_value(ProcessContext& context, PortImpl* port, Type type, int16_t value); bool bind(ProcessContext& context, Key key); - Raul::Atom control_to_port_value(PortImpl* port, Type type, int16_t value); - int16_t port_value_to_control(PortImpl* port, Type type); + Raul::Atom control_to_port_value(Type type, + int16_t value, + const Raul::Atom& min, + const Raul::Atom& max) const; + + int16_t port_value_to_control(PortImpl* port, + Type type, + const Raul::Atom& value, + const Raul::Atom& min, + const Raul::Atom& max) const; Engine& _engine; PortImpl* _learn_port; -- cgit v1.2.1