From f8e09808b7a51b474cbee66442cf7a03eed9010a Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 24 Oct 2006 18:42:17 +0000 Subject: Superficial (completely non-functional!) LV2 MIDI support. git-svn-id: http://svn.drobilla.net/lad/ingen@193 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/engine/LV2Node.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/libs/engine') diff --git a/src/libs/engine/LV2Node.cpp b/src/libs/engine/LV2Node.cpp index 40270409..1f195dbe 100644 --- a/src/libs/engine/LV2Node.cpp +++ b/src/libs/engine/LV2Node.cpp @@ -87,8 +87,6 @@ LV2Node::instantiate() port_path = path() + "/" + port_name; - // Assumes there is only the 4 classes - SLV2PortClass port_class = slv2_port_get_class(_lv2_plugin, j); const bool is_control = (port_class == SLV2_CONTROL_RATE_INPUT || port_class == SLV2_CONTROL_RATE_OUTPUT); @@ -100,12 +98,25 @@ LV2Node::instantiate() else port_buffer_size = _buffer_size; - if (is_input) { - port = new InputPort(this, port_name, j, _poly, DataType::FLOAT, port_buffer_size); - _ports->at(j) = port; - } else /* output */ { - port = new OutputPort(this, port_name, j, _poly, DataType::FLOAT, port_buffer_size); - _ports->at(j) = port; + char* const data_type = slv2_port_get_data_type(_lv2_plugin, j); + + if (!strcmp(data_type, SLV2_DATA_TYPE_FLOAT)) { + if (is_input) { + port = new InputPort(this, port_name, j, _poly, DataType::FLOAT, port_buffer_size); + _ports->at(j) = port; + } else /* output */ { + port = new OutputPort(this, port_name, j, _poly, DataType::FLOAT, port_buffer_size); + _ports->at(j) = port; + } + } else if (!strcmp(data_type, "http://ll-plugins.nongnu.org/lv2/namespace#miditype")) { + cerr << "MIDI PORT!\n"; + if (is_input) { + port = new InputPort(this, port_name, j, _poly, DataType::MIDI, port_buffer_size); + _ports->at(j) = port; + } else /* output */ { + port = new OutputPort(this, port_name, j, _poly, DataType::MIDI, port_buffer_size); + _ports->at(j) = port; + } } assert(_ports->at(j) != NULL); -- cgit v1.2.1