diff options
author | David Robillard <d@drobilla.net> | 2007-09-23 02:03:41 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-09-23 02:03:41 +0000 |
commit | d1ba04724f0bfbed18690316dbe5eb977a131733 (patch) | |
tree | 76ce5146a916ff4a497f88a7c4c3e99c64f4fca6 /src/libs/client/OSCEngineSender.cpp | |
parent | c1160ffc8a5dfb38891b0faa6373c9eecdd8e4c9 (diff) | |
download | ingen-d1ba04724f0bfbed18690316dbe5eb977a131733.tar.gz ingen-d1ba04724f0bfbed18690316dbe5eb977a131733.tar.bz2 ingen-d1ba04724f0bfbed18690316dbe5eb977a131733.zip |
Working LV2 UI control setting (including MIDI).
Klaviatur (ll-plugins virtual keyboard) is now fully functional inside Ingen.
git-svn-id: http://svn.drobilla.net/lad/ingen@766 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/client/OSCEngineSender.cpp')
-rw-r--r-- | src/libs/client/OSCEngineSender.cpp | 86 |
1 files changed, 64 insertions, 22 deletions
diff --git a/src/libs/client/OSCEngineSender.cpp b/src/libs/client/OSCEngineSender.cpp index 90f27676..cadb962c 100644 --- a/src/libs/client/OSCEngineSender.cpp +++ b/src/libs/client/OSCEngineSender.cpp @@ -351,61 +351,103 @@ OSCEngineSender::disconnect_all(const string& node_path) void OSCEngineSender::set_port_value(const string& port_path, + const string& type_uri, uint32_t data_size, const void* data) { assert(_engine_addr); - assert(data_size == 4); - lo_send(_engine_addr, "/ingen/set_port_value", "isf", - next_id(), - port_path.c_str(), - *(float*)data); + if (type_uri == "ingen:control") { + assert(data_size == 4); + lo_send(_engine_addr, "/ingen/set_port_value", "isf", + next_id(), + port_path.c_str(), + *(float*)data); + } else { + lo_blob b = lo_blob_new(data_size, data); + lo_send(_engine_addr, "/ingen/set_port_value", "isb", + next_id(), + port_path.c_str(), + b); + lo_blob_free(b); + } } void OSCEngineSender::set_port_value(const string& port_path, + const string& type_uri, uint32_t voice, uint32_t data_size, const void* data) { assert(_engine_addr); - assert(data_size == 4); - lo_send(_engine_addr, "/ingen/set_port_value", "isif", - next_id(), - port_path.c_str(), - voice, - *(float*)data); + if (type_uri == "ingen:control") { + assert(data_size == 4); + lo_send(_engine_addr, "/ingen/set_port_value", "isf", + next_id(), + port_path.c_str(), + *(float*)data); + } else { + lo_blob b = lo_blob_new(data_size, data); + lo_send(_engine_addr, "/ingen/set_port_value", "isb", + next_id(), + port_path.c_str(), + b); + lo_blob_free(b); + } } void OSCEngineSender::set_port_value_immediate(const string& port_path, + const string& type_uri, uint32_t data_size, const void* data) { assert(_engine_addr); - assert(data_size == 4); - lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isf", - next_id(), - port_path.c_str(), - *(float*)data); + + if (type_uri == "ingen:control") { + assert(data_size == 4); + lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isf", + next_id(), + port_path.c_str(), + *(float*)data); + } else { + lo_blob b = lo_blob_new(data_size, data); + lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isb", + next_id(), + port_path.c_str(), + b); + lo_blob_free(b); + } } void OSCEngineSender::set_port_value_immediate(const string& port_path, + const string& type_uri, uint32_t voice, uint32_t data_size, const void* data) { assert(_engine_addr); - assert(data_size == 4); - lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isif", - next_id(), - port_path.c_str(), - voice, - *(float*)data); + + if (type_uri == "ingen:control") { + assert(data_size == 4); + lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isif", + next_id(), + port_path.c_str(), + voice, + *(float*)data); + } else { + lo_blob b = lo_blob_new(data_size, data); + lo_send(_engine_addr, "/ingen/set_port_value_immediate", "isib", + next_id(), + port_path.c_str(), + voice, + b); + lo_blob_free(b); + } } |