Browse Source

Misc updates

tags/v0.9.0
falkTX 13 years ago
parent
commit
718f85ce3f
17 changed files with 279 additions and 72 deletions
  1. +4
    -3
      Makefile
  2. +160
    -8
      src/carla-discovery/carla-discovery.cpp
  3. +4
    -1
      src/carla-discovery/qtcreator/carla-discovery.pro
  4. +6
    -4
      src/carla-includes/carla_includes.h
  5. +4
    -4
      src/carla/carla_backend.cpp
  6. +10
    -8
      src/carla/carla_backend.h
  7. +5
    -6
      src/carla/carla_jack.cpp
  8. +0
    -2
      src/carla/carla_jack.h
  9. +2
    -0
      src/carla/carla_midi.h
  10. +1
    -1
      src/carla/dssi.cpp
  11. +1
    -1
      src/carla/ladspa.cpp
  12. +42
    -1
      src/carla/lv2.cpp
  13. +4
    -1
      src/carla/qtcreator/carla-backend.pro
  14. +14
    -14
      src/carla/sf2.cpp
  15. +4
    -4
      src/carla/vst.cpp
  16. +13
    -9
      src/carla_backend.py
  17. +5
    -5
      src/lv2_rdf.py

+ 4
- 3
Makefile View File

@@ -26,16 +26,17 @@ claudia: src/ui_claudia.py \
src/ui_claudia_runcustom.py
# src/ui_claudia_addnew.py src/ui_claudia_addnew_klaudia.py

carla: carla_backend carla_bridges carla_discovery carla_gui
carla: carla_backend carla_bridge_ui carla_discovery carla_gui

carla_backend:
$(MAKE) -C src/carla-lilv
$(MAKE) -C src/carla

carla_bridges:
# $(MAKE) native$(_arch_n) -C src/carla-bridges
carla_bridge_ui:
$(MAKE) -C src/carla-bridge-ui

carla_discovery:
$(MAKE) -C src/carla-lilv
# $(MAKE) native$(_arch_n) -C src/carla-discovery

carla_gui: src/ui_carla.py src/ui_carla_control.py \


+ 160
- 8
src/carla-discovery/carla-discovery.cpp View File

@@ -42,6 +42,12 @@
#include "ladspa/ladspa.h"
#include "dssi/dssi.h"

#include "lv2/atom.h"
#include "lv2/event.h"
#include "lv2/midi.h"
#include "lilv/lilvmm.hpp"
#define LV2_MIDI_LL__MidiPort "http://ll-plugins.nongnu.org/lv2/ext/MidiPort"

#define VST_FORCE_DEPRECATED 0
#include "aeffectx.h"

@@ -287,8 +293,6 @@ intptr_t VstHostCallback(AEffect* effect, int32_t opcode, int32_t index, intptr_
// ------------------------------ Plugin Check ------------------------------
void do_ladspa_check(void* lib_handle)
{
LADSPA_Handle handle;
const LADSPA_Descriptor* descriptor;
LADSPA_Descriptor_Function descfn = (LADSPA_Descriptor_Function)lib_symbol(lib_handle, "ladspa_descriptor");

if (descfn == nullptr)
@@ -298,9 +302,11 @@ void do_ladspa_check(void* lib_handle)
}

unsigned long i = 0;
const LADSPA_Descriptor* descriptor;

while ((descriptor = descfn(i++)))
{
handle = descriptor->instantiate(descriptor, sampleRate);
LADSPA_Handle handle = descriptor->instantiate(descriptor, sampleRate);

if (handle)
{
@@ -503,9 +509,6 @@ void do_ladspa_check(void* lib_handle)

void do_dssi_check(void* lib_handle)
{
LADSPA_Handle handle;
const LADSPA_Descriptor* ldescriptor;
const DSSI_Descriptor* descriptor;
DSSI_Descriptor_Function descfn = (DSSI_Descriptor_Function)lib_symbol(lib_handle, "dssi_descriptor");

if (descfn == nullptr)
@@ -515,10 +518,12 @@ void do_dssi_check(void* lib_handle)
}

unsigned long i = 0;
const DSSI_Descriptor* descriptor;

while ((descriptor = descfn(i++)))
{
ldescriptor = descriptor->LADSPA_Plugin;
handle = ldescriptor->instantiate(ldescriptor, sampleRate);
const LADSPA_Descriptor* ldescriptor = descriptor->LADSPA_Plugin;
LADSPA_Handle handle = ldescriptor->instantiate(ldescriptor, sampleRate);

if (handle)
{
@@ -758,6 +763,145 @@ void do_dssi_check(void* lib_handle)
}
}

void do_lv2_check(const char* bundle)
{
std::string sbundle;
sbundle += "file://";
sbundle += bundle;

Lilv::World World;
Lilv::Node Bundle(lilv_new_uri(World.me, sbundle.c_str()));
World.load_bundle(Bundle);

Lilv::Node AtomBufferTypes = Lilv::Node(lilv_new_uri(World.me, LV2_ATOM__bufferType));
Lilv::Node EventTypeMidi = Lilv::Node(lilv_new_uri(World.me, LV2_MIDI__MidiEvent));

Lilv::Node PortTypeInput = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__InputPort));
Lilv::Node PortTypeOutput = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__OutputPort));
Lilv::Node PortTypeAudio = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__AudioPort));
Lilv::Node PortTypeControl = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__ControlPort));
Lilv::Node PortTypeAtom = Lilv::Node(lilv_new_uri(World.me, LV2_ATOM__AtomPort));
Lilv::Node PortTypeEvent = Lilv::Node(lilv_new_uri(World.me, LV2_EVENT__EventPort));
Lilv::Node PortTypeMidiLL = Lilv::Node(lilv_new_uri(World.me, LV2_MIDI_LL__MidiPort));

Lilv::Node PortPropertyLatency = Lilv::Node(lilv_new_uri(World.me, LV2_CORE__latency));

const Lilv::Plugins Plugins = World.get_all_plugins();

LILV_FOREACH(plugins, i, Plugins)
{
Lilv::Plugin p(lilv_plugins_get(Plugins, i));

//Lilv::Nodes requiredFeatures(p.get_required_features());
// check

const char* filename = lilv_uri_to_path(p.get_library_uri().as_string());

// test if DLL is loadable
void* lib_handle = lib_open(filename);

if (lib_handle == nullptr)
{
DISCOVERY_OUT("error", lib_error(filename));
continue;
}

lib_close(lib_handle);

int hints = 0;
PluginCategory category = PLUGIN_CATEGORY_NONE;

int audio_ins = 0;
int audio_outs = 0;
int audio_total = 0;
int midi_ins = 0;
int midi_outs = 0;
int midi_total = 0;
int parameters_ins = 0;
int parameters_outs = 0;
int parameters_total = 0;
int programs_total = 0;

for (unsigned j=0; j < p.get_num_ports(); j++)
{
Lilv::Port Port = p.get_port_by_index(j);

if (Port.is_a(PortTypeAudio))
{
if (Port.is_a(PortTypeInput))
audio_ins += 1;
else if (Port.is_a(PortTypeOutput))
audio_ins += 1;
audio_total += 1;
}
else if (Port.is_a(PortTypeControl))
{
if (Port.is_a(PortTypeInput))
parameters_ins += 1;
else if (Port.is_a(PortTypeOutput))
{
if (Port.has_property(PortPropertyLatency) == false)
parameters_ins += 1;
}
parameters_total += 1;
}
else if (Port.is_a(PortTypeAtom))
{
Lilv::Nodes bufferTypes(Port.get_value(AtomBufferTypes));
if (bufferTypes.contains(EventTypeMidi))
{
if (Port.is_a(PortTypeInput))
midi_ins += 1;
else if (Port.is_a(PortTypeOutput))
midi_ins += 1;
midi_total += 1;
}
}
else if (Port.is_a(PortTypeEvent))
{
if (Port.supports_event(EventTypeMidi))
{
if (Port.is_a(PortTypeInput))
midi_ins += 1;
else if (Port.is_a(PortTypeOutput))
midi_ins += 1;
midi_total += 1;
}
}
else if (Port.is_a(PortTypeMidiLL))
{
if (Port.is_a(PortTypeInput))
midi_ins += 1;
else if (Port.is_a(PortTypeOutput))
midi_ins += 1;
midi_total += 1;
}
}

DISCOVERY_OUT("init", "-----------");
DISCOVERY_OUT("name", p.get_name().as_string());
DISCOVERY_OUT("label", p.get_uri().as_string());
DISCOVERY_OUT("maker", p.get_author_name().as_string());
//DISCOVERY_OUT("copyright", ldescriptor->Copyright);
//DISCOVERY_OUT("unique_id", ldescriptor->UniqueID);
DISCOVERY_OUT("hints", hints);
DISCOVERY_OUT("category", category);
DISCOVERY_OUT("audio.ins", audio_ins);
DISCOVERY_OUT("audio.outs", audio_outs);
DISCOVERY_OUT("audio.total", audio_total);
DISCOVERY_OUT("midi.ins", midi_ins);
DISCOVERY_OUT("midi.outs", midi_outs);
DISCOVERY_OUT("midi.total", midi_total);
DISCOVERY_OUT("parameters.ins", parameters_ins);
DISCOVERY_OUT("parameters.outs", parameters_outs);
DISCOVERY_OUT("parameters.total", parameters_total);
DISCOVERY_OUT("programs.total", programs_total);

DISCOVERY_OUT("build", BINARY_TYPE);
DISCOVERY_OUT("end", "------------");
}
}

void do_vst_check(void* lib_handle)
{
VST_Function vstfn = (VST_Function)lib_symbol(lib_handle, "VSTPluginMain");
@@ -1072,6 +1216,11 @@ int main(int argc, char* argv[])
open_lib = true;
type = PLUGIN_DSSI;
}
else if (strcmp(type_str, "LV2") == 0)
{
open_lib = false;
type = PLUGIN_LV2;
}
else if (strcmp(type_str, "VST") == 0)
{
open_lib = true;
@@ -1110,6 +1259,9 @@ int main(int argc, char* argv[])
case PLUGIN_DSSI:
do_dssi_check(handle);
break;
case PLUGIN_LV2:
do_lv2_check(filename);
break;
case PLUGIN_VST:
do_vst_check(handle);
break;


+ 4
- 1
src/carla-discovery/qtcreator/carla-discovery.pro View File

@@ -8,6 +8,9 @@ VERSION = 0.5.0
SOURCES = \
../carla-discovery.cpp

HEADERS = \
../../carla-includes/carla_includes.h

INCLUDEPATH = .. \
../../carla-includes \
../../carla-includes/vestige
@@ -16,4 +19,4 @@ TARGET = carla-discovery-qtcreator

DEFINES = VESTIGE_HEADER BUILD_UNIX64

LIBS += -ldl
LIBS += ../../carla-lilv/carla_lilv.a -ldl

+ 6
- 4
src/carla-includes/carla_includes.h View File

@@ -53,11 +53,13 @@

// needed for qDebug/Warning/Critical sections
#if __WORDSIZE == 64
# define P_INTPTR "%li"
# define P_SIZE "%lu"
# define P_INTPTR "%li"
# define P_UINTPTR "%llu"
# define P_SIZE "%lu"
#else
# define P_INTPTR "%i"
# define P_SIZE "%u"
# define P_INTPTR "%i"
# define P_UINTPTR "%lu"
# define P_SIZE "%u"
#endif

// set native binary type


+ 4
- 4
src/carla/carla_backend.cpp View File

@@ -435,7 +435,7 @@ ParameterData* get_parameter_data(unsigned short plugin_id, uint32_t parameter_i
{
qDebug("get_parameter_data(%i, %i)", plugin_id, parameter_id);

static ParameterData data = { PARAMETER_UNKNOWN, -1, -1, 0, 0, -1 };
static ParameterData data = { PARAMETER_UNKNOWN, /*-1,*/ -1, 0, 0, -1 };

for (unsigned short i=0; i<MAX_PLUGINS; i++)
{
@@ -1024,9 +1024,9 @@ void set_chunk_data(unsigned short plugin_id, const char* chunk_data)
qCritical("set_chunk_data(%i, %s) - could not find plugin", plugin_id, chunk_data);
}

void set_gui_data(unsigned short plugin_id, int data, intptr_t gui_addr)
void set_gui_data(unsigned short plugin_id, int data, quintptr gui_addr)
{
qDebug("set_gui_data(%i, %i, " P_INTPTR ")", plugin_id, data, gui_addr);
qDebug("set_gui_data(%i, %i, " P_UINTPTR ")", plugin_id, data, gui_addr);

for (unsigned short i=0; i<MAX_PLUGINS; i++)
{
@@ -1042,7 +1042,7 @@ void set_gui_data(unsigned short plugin_id, int data, intptr_t gui_addr)
}
}

qCritical("set_gui_data(%i, %i, " P_INTPTR ") - could not find plugin", plugin_id, data, gui_addr);
qCritical("set_gui_data(%i, %i, " P_UINTPTR ") - could not find plugin", plugin_id, data, gui_addr);
}

void show_gui(unsigned short plugin_id, bool yesno)


+ 10
- 8
src/carla/carla_backend.h View File

@@ -32,19 +32,22 @@ const unsigned int MAX_PARAMETERS = 200;
const unsigned int MAX_MIDI_EVENTS = 512;

// plugin hints
const unsigned int PLUGIN_HAS_GUI = 0x01;
const unsigned int PLUGIN_IS_BRIDGE = 0x02;
const unsigned int PLUGIN_IS_SYNTH = 0x04;
const unsigned int PLUGIN_IS_BRIDGE = 0x01;
const unsigned int PLUGIN_IS_SYNTH = 0x02;
const unsigned int PLUGIN_HAS_GUI = 0x04;
const unsigned int PLUGIN_USES_CHUNKS = 0x08;
const unsigned int PLUGIN_CAN_DRYWET = 0x10;
const unsigned int PLUGIN_CAN_VOLUME = 0x20;
const unsigned int PLUGIN_CAN_BALANCE = 0x40;

// parameter hints
const unsigned int PARAMETER_IS_ENABLED = 0x01;
const unsigned int PARAMETER_IS_AUTOMABLE = 0x02;
const unsigned int PARAMETER_USES_SCALEPOINTS = 0x04;
const unsigned int PARAMETER_USES_SAMPLERATE = 0x08;
const unsigned int PARAMETER_IS_BOOLEAN = 0x01;
const unsigned int PARAMETER_IS_INTEGER = 0x02;
const unsigned int PARAMETER_IS_LOGARITHMIC = 0x04;
const unsigned int PARAMETER_IS_ENABLED = 0x08;
const unsigned int PARAMETER_IS_AUTOMABLE = 0x10;
const unsigned int PARAMETER_USES_SCALEPOINTS = 0x20;
const unsigned int PARAMETER_USES_SAMPLERATE = 0x40;

enum BinaryType {
BINARY_NONE = 0,
@@ -140,7 +143,6 @@ enum CallbackType {

struct ParameterData {
ParameterType type;
qint32 index;
qint32 rindex;
qint32 hints;
quint8 midi_channel;


+ 5
- 6
src/carla/carla_jack.cpp View File

@@ -35,7 +35,6 @@ bool carla_is_engine_running()

const char* get_host_client_name()
{
//qDebug("get_host_client_name()");
return carla_client_name;
}

@@ -104,7 +103,7 @@ int carla_jack_process_callback(jack_nframes_t nframes, void* arg)
return 0;
}
#else
Q_UNUSED(arg);
Q_UNUSED(arg);
#endif

#ifdef BUILD_BRIDGE
@@ -137,7 +136,6 @@ void carla_jack_shutdown_callback(void*)

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

#ifndef BUILD_BRIDGE
bool carla_jack_init(const char* client_name)
{
carla_jack_client = jack_client_open(client_name, JackNullOption, nullptr);
@@ -147,6 +145,7 @@ bool carla_jack_init(const char* client_name)
carla_buffer_size = jack_get_buffer_size(carla_jack_client);
carla_sample_rate = jack_get_sample_rate(carla_jack_client);

#ifndef BUILD_BRIDGE
jack_set_buffer_size_callback(carla_jack_client, carla_jack_bufsize_callback, nullptr);
jack_set_sample_rate_callback(carla_jack_client, carla_jack_srate_callback, nullptr);
jack_set_process_callback(carla_jack_client, carla_jack_process_callback, nullptr);
@@ -172,6 +171,7 @@ bool carla_jack_init(const char* client_name)
set_last_error("Failed to activate the JACK client");
carla_jack_client = nullptr;
}
#endif
}
else
{
@@ -189,6 +189,7 @@ bool carla_jack_close()

if (jack_deactivate(carla_jack_client) == 0)
{
#ifndef BUILD_BRIDGE
if (jack_client_close(carla_jack_client) == 0)
{
carla_jack_client = nullptr;
@@ -196,6 +197,7 @@ bool carla_jack_close()
}
else
set_last_error("Failed to close the JACK client");
#endif
}
else
set_last_error("Failed to deactivate the JACK client");
@@ -203,7 +205,6 @@ bool carla_jack_close()
carla_jack_client = nullptr;
return false;
}
#endif

bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client)
{
@@ -220,7 +221,6 @@ bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client)
if (*client)
{
#ifdef BUILD_BRIDGE
qDebug("HERE 001");
carla_buffer_size = jack_get_buffer_size(*client);
carla_sample_rate = jack_get_sample_rate(*client);

@@ -231,7 +231,6 @@ bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client)
#else
jack_set_process_callback(*client, carla_jack_process_callback, plugin);
#endif
//if (jack_activate(*client) == 0)
return true;
}



+ 0
- 2
src/carla/carla_jack.h View File

@@ -30,10 +30,8 @@ int carla_jack_srate_callback(jack_nframes_t new_sample_rate, void* arg);
int carla_jack_process_callback(jack_nframes_t nframes, void* arg);
void carla_jack_shutdown_callback(void* arg);

#ifndef BUILD_BRIDGE
bool carla_jack_init(const char* client_name);
bool carla_jack_close();
#endif
bool carla_jack_register_plugin(CarlaPlugin* plugin, jack_client_t** client);

#endif // CARLA_JACK_H

+ 2
- 0
src/carla/carla_midi.h View File

@@ -18,6 +18,8 @@
#ifndef CARLA_MIDI_H
#define CARLA_MIDI_H

// TODO - complete this header

#define MAX_MIDI_CHANNELS 16

// MIDI Messages List


+ 1
- 1
src/carla/dssi.cpp View File

@@ -342,7 +342,7 @@ public:
else if (LADSPA_IS_PORT_CONTROL(PortType))
{
j = param.count++;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = i;
param.data[j].hints = 0;
param.data[j].midi_channel = 0;


+ 1
- 1
src/carla/ladspa.cpp View File

@@ -365,7 +365,7 @@ public:
else if (LADSPA_IS_PORT_CONTROL(PortType))
{
j = param.count++;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = i;
param.data[j].hints = 0;
param.data[j].midi_channel = 0;


+ 42
- 1
src/carla/lv2.cpp View File

@@ -40,12 +40,53 @@
#include "lv2/lv2_rtmempool.h"
#include "lv2/lv2_external_ui.h"

#include "lilv/lilvmm.hpp"
#include "lv2_rdf.h"

extern "C" {
#include "lv2-rtmempool/rtmempool.h"
}

#if 0

// TODO - remove me
int main()
{
Lilv::World World;
World.load_all();

int j = 0;
const Lilv::Plugins Plugins = World.get_all_plugins();

LILV_FOREACH(plugins, i, Plugins)
{
Lilv::Plugin p = Lilv::Plugin(lilv_plugins_get(Plugins, i));

LV2_RDF_Descriptor* desc = new LV2_RDF_Descriptor;
desc->Type = 0;
desc->URI = strdup(p.get_uri().as_string());
desc->Name = strdup(p.get_name().as_string());
desc->Author = strdup(p.get_author_name().as_string());
desc->License = nullptr;
desc->Binary = strdup(lilv_uri_to_path(p.get_library_uri().as_string()));
desc->Bundle = strdup(lilv_uri_to_path(p.get_bundle_uri().as_string()));

desc->PortCount = 0;
desc->PresetCount = 0;
desc->FeatureCount = 0;
desc->ExtensionCount = 0;
desc->UICount = 0;

qDebug("%03i - %s", j++, lilv_uri_to_path(p.get_library_uri().as_string()));

lv2_rdf_free(desc);
}

return 0;
}
#endif


#include <QtGui/QDialog>
#include <QtGui/QLayout>

@@ -1019,7 +1060,7 @@ public:
const LV2_RDF_PortPoints PortPoints = rdf_descriptor->Ports[i].Points;

j = param.count++;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = i;
param.data[j].hints = 0;
param.data[j].midi_channel = 0;


+ 4
- 1
src/carla/qtcreator/carla-backend.pro View File

@@ -19,7 +19,8 @@ SOURCES = \
../dssi.cpp \
../lv2.cpp \
../vst.cpp \
../sf2.cpp
../sf2.cpp \
../lv2-rtmempool/rtmempool.c

HEADERS = \
../carla_backend.h \
@@ -40,3 +41,5 @@ INCLUDEPATH = .. \
TARGET = carla_backend

DEFINES = VESTIGE_HEADER

LIBS = ../../carla-lilv/carla_lilv.a

+ 14
- 14
src/carla/sf2.cpp View File

@@ -378,7 +378,7 @@ public:

// ----------------------
j = Sf2ReverbOnOff;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -394,7 +394,7 @@ public:

// ----------------------
j = Sf2ReverbRoomSize;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -410,7 +410,7 @@ public:

// ----------------------
j = Sf2ReverbDamp;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -426,7 +426,7 @@ public:

// ----------------------
j = Sf2ReverbLevel;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -442,7 +442,7 @@ public:

// ----------------------
j = Sf2ReverbWidth;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -458,7 +458,7 @@ public:

// ----------------------
j = Sf2ChorusOnOff;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -474,7 +474,7 @@ public:

// ----------------------
j = Sf2ChorusNr;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -490,7 +490,7 @@ public:

// ----------------------
j = Sf2ChorusLevel;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -506,7 +506,7 @@ public:

// ----------------------
j = Sf2ChorusSpeedHz;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -522,7 +522,7 @@ public:

// ----------------------
j = Sf2ChorusDepthMs;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;
@@ -538,7 +538,7 @@ public:

// ----------------------
j = Sf2ChorusType;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_USES_SCALEPOINTS;
@@ -554,7 +554,7 @@ public:

// ----------------------
j = Sf2Polyphony;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED;
@@ -570,7 +570,7 @@ public:

// ----------------------
j = Sf2Interpolation;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_INPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_USES_SCALEPOINTS;
@@ -586,7 +586,7 @@ public:

// ----------------------
j = Sf2VoiceCount;
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].type = PARAMETER_OUTPUT;
param.data[j].hints = PARAMETER_IS_ENABLED | PARAMETER_IS_AUTOMABLE;


+ 4
- 4
src/carla/vst.cpp View File

@@ -25,7 +25,6 @@

#if VESTIGE_HEADER
#warning Using vestige header
#define kVstVersion 2400
#define effFlagsProgramChunks (1 << 5)
#define effGetParamLabel 6
#define effGetChunk 23
@@ -38,8 +37,6 @@
#define effStartProcess 71
#define effStopProcess 72
#define effSetProcessPrecision 77
#define kVstProcessPrecision32 0
#define kVstTransportChanged 1
#define kPlugCategSynth 2
#define kPlugCategAnalysis 3
#define kPlugCategMastering 4
@@ -47,6 +44,9 @@
#define kPlugCategRestoration 8
#define kPlugCategShell 10
#define kPlugCategGenerator 11
#define kVstProcessPrecision32 0
#define kVstTransportChanged 1
#define kVstVersion 2400
struct VstTimeInfo_R {
double samplePos, sampleRate, nanoSeconds, ppqPos, tempo, barStartPos, cycleStartPos, cycleEndPos;
int32_t timeSigNumerator, timeSigDenominator, smpteOffset, smpteFrameRate, samplesToNextClock, flags;
@@ -341,7 +341,7 @@ public:

for (j=0; j<params; j++)
{
param.data[j].index = j;
//param.data[j].index = j;
param.data[j].rindex = j;
param.data[j].hints = 0;
param.data[j].midi_channel = 0;


+ 13
- 9
src/carla_backend.py View File

@@ -610,19 +610,22 @@ MAX_PARAMETERS = 200
MAX_MIDI_EVENTS = 512

# plugin hints
PLUGIN_HAS_GUI = 0x01
PLUGIN_IS_BRIDGE = 0x02
PLUGIN_IS_SYNTH = 0x04
PLUGIN_IS_BRIDGE = 0x01
PLUGIN_IS_SYNTH = 0x02
PLUGIN_HAS_GUI = 0x04
PLUGIN_USES_CHUNKS = 0x08
PLUGIN_CAN_DRYWET = 0x10
PLUGIN_CAN_VOLUME = 0x20
PLUGIN_CAN_BALANCE = 0x40

# parameter hints
PARAMETER_IS_ENABLED = 0x01
PARAMETER_IS_AUTOMABLE = 0x02
PARAMETER_USES_SCALEPOINTS = 0x04
PARAMETER_USES_SAMPLERATE = 0x08
PARAMETER_IS_BOOLEAN = 0x01
PARAMETER_IS_INTEGER = 0x02
PARAMETER_IS_LOGARITHMIC = 0x04
PARAMETER_IS_ENABLED = 0x08
PARAMETER_IS_AUTOMABLE = 0x10
PARAMETER_USES_SCALEPOINTS = 0x20
PARAMETER_USES_SAMPLERATE = 0x40

# enum BinaryType
BINARY_NONE = 0
@@ -654,6 +657,7 @@ PLUGIN_CATEGORY_OUTRO = 8 # used to check if a plugin has a category
PARAMETER_UNKNOWN = 0
PARAMETER_INPUT = 1
PARAMETER_OUTPUT = 2
PARAMETER_LATENCY = 3

# enum InternalParametersIndex
PARAMETER_ACTIVE = -1
@@ -675,8 +679,8 @@ CUSTOM_DATA_BINARY = 6
GUI_NONE = 0
GUI_INTERNAL_QT4 = 1
GUI_INTERNAL_X11 = 2
GUI_EXTERNAL_OSC = 3
GUI_EXTERNAL_LV2 = 4
GUI_EXTERNAL_LV2 = 3
GUI_EXTERNAL_OSC = 4

# enum OptionsType
OPTION_GLOBAL_JACK_CLIENT = 1


+ 5
- 5
src/lv2_rdf.py View File

@@ -1867,11 +1867,11 @@ def fill_information(parse, bundle_path):
# Parse ttl file into 'lists'
def parse_ttl_file(filename):
primer = ConjunctiveGraph()
try:
primer.parse(filename, format='n3')
except:
print("LV2_RDF - Failed to parse %s" % filename)
return []
#try:
primer.parse(filename, format='n3')
#except:
#print("LV2_RDF - Failed to parse %s" % filename)
#return []

return [(x, y, z) for x, y, z in primer]



Loading…
Cancel
Save