Browse Source

Fixes needed for upcoming carla-control

tags/1.9.7
falkTX 11 years ago
parent
commit
b02fc22d70
11 changed files with 99 additions and 58 deletions
  1. +10
    -2
      source/backend/engine/CarlaEngine.cpp
  2. +28
    -28
      source/backend/engine/CarlaEngineOscSend.cpp
  3. +1
    -1
      source/backend/plugin/CarlaPluginDSSI.cpp
  4. +1
    -1
      source/backend/plugin/CarlaPluginFluidSynth.cpp
  5. +1
    -1
      source/backend/plugin/CarlaPluginJuce.cpp
  6. +1
    -1
      source/backend/plugin/CarlaPluginLV2.cpp
  7. +1
    -1
      source/backend/plugin/CarlaPluginLinuxSampler.cpp
  8. +1
    -1
      source/backend/plugin/CarlaPluginNative.cpp
  9. +1
    -1
      source/backend/plugin/CarlaPluginVST2.cpp
  10. +16
    -8
      source/carla_backend.py
  11. +38
    -13
      source/carla_host.py

+ 10
- 2
source/backend/engine/CarlaEngine.cpp View File

@@ -683,12 +683,20 @@ bool CarlaEngine::removeAllPlugins()

pData->thread.stopThread(500);

const uint curPluginCount(pData->curPluginCount);

#ifndef BUILD_BRIDGE
if (pData->options.processMode == ENGINE_PROCESS_MODE_PATCHBAY)
pData->graph.removeAllPlugins();
#endif

const uint32_t curPluginCount(pData->curPluginCount);
# ifdef HAVE_LIBLO
if (isOscControlRegistered())
{
for (int i=curPluginCount; --i >= 0;)
oscSend_control_remove_plugin(i);
}
# endif
#endif

const bool lockWait(isRunning());
const ScopedActionLock sal(this, kEnginePostActionZeroCount, 0, 0, lockWait);


+ 28
- 28
source/backend/engine/CarlaEngineOscSend.cpp View File

@@ -33,7 +33,7 @@ void CarlaEngine::oscSend_control_add_plugin_start(const uint pluginId, const ch
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginName != nullptr && pluginName[0] != '\0',);
carla_debug("CarlaEngine::oscSend_control_add_plugin_start(%i, \"%s\")", pluginId, pluginName);

@@ -48,7 +48,7 @@ void CarlaEngine::oscSend_control_add_plugin_end(const uint pluginId) const noex
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_add_plugin_end(%i)", pluginId);

char targetPath[std::strlen(pData->oscData->path)+16];
@@ -62,7 +62,7 @@ void CarlaEngine::oscSend_control_remove_plugin(const uint pluginId) const noexc
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_remove_plugin(%i)", pluginId);

char targetPath[std::strlen(pData->oscData->path)+15];
@@ -76,7 +76,7 @@ void CarlaEngine::oscSend_control_set_plugin_info1(const uint pluginId, const Pl
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(type != PLUGIN_NONE,);
carla_debug("CarlaEngine::oscSend_control_set_plugin_data(%i, %i:%s, %i:%s, %X, " P_INT64 ")", pluginId, type, PluginType2Str(type), category, PluginCategory2Str(category), hints, uniqueId);

@@ -91,7 +91,7 @@ void CarlaEngine::oscSend_control_set_plugin_info2(const uint pluginId, const ch
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(realName != nullptr && realName[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(label != nullptr && label[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(maker != nullptr,);
@@ -109,7 +109,7 @@ void CarlaEngine::oscSend_control_set_audio_count(const uint pluginId, const uin
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_audio_count(%i, %i, %i)", pluginId, ins, outs);

char targetPath[std::strlen(pData->oscData->path)+18];
@@ -123,7 +123,7 @@ void CarlaEngine::oscSend_control_set_midi_count(const uint pluginId, const uint
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_midi_count(%i, %i, %i)", pluginId, ins, outs);

char targetPath[std::strlen(pData->oscData->path)+18];
@@ -137,7 +137,7 @@ void CarlaEngine::oscSend_control_set_parameter_count(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_count(%i, %i, %i)", pluginId, ins, outs);

char targetPath[std::strlen(pData->oscData->path)+18];
@@ -151,7 +151,7 @@ void CarlaEngine::oscSend_control_set_program_count(const uint pluginId, const u
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_program_count(%i, %i)", pluginId, count);

char targetPath[std::strlen(pData->oscData->path)+19];
@@ -165,7 +165,7 @@ void CarlaEngine::oscSend_control_set_midi_program_count(const uint pluginId, co
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_midi_program_count(%i, %i)", pluginId, count);

char targetPath[std::strlen(pData->oscData->path)+24];
@@ -179,7 +179,7 @@ void CarlaEngine::oscSend_control_set_parameter_data(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(unit != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_data(%i, %i, %i:%s, %X, \"%s\", \"%s\")", pluginId, index, type, ParameterType2Str(type), hints, name, unit);
@@ -195,12 +195,12 @@ void CarlaEngine::oscSend_control_set_parameter_ranges1(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(def <= min && def >= max,);
CARLA_SAFE_ASSERT_RETURN(min < max,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT(def >= min && def <= max);
CARLA_SAFE_ASSERT(min < max);
carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges1(%i, %i, %f, %f, %f)", pluginId, index, def, min, max, def);

char targetPath[std::strlen(pData->oscData->path)+23];
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges1");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), def, min, max);
@@ -211,14 +211,14 @@ void CarlaEngine::oscSend_control_set_parameter_ranges2(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(step <= stepSmall && step >= stepLarge,);
CARLA_SAFE_ASSERT_RETURN(stepSmall <= stepLarge,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT(step >= stepSmall && step <= stepLarge);
CARLA_SAFE_ASSERT(stepSmall <= stepLarge);
carla_debug("CarlaEngine::oscSend_control_set_parameter_ranges2(%i, %i, %f, %f, %f)", pluginId, index, step, stepSmall, stepLarge);

char targetPath[std::strlen(pData->oscData->path)+23];
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges");
std::strcat(targetPath, "/set_parameter_ranges2");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), step, stepSmall, stepLarge);
}

@@ -227,7 +227,7 @@ void CarlaEngine::oscSend_control_set_parameter_midi_cc(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(cc >= -1 && cc < MAX_MIDI_CONTROL,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_cc(%i, %i, %i)", pluginId, index, cc);

@@ -242,7 +242,7 @@ void CarlaEngine::oscSend_control_set_parameter_midi_channel(const uint pluginId
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_midi_channel(%i, %i, %i)", pluginId, index, channel);

@@ -257,7 +257,7 @@ void CarlaEngine::oscSend_control_set_parameter_value(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(index != PARAMETER_NULL,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_value(%i, %i:%s, %f)", pluginId, index, (index < 0) ? InternalParameterIndex2Str(static_cast<InternalParameterIndex>(index)) : "(none)", value);

@@ -272,7 +272,7 @@ void CarlaEngine::oscSend_control_set_default_value(const uint pluginId, const u
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_default_value(%i, %i, %f)", pluginId, index, value);

char targetPath[std::strlen(pData->oscData->path)+19];
@@ -286,7 +286,7 @@ void CarlaEngine::oscSend_control_set_current_program(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_current_program(%i, %i)", pluginId, index);

char targetPath[std::strlen(pData->oscData->path)+21];
@@ -300,7 +300,7 @@ void CarlaEngine::oscSend_control_set_current_midi_program(const uint pluginId,
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
carla_debug("CarlaEngine::oscSend_control_set_current_midi_program(%i, %i)", pluginId, index);

char targetPath[std::strlen(pData->oscData->path)+26];
@@ -314,7 +314,7 @@ void CarlaEngine::oscSend_control_set_program_name(const uint pluginId, const ui
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_program_name(%i, %i, \"%s\")", pluginId, index, name);

@@ -329,7 +329,7 @@ void CarlaEngine::oscSend_control_set_midi_program_data(const uint pluginId, con
CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,);
CARLA_SAFE_ASSERT_RETURN(pluginId < pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(name != nullptr,);
carla_debug("CarlaEngine::oscSend_control_set_midi_program_data(%i, %i, %i, %i, \"%s\")", pluginId, index, bank, program, name);



+ 1
- 1
source/backend/plugin/CarlaPluginDSSI.cpp View File

@@ -1246,7 +1246,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount);



+ 1
- 1
source/backend/plugin/CarlaPluginFluidSynth.cpp View File

@@ -951,7 +951,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_midi_program_count(pData->id, count);



+ 1
- 1
source/backend/plugin/CarlaPluginJuce.cpp View File

@@ -590,7 +590,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_program_count(pData->id, newCount);



+ 1
- 1
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -2506,7 +2506,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_midi_program_count(pData->id, newCount);



+ 1
- 1
source/backend/plugin/CarlaPluginLinuxSampler.cpp View File

@@ -720,7 +720,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_program_count(pData->id, count);



+ 1
- 1
source/backend/plugin/CarlaPluginNative.cpp View File

@@ -1221,7 +1221,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_midi_program_count(pData->id, count);



+ 1
- 1
source/backend/plugin/CarlaPluginVST2.cpp View File

@@ -897,7 +897,7 @@ public:

#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names
if (pData->engine->isOscControlRegistered())
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount())
{
pData->engine->oscSend_control_set_program_count(pData->id, newCount);



+ 16
- 8
source/carla_backend.py View File

@@ -20,6 +20,7 @@
# Imports (Global)

from abc import ABCMeta, abstractmethod
from copy import deepcopy
from ctypes import *
from platform import architecture
from sys import platform, maxsize
@@ -2986,13 +2987,13 @@ class CarlaHostPlugin(CarlaHostMeta):
return

info = PluginStoreInfo()
info.pluginInfo = PyCarlaPluginInfo
info.pluginInfo = deepcopy(PyCarlaPluginInfo)
info.pluginRealName = ""
info.internalValues = [0.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0]
info.audioCountInfo = PyCarlaPortCountInfo
info.midiCountInfo = PyCarlaPortCountInfo
info.audioCountInfo = deepcopy(PyCarlaPortCountInfo)
info.midiCountInfo = deepcopy(PyCarlaPortCountInfo)
info.parameterCount = 0
info.parameterCountInfo = PyCarlaPortCountInfo
info.parameterCountInfo = deepcopy(PyCarlaPortCountInfo)
info.parameterInfo = []
info.parameterData = []
info.parameterRanges = []
@@ -3011,6 +3012,9 @@ class CarlaHostPlugin(CarlaHostMeta):
def _set_pluginInfo(self, pluginId, info):
self.fPluginsInfo[pluginId].pluginInfo = info

def _set_pluginInfoUpdate(self, pluginId, info):
self.fPluginsInfo[pluginId].pluginInfo.update(info)

def _set_pluginName(self, pluginId, name):
self.fPluginsInfo[pluginId].pluginInfo['name'] = name

@@ -3039,9 +3043,9 @@ class CarlaHostPlugin(CarlaHostMeta):

# add placeholders
for x in range(count):
self.fPluginsInfo[pluginId].parameterInfo.append(PyCarlaParameterInfo)
self.fPluginsInfo[pluginId].parameterData.append(PyParameterData)
self.fPluginsInfo[pluginId].parameterRanges.append(PyParameterRanges)
self.fPluginsInfo[pluginId].parameterInfo.append(deepcopy(PyCarlaParameterInfo))
self.fPluginsInfo[pluginId].parameterData.append(deepcopy(PyParameterData))
self.fPluginsInfo[pluginId].parameterRanges.append(deepcopy(PyParameterRanges))
self.fPluginsInfo[pluginId].parameterValues.append(0.0)

def _set_programCount(self, pluginId, count):
@@ -3062,7 +3066,7 @@ class CarlaHostPlugin(CarlaHostMeta):

# add placeholders
for x in range(count):
self.fPluginsInfo[pluginId].midiProgramData.append(PyMidiProgramData)
self.fPluginsInfo[pluginId].midiProgramData.append(deepcopy(PyMidiProgramData))

def _set_customDataCount(self, pluginId, count):
self.fPluginsInfo[pluginId].customDataCount = count
@@ -3086,6 +3090,10 @@ class CarlaHostPlugin(CarlaHostMeta):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterRanges[paramIndex] = ranges

def _set_parameterRangesUpdate(self, pluginId, paramIndex, ranges):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterRanges[paramIndex].update(ranges)

def _set_parameterValue(self, pluginId, paramIndex, value):
if pluginId < len(self.fPluginsInfo) and paramIndex < self.fPluginsInfo[pluginId].parameterCount:
self.fPluginsInfo[pluginId].parameterValues[paramIndex] = value


+ 38
- 13
source/carla_host.py View File

@@ -117,7 +117,10 @@ class HostWindow(QMainWindow):
# to be filled with key-value pairs of current settings
self.fSavedSettings = {}

if host.isPlugin:
if host.isControl:
self.fClientName = "Carla-Control"
self.fSessionManagerName = "Control"
elif host.isPlugin:
self.fClientName = "Carla-Plugin"
self.fSessionManagerName = "Plugin"
elif LADISH_APP_NAME:
@@ -150,9 +153,8 @@ class HostWindow(QMainWindow):
# ----------------------------------------------------------------------------------------------------
# Set up GUI (engine stopped)

if self.host.isPlugin:
if self.host.isPlugin or self.host.isControl:
self.ui.act_file_save.setVisible(False)
self.ui.act_file_save_as.setText(self.tr("Export as..."))
self.ui.act_engine_start.setEnabled(False)
self.ui.act_engine_start.setVisible(False)
self.ui.act_engine_stop.setEnabled(False)
@@ -162,6 +164,21 @@ class HostWindow(QMainWindow):
self.ui.menu_Engine.setEnabled(False)
self.ui.menu_Engine.setVisible(False)
self.ui.menu_Engine.menuAction().setVisible(False)

if self.host.isControl:
self.ui.act_file_new.setVisible(False)
self.ui.act_file_open.setVisible(False)
self.ui.act_file_save.setVisible(False)
self.ui.act_file_save_as.setVisible(False)
self.ui.act_plugin_add.setVisible(False)
self.ui.act_plugin_add2.setVisible(False)
self.ui.act_plugin_remove_all.setVisible(False)
self.ui.menu_Plugin.setEnabled(False)
self.ui.menu_Plugin.setVisible(False)
self.ui.menu_Plugin.menuAction().setVisible(False)
else:
self.ui.act_file_save_as.setText(self.tr("Export as..."))

else:
self.ui.act_engine_start.setEnabled(True)

@@ -424,7 +441,7 @@ class HostWindow(QMainWindow):
self.startTimers()

# Start in patchbay tab if using forced patchbay mode
if host.processModeForced and host.processMode == ENGINE_PROCESS_MODE_PATCHBAY:
if host.processModeForced and host.processMode == ENGINE_PROCESS_MODE_PATCHBAY and not host.isControl:
self.ui.tabWidget.setCurrentIndex(1)

# For NSM we wait for the open message
@@ -612,7 +629,7 @@ class HostWindow(QMainWindow):
self.ui.act_canvas_show_internal.blockSignals(True)
self.ui.act_canvas_show_external.blockSignals(True)

if processMode == ENGINE_PROCESS_MODE_PATCHBAY and not self.host.isPlugin:
if processMode == ENGINE_PROCESS_MODE_PATCHBAY and not (self.host.isControl or self.host.isPlugin):
self.ui.act_canvas_show_internal.setChecked(True)
self.ui.act_canvas_show_internal.setVisible(True)
self.ui.act_canvas_show_external.setChecked(False)
@@ -626,7 +643,7 @@ class HostWindow(QMainWindow):
self.ui.act_canvas_show_internal.blockSignals(False)
self.ui.act_canvas_show_external.blockSignals(False)

if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
canSave = (self.fProjectFilename and os.path.exists(self.fProjectFilename)) or not self.fSessionManagerName
self.ui.act_file_save.setEnabled(canSave)
self.ui.act_engine_start.setEnabled(False)
@@ -650,7 +667,7 @@ class HostWindow(QMainWindow):
self.ui.menu_PluginMacros.setEnabled(False)
self.ui.menu_Canvas.setEnabled(False)

if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.ui.act_file_save.setEnabled(False)
self.ui.act_engine_start.setEnabled(True)
self.ui.act_engine_stop.setEnabled(False)
@@ -960,7 +977,7 @@ class HostWindow(QMainWindow):
def slot_canvasRefresh(self):
patchcanvas.clear()

if self.host.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK and self.host.isPlugin:
if self.host.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK and (self.host.isControl or self.host.isPlugin):
return

if self.host.is_engine_running():
@@ -1161,6 +1178,14 @@ class HostWindow(QMainWindow):
# Settings

def setEngineSettings(self):
# ----------------------------------------------------------------------------------------------------
# do nothing if control

if self.host.isControl:
return "Control"

# ----------------------------------------------------------------------------------------------------

settings = QSettings("falkTX", "Carla2")

# ----------------------------------------------------------------------------------------------------
@@ -1250,7 +1275,7 @@ class HostWindow(QMainWindow):

#settings.setValue("SplitterState", self.ui.splitter.saveState())

if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
settings.setValue("ShowTimePanel", self.ui.panelTime.isVisible())

settings.setValue("ShowToolbar", self.ui.toolBar.isEnabled())
@@ -1273,7 +1298,7 @@ class HostWindow(QMainWindow):
if firstTime:
self.restoreGeometry(settings.value("Geometry", ""))

if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.ui.panelTime.restoreGeometry(settings.value("TimePanelGeometry", ""))

showTimePanel = settings.value("ShowTimePanel", True, type=bool)
@@ -1790,13 +1815,13 @@ class HostWindow(QMainWindow):
QMainWindow.showEvent(self, event)

# set our gui as parent for all plugins UIs
if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
winIdStr = "%x" % self.winId()
self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr)

def hideEvent(self, event):
# disable parent
if not self.host.isPlugin:
if not (self.host.isControl or self.host.isPlugin):
self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, "0")

QMainWindow.hideEvent(self, event)
@@ -1892,7 +1917,7 @@ class HostWindow(QMainWindow):
self.killTimers()
self.saveSettings()

if self.host.is_engine_running() and not self.host.isPlugin:
if self.host.is_engine_running() and not (self.host.isControl or self.host.isPlugin):
self.slot_engineStop(True)

QMainWindow.closeEvent(self, event)


Loading…
Cancel
Save