summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/OSCEngineReceiver.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-08-17 01:34:53 +0000
committerDavid Robillard <d@drobilla.net>2008-08-17 01:34:53 +0000
commit694b31089c8060fc6b908b146b12c0e340d004c7 (patch)
tree48b0e0195de5e7b297e65be15eda35639585ef8a /src/libs/engine/OSCEngineReceiver.cpp
parent3dc90cc95df35e5c786857336f22856c6373b00f (diff)
downloadingen-694b31089c8060fc6b908b146b12c0e340d004c7.tar.gz
ingen-694b31089c8060fc6b908b146b12c0e340d004c7.tar.bz2
ingen-694b31089c8060fc6b908b146b12c0e340d004c7.zip
Cloooser...
Bundling of OSC communication both ways (previous was just engine->client). Factor out common OSC*Sender functionality (bundling stuff). Fully type-safe and polyphony-aware port value setting/getting, from RDF through OSC through engine and back again. git-svn-id: http://svn.drobilla.net/lad/ingen@1409 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/OSCEngineReceiver.cpp')
-rw-r--r--src/libs/engine/OSCEngineReceiver.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/libs/engine/OSCEngineReceiver.cpp b/src/libs/engine/OSCEngineReceiver.cpp
index 4cc27367..74947917 100644
--- a/src/libs/engine/OSCEngineReceiver.cpp
+++ b/src/libs/engine/OSCEngineReceiver.cpp
@@ -639,23 +639,26 @@ OSCEngineReceiver::_set_port_value_immediate_cb(const char* path, const char* ty
return 1;
const char* port_path = &argv[1]->s;
+ using Raul::Atom;
if (!strcmp(types, "isf")) { // float, all voices
const float value = argv[2]->f;
- set_port_value_immediate(port_path, "ingen:Float", sizeof(float), &value);
+ set_port_value_immediate(port_path, Atom(value));
} else if (!strcmp(types, "isif")) { // float, specific voice
const float value = argv[3]->f;
- set_port_value_immediate(port_path, "ingen:Float", argv[2]->i, sizeof(float), &value);
+ set_voice_value_immediate(port_path, argv[2]->i, Atom(value));
} else if (!strcmp(types, "issb")) { // blob (event), all voices
+ const char* type = &argv[2]->s;
lo_blob b = argv[3];
size_t data_size = lo_blob_datasize(b);
void* data = lo_blob_dataptr(b);
- set_port_value_immediate(port_path, &argv[2]->s, data_size, data);
+ set_port_value_immediate(port_path, Atom(type, data_size, data));
} else if (!strcmp(types, "isisb")) { // blob (event), specific voice
+ const char* type = &argv[3]->s;
lo_blob b = argv[4];
size_t data_size = lo_blob_datasize(b);
void* data = lo_blob_dataptr(b);
- set_port_value_immediate(port_path, &argv[3]->s, argv[2]->i, data_size, data);
+ set_voice_value_immediate(port_path, argv[2]->i, Atom(type, data_size, data));
} else {
return 1;
}
@@ -700,22 +703,26 @@ OSCEngineReceiver::_set_port_value_cb(const char* path, const char* types, lo_ar
const char* port_path = &argv[1]->s;
+ using Raul::Atom;
+
if (!strcmp(types, "isf")) { // float, all voices
const float value = argv[2]->f;
- set_port_value_immediate(port_path, "ingen:Float", sizeof(float), &value);
+ set_port_value_immediate(port_path, Atom(value));
} else if (!strcmp(types, "isif")) { // float, specific voice
const float value = argv[3]->f;
- set_port_value_immediate(port_path, "ingen:Float", argv[2]->i, sizeof(float), &value);
+ set_voice_value_immediate(port_path, argv[2]->i, Atom(value));
} else if (!strcmp(types, "issb")) { // blob (event), all voices
+ const char* type = &argv[2]->s;
lo_blob b = argv[3];
size_t data_size = lo_blob_datasize(b);
void* data = lo_blob_dataptr(b);
- set_port_value_immediate(port_path, &argv[2]->s, data_size, data);
+ set_port_value_immediate(port_path, Atom(type, data_size, data));
} else if (!strcmp(types, "isisb")) { // blob (event), specific voice
+ const char* type = &argv[3]->s;
lo_blob b = argv[4];
size_t data_size = lo_blob_datasize(b);
void* data = lo_blob_dataptr(b);
- set_port_value_immediate(port_path, &argv[3]->s, argv[2]->i, data_size, data);
+ set_voice_value_immediate(port_path, argv[2]->i, Atom(type, data_size, data));
} else {
return 1;
}