summaryrefslogtreecommitdiffstats
path: root/src/server/ControlBindings.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-15 07:17:10 +0000
committerDavid Robillard <d@drobilla.net>2011-09-15 07:17:10 +0000
commitc7f671ff5bf9cf2559697bbc90cf3cee97cc7975 (patch)
treec9448a87cce9bfc957d32bc3b1b404cb7f0c6984 /src/server/ControlBindings.hpp
parentba99f4ca92ea2e6cf8de51341489b0689223e1fc (diff)
downloadingen-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.hpp27
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;