summaryrefslogtreecommitdiffstats
path: root/src/libs/client/OSCEngineSender.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-09-23 02:03:41 +0000
committerDavid Robillard <d@drobilla.net>2007-09-23 02:03:41 +0000
commitd1ba04724f0bfbed18690316dbe5eb977a131733 (patch)
tree76ce5146a916ff4a497f88a7c4c3e99c64f4fca6 /src/libs/client/OSCEngineSender.cpp
parentc1160ffc8a5dfb38891b0faa6373c9eecdd8e4c9 (diff)
downloadingen-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.cpp86
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);
+ }
}