| @@ -464,14 +464,14 @@ const char* const* RackGraph::getConnections() const noexcept | |||
| { | |||
| case RACK_GRAPH_CARLA_PORT_AUDIO_IN1: | |||
| case RACK_GRAPH_CARLA_PORT_AUDIO_IN2: | |||
| std::snprintf(strBuf, STR_MAX, "AudioIn:%i", otherPort+1); | |||
| std::snprintf(strBuf, STR_MAX, "AudioIn:%i", otherPort); | |||
| connList.append(strBuf); | |||
| connList.append(getCarlaRackFullPortNameFromId(carlaPort)); | |||
| break; | |||
| case RACK_GRAPH_CARLA_PORT_AUDIO_OUT1: | |||
| case RACK_GRAPH_CARLA_PORT_AUDIO_OUT2: | |||
| std::snprintf(strBuf, STR_MAX, "AudioOut:%i", otherPort+1); | |||
| std::snprintf(strBuf, STR_MAX, "AudioOut:%i", otherPort); | |||
| connList.append(getCarlaRackFullPortNameFromId(carlaPort)); | |||
| connList.append(strBuf); | |||
| break; | |||
| @@ -516,7 +516,7 @@ bool RackGraph::getGroupAndPortIdFromFullName(const char* const fullPortName, ui | |||
| if (const int portTest = std::atoi(fullPortName+8)) | |||
| { | |||
| portId = static_cast<uint>(portTest-1); | |||
| portId = static_cast<uint>(portTest); | |||
| return true; | |||
| } | |||
| } | |||
| @@ -526,7 +526,7 @@ bool RackGraph::getGroupAndPortIdFromFullName(const char* const fullPortName, ui | |||
| if (const int portTest = std::atoi(fullPortName+9)) | |||
| { | |||
| portId = static_cast<uint>(portTest-1); | |||
| portId = static_cast<uint>(portTest); | |||
| return true; | |||
| } | |||
| } | |||
| @@ -749,10 +749,10 @@ void RackGraph::processHelper(CarlaEngine::ProtectedData* const data, const floa | |||
| for (LinkedList<uint>::Itenerator it = audio.connectedOut1.begin(); it.valid(); it.next()) | |||
| { | |||
| const uint& port(it.getValue(0)); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port != 0); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port < outputs); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port > 0); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port <= outputs); | |||
| FloatVectorOperations::add(outBuf[port], audio.outBuf[0], iframes); | |||
| FloatVectorOperations::add(outBuf[port-1], audio.outBuf[0], iframes); | |||
| } | |||
| } | |||
| @@ -761,10 +761,10 @@ void RackGraph::processHelper(CarlaEngine::ProtectedData* const data, const floa | |||
| for (LinkedList<uint>::Itenerator it = audio.connectedOut2.begin(); it.valid(); it.next()) | |||
| { | |||
| const uint& port(it.getValue(0)); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port != 0); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port < outputs); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port > 0); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port <= outputs); | |||
| FloatVectorOperations::add(outBuf[port], audio.outBuf[1], iframes); | |||
| FloatVectorOperations::add(outBuf[port-1], audio.outBuf[1], iframes); | |||
| } | |||
| } | |||
| } | |||
| @@ -34,12 +34,13 @@ CARLA_BACKEND_START_NAMESPACE | |||
| // Rack Graph stuff | |||
| enum RackGraphGroupIds { | |||
| RACK_GRAPH_GROUP_CARLA = 0, | |||
| RACK_GRAPH_GROUP_AUDIO_IN = 1, | |||
| RACK_GRAPH_GROUP_AUDIO_OUT = 2, | |||
| RACK_GRAPH_GROUP_MIDI_IN = 3, | |||
| RACK_GRAPH_GROUP_MIDI_OUT = 4, | |||
| RACK_GRAPH_GROUP_MAX = 5 | |||
| RACK_GRAPH_GROUP_NULL = 0, | |||
| RACK_GRAPH_GROUP_CARLA = 1, | |||
| RACK_GRAPH_GROUP_AUDIO_IN = 2, | |||
| RACK_GRAPH_GROUP_AUDIO_OUT = 3, | |||
| RACK_GRAPH_GROUP_MIDI_IN = 4, | |||
| RACK_GRAPH_GROUP_MIDI_OUT = 5, | |||
| RACK_GRAPH_GROUP_MAX = 6 | |||
| }; | |||
| enum RackGraphCarlaPortIds { | |||
| @@ -320,7 +320,7 @@ public: | |||
| callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_GRAPH_GROUP_AUDIO_IN, PATCHBAY_ICON_HARDWARE, -1, 0.0f, strBuf); | |||
| for (int i=0, count=inputNames.size(); i<count; ++i) | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_IN, static_cast<int>(i), PATCHBAY_PORT_TYPE_AUDIO, 0.0f, inputNames[i].toRawUTF8()); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_IN, static_cast<int>(i)+1, PATCHBAY_PORT_TYPE_AUDIO, 0.0f, inputNames[i].toRawUTF8()); | |||
| } | |||
| // Audio Out | |||
| @@ -335,7 +335,7 @@ public: | |||
| callback(ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED, RACK_GRAPH_GROUP_AUDIO_OUT, PATCHBAY_ICON_HARDWARE, -1, 0.0f, strBuf); | |||
| for (int i=0, count=outputNames.size(); i<count; ++i) | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_OUT, static_cast<int>(i), PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, outputNames[i].toRawUTF8()); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_OUT, static_cast<int>(i)+1, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, outputNames[i].toRawUTF8()); | |||
| } | |||
| // MIDI In | |||
| @@ -351,7 +351,7 @@ public: | |||
| std::snprintf(strBuf, STR_MAX, "Readable MIDI ports:%s", portName.toRawUTF8()); | |||
| PortNameToId portNameToId; | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_IN, static_cast<uint>(i), portName.toRawUTF8(), strBuf); | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_IN, static_cast<uint>(i)+1, portName.toRawUTF8(), strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, portNameToId.group, static_cast<int>(portNameToId.port), PATCHBAY_PORT_TYPE_MIDI, 0.0f, portNameToId.name); | |||
| @@ -372,7 +372,7 @@ public: | |||
| std::snprintf(strBuf, STR_MAX, "Writable MIDI ports:%s", portName.toRawUTF8()); | |||
| PortNameToId portNameToId; | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_OUT, static_cast<uint>(i), portName.toRawUTF8(), strBuf); | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_OUT, static_cast<uint>(i)+1, portName.toRawUTF8(), strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, portNameToId.group, static_cast<int>(portNameToId.port), PATCHBAY_PORT_TYPE_MIDI|PATCHBAY_PORT_IS_INPUT, 0.0f, portNameToId.name); | |||
| @@ -812,7 +812,8 @@ private: | |||
| void splice() | |||
| { | |||
| dataPending.moveTo(data, true /* append */); | |||
| if (dataPending.count() > 0) | |||
| dataPending.moveTo(data, true /* append */); | |||
| } | |||
| }; | |||
| @@ -453,7 +453,7 @@ public: | |||
| for (uint i=0; i < fAudioInCount; ++i) | |||
| { | |||
| std::snprintf(strBuf, STR_MAX, "capture_%i", i+1); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_IN, static_cast<int>(i), PATCHBAY_PORT_TYPE_AUDIO, 0.0f, strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_IN, static_cast<int>(i)+1, PATCHBAY_PORT_TYPE_AUDIO, 0.0f, strBuf); | |||
| } | |||
| } | |||
| @@ -469,7 +469,7 @@ public: | |||
| for (uint i=0; i < fAudioOutCount; ++i) | |||
| { | |||
| std::snprintf(strBuf, STR_MAX, "playback_%i", i+1); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_OUT, static_cast<int>(i), PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, RACK_GRAPH_GROUP_AUDIO_OUT, static_cast<int>(i)+1, PATCHBAY_PORT_TYPE_AUDIO|PATCHBAY_PORT_IS_INPUT, 0.0f, strBuf); | |||
| } | |||
| } | |||
| @@ -486,7 +486,7 @@ public: | |||
| std::snprintf(strBuf, STR_MAX, "Readable MIDI ports:%s", portName.c_str()); | |||
| PortNameToId portNameToId; | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_IN, i, portName.c_str(), strBuf); | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_IN, i+1, portName.c_str(), strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, portNameToId.group, static_cast<int>(portNameToId.port), PATCHBAY_PORT_TYPE_MIDI, 0.0f, portNameToId.name); | |||
| @@ -507,7 +507,7 @@ public: | |||
| std::snprintf(strBuf, STR_MAX, "Writable MIDI ports:%s", portName.c_str()); | |||
| PortNameToId portNameToId; | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_OUT, i, portName.c_str(), strBuf); | |||
| portNameToId.setData(RACK_GRAPH_GROUP_MIDI_OUT, i+1, portName.c_str(), strBuf); | |||
| callback(ENGINE_CALLBACK_PATCHBAY_PORT_ADDED, portNameToId.group, static_cast<int>(portNameToId.port), PATCHBAY_PORT_TYPE_MIDI|PATCHBAY_PORT_IS_INPUT, 0.0f, portNameToId.name); | |||
| @@ -1070,7 +1070,8 @@ private: | |||
| void splice() | |||
| { | |||
| dataPending.moveTo(data, true /* append */); | |||
| if (dataPending.count() > 0) | |||
| dataPending.moveTo(data, true /* append */); | |||
| } | |||
| }; | |||