Browse Source

More standalone calls

tags/1.9.4
falkTX 13 years ago
parent
commit
fd234aed62
3 changed files with 188 additions and 253 deletions
  1. +35
    -15
      source/backend/carla_standalone.hpp
  2. +107
    -190
      source/backend/standalone/carla_standalone.cpp
  3. +46
    -48
      source/carla_backend.py

+ 35
- 15
source/backend/carla_standalone.hpp View File

@@ -31,6 +31,7 @@
* @{
*/

typedef CarlaBackend::BinaryType CarlaBinaryType;
typedef CarlaBackend::PluginType CarlaPluginType;
typedef CarlaBackend::PluginCategory CarlaPluginCategory;

@@ -55,6 +56,13 @@ struct CarlaPluginInfo {
maker(nullptr),
copyright(nullptr),
uniqueId(0) {}

~CarlaPluginInfo()
{
std::free((void*)label);
std::free((void*)maker);
std::free((void*)copyright);
}
};

struct CarlaNativePluginInfo {
@@ -108,15 +116,27 @@ struct CarlaParameterInfo {
symbol(nullptr),
unit(nullptr),
scalePointCount(0) {}

~CarlaParameterInfo()
{
std::free((void*)name);
std::free((void*)symbol);
std::free((void*)unit);
}
};

struct CarlaScalePointInfo {
double value;
float value;
const char* label;

CarlaScalePointInfo()
: value(0.0),
: value(0.0f),
label(nullptr) {}

~CarlaScalePointInfo()
{
std::free((void*)label);
}
};

CARLA_EXPORT const char* carla_get_extended_license_text();
@@ -131,20 +151,20 @@ CARLA_EXPORT bool carla_engine_init(const char* driverName, const char* clientNa
CARLA_EXPORT bool carla_engine_close();
CARLA_EXPORT bool carla_is_engine_running();

CARLA_EXPORT bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* name, const char* label, void* extraPtr);
CARLA_EXPORT bool carla_remove_plugin(unsigned int pluginId);

CARLA_EXPORT const CarlaPluginInfo* carla_get_plugin_info(unsigned int pluginId);
CARLA_EXPORT const CarlaPortCountInfo* carla_get_audio_port_count_info(unsigned int pluginId);
CARLA_EXPORT const CarlaPortCountInfo* carla_get_midi_port_count_info(unsigned int pluginId);
CARLA_EXPORT const CarlaPortCountInfo* carla_get_parameter_count_info(unsigned int pluginId);
CARLA_EXPORT const CarlaParameterInfo* carla_get_parameter_info(unsigned int pluginId, uint32_t parameterId);
CARLA_EXPORT const CarlaScalePointInfo* carla_get_parameter_scalepoint_info(unsigned int pluginId, uint32_t parameterId, uint32_t scalePointId);

CARLA_EXPORT const CarlaBackend::ParameterData* carla_get_parameter_data(unsigned int pluginId, uint32_t parameterId);
CARLA_EXPORT const CarlaBackend::ParameterRanges* carla_get_parameter_ranges(unsigned int pluginId, uint32_t parameterId);
CARLA_EXPORT const CarlaBackend::MidiProgramData* carla_get_midi_program_data(unsigned int pluginId, uint32_t midiProgramId);
#if 0
CARLA_EXPORT int add_plugin(BinaryType btype, PluginType ptype, const char* filename, const char* name, const char* label, void* extraPtr);
CARLA_EXPORT bool remove_plugin(unsigned int pluginId);

CARLA_EXPORT const PluginInfo* get_plugin_info(unsigned int pluginId);
CARLA_EXPORT const PortCountInfo* get_audio_port_count_info(unsigned int pluginId);
CARLA_EXPORT const PortCountInfo* get_midi_port_count_info(unsigned int pluginId);
CARLA_EXPORT const PortCountInfo* get_parameter_count_info(unsigned int pluginId);
CARLA_EXPORT const ParameterInfo* get_parameter_info(unsigned short plugin_id, uint32_t parameterId);
CARLA_EXPORT const ScalePointInfo* get_parameter_scalepoint_info(unsigned int pluginId, uint32_t parameterId, uint32_t scalePointId);

CARLA_EXPORT const ParameterData* get_parameter_data(unsigned int pluginId, uint32_t parameterId);
CARLA_EXPORT const ParameterRanges* get_parameter_ranges(unsigned int pluginId, uint32_t parameterId);
CARLA_EXPORT const MidiProgramData* get_midi_program_data(unsigned int pluginId, uint32_t midiProgramId);
CARLA_EXPORT const CustomData* get_custom_data(unsigned int pluginId, uint32_t customDataId);
CARLA_EXPORT const char* get_chunk_data(unsigned int pluginId);



+ 107
- 190
source/backend/standalone/carla_standalone.cpp View File

@@ -16,6 +16,7 @@
*/

#include "carla_standalone.hpp"
#include "carla_backend_utils.hpp"
#include "carla_engine.hpp"
#include "carla_plugin.hpp"
#include "carla_native.h"
@@ -46,12 +47,10 @@ struct CarlaBackendStandalone {
CarlaString lastError;
CarlaString procName;
EngineOptions options;
bool started;

CarlaBackendStandalone()
: callback(nullptr),
engine(nullptr),
started(false) {}
engine(nullptr) {}
} standalone;

// -------------------------------------------------------------------------------------------------------------------
@@ -232,19 +231,15 @@ bool carla_engine_init(const char* driverName, const char* clientName)
if (standalone.procName.isNotEmpty())
standalone.engine->setOption(CarlaBackend::OPTION_PROCESS_NAME, 0, standalone.procName);

standalone.started = standalone.engine->init(clientName);

if (standalone.started)
if (standalone.engine->init(clientName))
{
standalone.lastError = "no error";
}
else
{
delete standalone.engine;
standalone.engine = nullptr;
return true;
}

return standalone.started;
delete standalone.engine;
standalone.engine = nullptr;
return false;
}

bool carla_engine_close()
@@ -263,10 +258,7 @@ bool carla_engine_close()

const bool closed = standalone.engine->close();

standalone.started = false;

// cleanup static data
//get_plugin_info(0);
//get_parameter_info(0, 0);
//get_parameter_scalepoint_info(0, 0, 0);
//get_chunk_data(0);
@@ -287,49 +279,26 @@ bool carla_is_engine_running()
return standalone.engine && standalone.engine->isRunning();
}

#if 0
// -------------------------------------------------------------------------------------------------------------------

short add_plugin(CarlaBackend::BinaryType btype, CarlaBackend::PluginType ptype, const char* filename, const char* const name, const char* label, void* extraStuff)
bool carla_add_plugin(CarlaBackend::BinaryType btype, CarlaBackend::PluginType ptype, const char* filename, const char* const name, const char* label, void* extraStuff)
{
qDebug("CarlaBackendStandalone::add_plugin(%s, %s, \"%s\", \"%s\", \"%s\", %p)", CarlaBackend::BinaryType2Str(btype), CarlaBackend::PluginType2Str(ptype), filename, name, label, extraStuff);
CARLA_ASSERT(standalone.engine);

if (btype != CarlaBackend::BINARY_NATIVE && ! extraStuff)
{
switch (btype)
{
case CarlaBackend::BINARY_NONE:
case CarlaBackend::BINARY_OTHER:
break;
case CarlaBackend::BINARY_POSIX32:
extraStuff = (void*)(const char*)standalone.options.bridge_posix32;
break;
case CarlaBackend::BINARY_POSIX64:
extraStuff = (void*)(const char*)standalone.options.bridge_posix64;
break;
case CarlaBackend::BINARY_WIN32:
extraStuff = (void*)(const char*)standalone.options.bridge_win32;
break;
case CarlaBackend::BINARY_WIN64:
extraStuff = (void*)(const char*)standalone.options.bridge_win64;
break;
}
}
qDebug("carla_add_plugin(%s, %s, \"%s\", \"%s\", \"%s\", %p)", CarlaBackend::BinaryType2Str(btype), CarlaBackend::PluginType2Str(ptype), filename, name, label, extraStuff);
CARLA_ASSERT(standalone.engine != nullptr);

if (standalone.engine && standalone.engine->isRunning())
if (standalone.engine != nullptr && standalone.engine->isRunning())
return standalone.engine->addPlugin(btype, ptype, filename, name, label, extraStuff);

standalone.lastError = "Engine is not started";
return -1;
}

bool remove_plugin(unsigned short pluginId)
bool carla_remove_plugin(unsigned int pluginId)
{
qDebug("CarlaBackendStandalone::remove_plugin(%i)", pluginId);
CARLA_ASSERT(standalone.engine);
qDebug("carla_remove_plugin(%i)", pluginId);
CARLA_ASSERT(standalone.engine != nullptr);

if (standalone.engine)
if (standalone.engine != nullptr && standalone.engine->isRunning())
return standalone.engine->removePlugin(pluginId);

standalone.lastError = "Engine is not started";
@@ -338,12 +307,12 @@ bool remove_plugin(unsigned short pluginId)

// -------------------------------------------------------------------------------------------------------------------

const PluginInfo* get_plugin_info(unsigned short pluginId)
const CarlaPluginInfo* carla_get_plugin_info(unsigned int pluginId)
{
qDebug("CarlaBackendStandalone::get_plugin_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_plugin_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine != nullptr);

static PluginInfo info;
static CarlaPluginInfo info;

// reset
info.type = CarlaBackend::PLUGIN_NONE;
@@ -354,33 +323,28 @@ const PluginInfo* get_plugin_info(unsigned short pluginId)
info.uniqueId = 0;

// cleanup
if (info.label)
if (info.label != nullptr)
{
free((void*)info.label);
std::free((void*)info.label);
info.label = nullptr;
}

if (info.maker)
if (info.maker != nullptr)
{
free((void*)info.maker);
std::free((void*)info.maker);
info.maker = nullptr;
}

if (info.copyright)
if (info.copyright != nullptr)
{
free((void*)info.copyright);
std::free((void*)info.copyright);
info.copyright = nullptr;
}

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

if (! standalone.started)
return nullptr;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
char strBufLabel[STR_MAX] = { 0 };
char strBufMaker[STR_MAX] = { 0 };
@@ -405,28 +369,26 @@ const PluginInfo* get_plugin_info(unsigned short pluginId)
return &info;
}

qCritical("CarlaBackendStandalone::get_plugin_info(%i) - could not find plugin", pluginId);
qCritical("carla_get_plugin_info(%i) - could not find plugin", pluginId);
return &info;
}

const PortCountInfo* get_audio_port_count_info(unsigned short pluginId)
const CarlaPortCountInfo* carla_get_audio_port_count_info(unsigned int pluginId)
{
qDebug("CarlaBackendStandalone::get_audio_port_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_audio_port_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine != nullptr);

static PortCountInfo info;
static CarlaPortCountInfo info;

// reset
info.ins = 0;
info.outs = 0;
info.total = 0;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
info.ins = plugin->audioInCount();
info.outs = plugin->audioOutCount();
@@ -434,28 +396,26 @@ const PortCountInfo* get_audio_port_count_info(unsigned short pluginId)
return &info;
}

qCritical("CarlaBackendStandalone::get_audio_port_count_info(%i) - could not find plugin", pluginId);
qCritical("carla_get_audio_port_count_info(%i) - could not find plugin", pluginId);
return &info;
}

const PortCountInfo* get_midi_port_count_info(unsigned short pluginId)
const CarlaPortCountInfo* carla_get_midi_port_count_info(unsigned int pluginId)
{
qDebug("CarlaBackendStandalone::get_midi_port_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_midi_port_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine != nullptr);

static PortCountInfo info;
static CarlaPortCountInfo info;

// reset
info.ins = 0;
info.outs = 0;
info.total = 0;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
info.ins = plugin->midiInCount();
info.outs = plugin->midiOutCount();
@@ -463,43 +423,41 @@ const PortCountInfo* get_midi_port_count_info(unsigned short pluginId)
return &info;
}

qCritical("CarlaBackendStandalone::get_midi_port_count_info(%i) - could not find plugin", pluginId);
qCritical("carla_get_midi_port_count_info(%i) - could not find plugin", pluginId);
return &info;
}

const PortCountInfo* get_parameter_count_info(unsigned short pluginId)
const CarlaPortCountInfo* carla_get_parameter_count_info(unsigned int pluginId)
{
qDebug("CarlaBackendStandalone::get_parameter_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_parameter_count_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine != nullptr);

static PortCountInfo info;
static CarlaPortCountInfo info;

// reset
info.ins = 0;
info.outs = 0;
info.total = 0;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
plugin->getParameterCountInfo(&info.ins, &info.outs, &info.total);
return &info;
}

qCritical("CarlaBackendStandalone::get_parameter_count_info(%i) - could not find plugin", pluginId);
qCritical("carla_get_parameter_count_info(%i) - could not find plugin", pluginId);
return &info;
}

const ParameterInfo* get_parameter_info(unsigned short pluginId, uint32_t parameter_id)
const CarlaParameterInfo* carla_get_parameter_info(unsigned int pluginId, uint32_t parameterId)
{
qDebug("CarlaBackendStandalone::get_parameter_info(%i, %i)", pluginId, parameter_id);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_parameter_info(%i, %i)", pluginId, parameterId);
CARLA_ASSERT(standalone.engine != nullptr);

static ParameterInfo info;
static CarlaParameterInfo info;

// reset
info.scalePointCount = 0;
@@ -507,68 +465,63 @@ const ParameterInfo* get_parameter_info(unsigned short pluginId, uint32_t parame
// cleanup
if (info.name)
{
free((void*)info.name);
std::free((void*)info.name);
info.name = nullptr;
}

if (info.symbol)
{
free((void*)info.symbol);
std::free((void*)info.symbol);
info.symbol = nullptr;
}

if (info.unit)
{
free((void*)info.unit);
std::free((void*)info.unit);
info.unit = nullptr;
}

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

if (! standalone.started)
return nullptr;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (parameter_id < plugin->parameterCount())
if (parameterId < plugin->parameterCount())
{
char strBufName[STR_MAX] = { 0 };
char strBufSymbol[STR_MAX] = { 0 };
char strBufUnit[STR_MAX] = { 0 };

info.scalePointCount = plugin->parameterScalePointCount(parameter_id);
info.scalePointCount = plugin->parameterScalePointCount(parameterId);

plugin->getParameterName(parameter_id, strBufName);
plugin->getParameterName(parameterId, strBufName);
info.name = strdup(strBufName);

plugin->getParameterSymbol(parameter_id, strBufSymbol);
plugin->getParameterSymbol(parameterId, strBufSymbol);
info.symbol = strdup(strBufSymbol);

plugin->getParameterUnit(parameter_id, strBufUnit);
plugin->getParameterUnit(parameterId, strBufUnit);
info.unit = strdup(strBufUnit);
}
else
qCritical("CarlaBackendStandalone::get_parameter_info(%i, %i) - parameter_id out of bounds", pluginId, parameter_id);
qCritical("carla_get_parameter_info(%i, %i) - parameterId out of bounds", pluginId, parameterId);

return &info;
}

qCritical("CarlaBackendStandalone::get_parameter_info(%i, %i) - could not find plugin", pluginId, parameter_id);
qCritical("carla_get_parameter_info(%i, %i) - could not find plugin", pluginId, parameterId);
return &info;
}

const ScalePointInfo* get_parameter_scalepoint_info(unsigned short pluginId, uint32_t parameter_id, uint32_t scalepoint_id)
const CarlaScalePointInfo* carla_get_parameter_scalepoint_info(unsigned int pluginId, uint32_t parameterId, uint32_t scalePointId)
{
qDebug("CarlaBackendStandalone::get_parameter_scalepoint_info(%i, %i, %i)", pluginId, parameter_id, scalepoint_id);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_parameter_scalepoint_info(%i, %i, %i)", pluginId, parameterId, scalePointId);
CARLA_ASSERT(standalone.engine != nullptr);

static ScalePointInfo info;
static CarlaScalePointInfo info;

// reset
info.value = 0.0;
info.value = 0.0f;

// cleanup
if (info.label)
@@ -577,143 +530,107 @@ const ScalePointInfo* get_parameter_scalepoint_info(unsigned short pluginId, uin
info.label = nullptr;
}

if (! standalone.engine)
if (standalone.engine == nullptr)
return &info;

if (! standalone.started)
return nullptr;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (parameter_id < plugin->parameterCount())
if (parameterId < plugin->parameterCount())
{
if (scalepoint_id < plugin->parameterScalePointCount(parameter_id))
if (scalePointId < plugin->parameterScalePointCount(parameterId))
{
char strBufLabel[STR_MAX] = { 0 };

info.value = plugin->getParameterScalePointValue(parameter_id, scalepoint_id);
info.value = plugin->getParameterScalePointValue(parameterId, scalePointId);

plugin->getParameterScalePointLabel(parameter_id, scalepoint_id, strBufLabel);
plugin->getParameterScalePointLabel(parameterId, scalePointId, strBufLabel);
info.label = strdup(strBufLabel);
}
else
qCritical("CarlaBackendStandalone::get_parameter_scalepoint_info(%i, %i, %i) - scalepoint_id out of bounds", pluginId, parameter_id, scalepoint_id);
qCritical("carla_get_parameter_scalepoint_info(%i, %i, %i) - scalePointId out of bounds", pluginId, parameterId, scalePointId);
}
else
qCritical("CarlaBackendStandalone::get_parameter_scalepoint_info(%i, %i, %i) - parameter_id out of bounds", pluginId, parameter_id, parameter_id);

return &info;
}

qCritical("CarlaBackendStandalone::get_parameter_scalepoint_info(%i, %i, %i) - could not find plugin", pluginId, parameter_id, scalepoint_id);
return &info;
}

const GuiInfo* get_gui_info(unsigned short pluginId)
{
qDebug("CarlaBackendStandalone::get_gui_info(%i)", pluginId);
CARLA_ASSERT(standalone.engine);

static GuiInfo info;

// reset
info.type = CarlaBackend::GUI_NONE;
info.resizable = false;

if (! standalone.engine)
return &info;
qCritical("carla_get_parameter_scalepoint_info(%i, %i, %i) - parameterId out of bounds", pluginId, parameterId, scalePointId);

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
{
plugin->getGuiInfo(&info.type, &info.resizable);
return &info;
}

qCritical("CarlaBackendStandalone::get_gui_info(%i) - could not find plugin", pluginId);
qCritical("carla_get_parameter_scalepoint_info(%i, %i, %i) - could not find plugin", pluginId, parameterId, scalePointId);
return &info;
}

// -------------------------------------------------------------------------------------------------------------------

const CarlaBackend::ParameterData* get_parameter_data(unsigned short pluginId, uint32_t parameter_id)
const CarlaBackend::ParameterData* carla_get_parameter_data(unsigned int pluginId, uint32_t parameterId)
{
qDebug("CarlaBackendStandalone::get_parameter_data(%i, %i)", pluginId, parameter_id);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_parameter_data(%i, %i)", pluginId, parameterId);
CARLA_ASSERT(standalone.engine != nullptr);

static CarlaBackend::ParameterData data;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &data;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (parameter_id < plugin->parameterCount())
return plugin->parameterData(parameter_id);
if (parameterId < plugin->parameterCount())
return &plugin->parameterData(parameterId);

qCritical("CarlaBackendStandalone::get_parameter_data(%i, %i) - parameter_id out of bounds", pluginId, parameter_id);
qCritical("carla_get_parameter_data(%i, %i) - parameterId out of bounds", pluginId, parameterId);
return &data;
}

qCritical("CarlaBackendStandalone::get_parameter_data(%i, %i) - could not find plugin", pluginId, parameter_id);
qCritical("carla_get_parameter_data(%i, %i) - could not find plugin", pluginId, parameterId);
return &data;
}

const CarlaBackend::ParameterRanges* get_parameter_ranges(unsigned short pluginId, uint32_t parameter_id)
const CarlaBackend::ParameterRanges* carla_get_parameter_ranges(unsigned int pluginId, uint32_t parameterId)
{
qDebug("CarlaBackendStandalone::get_parameter_ranges(%i, %i)", pluginId, parameter_id);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_parameter_ranges(%i, %i)", pluginId, parameterId);
CARLA_ASSERT(standalone.engine != nullptr);

static CarlaBackend::ParameterRanges ranges;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &ranges;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (parameter_id < plugin->parameterCount())
return plugin->parameterRanges(parameter_id);
if (parameterId < plugin->parameterCount())
return &plugin->parameterRanges(parameterId);

qCritical("CarlaBackendStandalone::get_parameter_ranges(%i, %i) - parameter_id out of bounds", pluginId, parameter_id);
qCritical("carla_get_parameter_ranges(%i, %i) - parameterId out of bounds", pluginId, parameterId);
return &ranges;
}

qCritical("CarlaBackendStandalone::get_parameter_ranges(%i, %i) - could not find plugin", pluginId, parameter_id);
qCritical("carla_get_parameter_ranges(%i, %i) - could not find plugin", pluginId, parameterId);
return &ranges;
}

const CarlaBackend::MidiProgramData* get_midi_program_data(unsigned short pluginId, uint32_t midi_program_id)
const CarlaBackend::MidiProgramData* carla_get_midi_program_data(unsigned int pluginId, uint32_t midiProgramId)
{
qDebug("CarlaBackendStandalone::get_midi_program_data(%i, %i)", pluginId, midi_program_id);
CARLA_ASSERT(standalone.engine);
qDebug("carla_get_midi_program_data(%i, %i)", pluginId, midiProgramId);
CARLA_ASSERT(standalone.engine != nullptr);

static CarlaBackend::MidiProgramData data;

if (! standalone.engine)
if (standalone.engine == nullptr)
return &data;

CarlaBackend::CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId);

if (plugin)
if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (midi_program_id < plugin->midiProgramCount())
return plugin->midiProgramData(midi_program_id);
if (midiProgramId < plugin->midiProgramCount())
return &plugin->midiProgramData(midiProgramId);

qCritical("CarlaBackendStandalone::get_midi_program_data(%i, %i) - midi_program_id out of bounds", pluginId, midi_program_id);
qCritical("carla_get_midi_program_data(%i, %i) - midiProgramId out of bounds", pluginId, midiProgramId);
return &data;
}

qCritical("CarlaBackendStandalone::get_midi_program_data(%i, %i) - could not find plugin", pluginId, midi_program_id);
qCritical("carla_get_midi_program_data(%i, %i) - could not find plugin", pluginId, midiProgramId);
return &data;
}

#if 0
const CarlaBackend::CustomData* get_custom_data(unsigned short pluginId, uint32_t custom_data_id)
{
qDebug("CarlaBackendStandalone::get_custom_data(%i, %i)", pluginId, custom_data_id);


+ 46
- 48
source/carla_backend.py View File

@@ -662,7 +662,7 @@ class CarlaParameterInfo(Structure):

class CarlaScalePointInfo(Structure):
_fields_ = [
("value", c_double),
("value", c_float),
("label", c_char_p)
]

@@ -708,41 +708,38 @@ class Host(object):
self.lib.carla_is_engine_running.argtypes = None
self.lib.carla_is_engine_running.restype = c_bool

#self.lib.add_plugin.argtypes = [c_enum, c_enum, c_char_p, c_char_p, c_char_p, c_void_p]
#self.lib.add_plugin.restype = c_short
self.lib.carla_add_plugin.argtypes = [c_enum, c_enum, c_char_p, c_char_p, c_char_p, c_void_p]
self.lib.carla_add_plugin.restype = c_bool

#self.lib.remove_plugin.argtypes = [c_ushort]
#self.lib.remove_plugin.restype = c_bool
self.lib.carla_remove_plugin.argtypes = [c_uint]
self.lib.carla_remove_plugin.restype = c_bool

#self.lib.get_plugin_info.argtypes = [c_ushort]
#self.lib.get_plugin_info.restype = POINTER(PluginInfo)
self.lib.carla_get_plugin_info.argtypes = [c_uint]
self.lib.carla_get_plugin_info.restype = POINTER(CarlaPluginInfo)

#self.lib.get_audio_port_count_info.argtypes = [c_ushort]
#self.lib.get_audio_port_count_info.restype = POINTER(PortCountInfo)
self.lib.carla_get_audio_port_count_info.argtypes = [c_uint]
self.lib.carla_get_audio_port_count_info.restype = POINTER(CarlaPortCountInfo)

#self.lib.get_midi_port_count_info.argtypes = [c_ushort]
#self.lib.get_midi_port_count_info.restype = POINTER(PortCountInfo)
self.lib.carla_get_midi_port_count_info.argtypes = [c_uint]
self.lib.carla_get_midi_port_count_info.restype = POINTER(CarlaPortCountInfo)

#self.lib.get_parameter_count_info.argtypes = [c_ushort]
#self.lib.get_parameter_count_info.restype = POINTER(PortCountInfo)
self.lib.carla_get_parameter_count_info.argtypes = [c_uint]
self.lib.carla_get_parameter_count_info.restype = POINTER(CarlaPortCountInfo)

#self.lib.get_parameter_info.argtypes = [c_ushort, c_uint32]
#self.lib.get_parameter_info.restype = POINTER(ParameterInfo)
self.lib.carla_get_parameter_info.argtypes = [c_uint, c_uint32]
self.lib.carla_get_parameter_info.restype = POINTER(CarlaParameterInfo)

#self.lib.get_parameter_scalepoint_info.argtypes = [c_ushort, c_uint32, c_uint32]
#self.lib.get_parameter_scalepoint_info.restype = POINTER(ScalePointInfo)
self.lib.carla_get_parameter_scalepoint_info.argtypes = [c_uint, c_uint32, c_uint32]
self.lib.carla_get_parameter_scalepoint_info.restype = POINTER(CarlaScalePointInfo)

#self.lib.get_gui_info.argtypes = [c_ushort]
#self.lib.get_gui_info.restype = POINTER(GuiInfo)
self.lib.carla_get_parameter_data.argtypes = [c_uint, c_uint32]
self.lib.carla_get_parameter_data.restype = POINTER(ParameterData)

#self.lib.get_parameter_data.argtypes = [c_ushort, c_uint32]
#self.lib.get_parameter_data.restype = POINTER(ParameterData)
self.lib.carla_get_parameter_ranges.argtypes = [c_uint, c_uint32]
self.lib.carla_get_parameter_ranges.restype = POINTER(ParameterRanges)

#self.lib.get_parameter_ranges.argtypes = [c_ushort, c_uint32]
#self.lib.get_parameter_ranges.restype = POINTER(ParameterRanges)

#self.lib.get_midi_program_data.argtypes = [c_ushort, c_uint32]
#self.lib.get_midi_program_data.restype = POINTER(MidiProgramData)
self.lib.carla_get_midi_program_data.argtypes = [c_uint, c_uint32]
self.lib.carla_get_midi_program_data.restype = POINTER(MidiProgramData)

#self.lib.get_custom_data.argtypes = [c_ushort, c_uint32]
#self.lib.get_custom_data.restype = POINTER(CustomData)
@@ -894,38 +891,39 @@ class Host(object):
def is_engine_running(self):
return self.lib.carla_is_engine_running()

#def add_plugin(self, btype, ptype, filename, name, label, extraStuff):
#return self.lib.add_plugin(btype, ptype, filename.encode("utf-8"), name.encode("utf-8") if name else c_nullptr, label.encode("utf-8"), cast(extraStuff, c_void_p))
def add_plugin(self, btype, ptype, filename, name, label, extraStuff):
cname = name.encode("utf-8") if name else c_nullptr
return self.lib.carla_add_plugin(btype, ptype, filename.encode("utf-8"), cname, label.encode("utf-8"), cast(extraStuff, c_void_p))

#def remove_plugin(self, pluginId):
#return self.lib.remove_plugin(pluginId)
def remove_plugin(self, pluginId):
return self.lib.carla_remove_plugin(pluginId)

#def get_plugin_info(self, pluginId):
#return structToDict(self.lib.get_plugin_info(pluginId).contents)
def get_plugin_info(self, pluginId):
return structToDict(self.lib.carla_get_plugin_info(pluginId).contents)

#def get_audio_port_count_info(self, pluginId):
#return structToDict(self.lib.get_audio_port_count_info(pluginId).contents)
def get_audio_port_count_info(self, pluginId):
return structToDict(self.lib.carla_get_audio_port_count_info(pluginId).contents)

#def get_midi_port_count_info(self, pluginId):
#return structToDict(self.lib.get_midi_port_count_info(pluginId).contents)
def get_midi_port_count_info(self, pluginId):
return structToDict(self.lib.carla_get_midi_port_count_info(pluginId).contents)

#def get_parameter_count_info(self, pluginId):
#return structToDict(self.lib.get_parameter_count_info(pluginId).contents)
def get_parameter_count_info(self, pluginId):
return structToDict(self.lib.carla_get_parameter_count_info(pluginId).contents)

#def get_parameter_info(self, pluginId, parameterId):
#return structToDict(self.lib.get_parameter_info(pluginId, parameterId).contents)
def get_parameter_info(self, pluginId, parameterId):
return structToDict(self.lib.carla_get_parameter_info(pluginId, parameterId).contents)

#def get_parameter_scalepoint_info(self, pluginId, parameterId, scalePointId):
#return structToDict(self.lib.get_parameter_scalepoint_info(pluginId, parameterId, scalePointId).contents)
def get_parameter_scalepoint_info(self, pluginId, parameterId, scalePointId):
return structToDict(self.lib.carla_get_parameter_scalepoint_info(pluginId, parameterId, scalePointId).contents)

#def get_parameter_data(self, pluginId, parameterId):
#return structToDict(self.lib.get_parameter_data(pluginId, parameterId).contents)
def get_parameter_data(self, pluginId, parameterId):
return structToDict(self.lib.carla_get_parameter_data(pluginId, parameterId).contents)

#def get_parameter_ranges(self, pluginId, parameterId):
#return structToDict(self.lib.get_parameter_ranges(pluginId, parameterId).contents)
def get_parameter_ranges(self, pluginId, parameterId):
return structToDict(self.lib.carla_get_parameter_ranges(pluginId, parameterId).contents)

#def get_midi_program_data(self, pluginId, midiProgramId):
#return structToDict(self.lib.get_midi_program_data(pluginId, midiProgramId).contents)
def get_midi_program_data(self, pluginId, midiProgramId):
return structToDict(self.lib.carla_get_midi_program_data(pluginId, midiProgramId).contents)

#def get_custom_data(self, pluginId, customDataId):
#return structToDict(self.lib.get_custom_data(pluginId, customDataId).contents)


Loading…
Cancel
Save