diff options
author | David Robillard <d@drobilla.net> | 2011-09-15 07:17:10 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-09-15 07:17:10 +0000 |
commit | c7f671ff5bf9cf2559697bbc90cf3cee97cc7975 (patch) | |
tree | c9448a87cce9bfc957d32bc3b1b404cb7f0c6984 /src/server/ControlBindings.hpp | |
parent | ba99f4ca92ea2e6cf8de51341489b0689223e1fc (diff) | |
download | ingen-c7f671ff5bf9cf2559697bbc90cf3cee97cc7975.tar.gz ingen-c7f671ff5bf9cf2559697bbc90cf3cee97cc7975.tar.bz2 ingen-c7f671ff5bf9cf2559697bbc90cf3cee97cc7975.zip |
Fix control bindings (MIDI learn).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3464 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/ControlBindings.hpp')
-rw-r--r-- | src/server/ControlBindings.hpp | 27 |
1 files changed, 22 insertions, 5 deletions
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<Bindings> 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; |