Browse Source

Update discovery builds

tags/v0.9.0
falkTX 13 years ago
parent
commit
f79b5744cc
3 changed files with 85 additions and 72 deletions
  1. +12
    -9
      src/carla-discovery/Makefile
  2. +66
    -61
      src/carla-discovery/carla-discovery.cpp
  3. +7
    -2
      src/carla_backend.py

+ 12
- 9
src/carla-discovery/Makefile View File

@@ -6,19 +6,22 @@


CXX ?= g++ CXX ?= g++


BUILD_FLAGS = -ffast-math -fomit-frame-pointer -mtune=generic -msse -O2 -Wall -I../carla-includes $(CXXFLAGS)
BUILD_FLAGS = -std=c++0x -ffast-math -fomit-frame-pointer -mtune=generic -msse -O2 -Wall -I../carla-includes $(CXXFLAGS)
BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header BUILD_FLAGS += -DVESTIGE_HEADER -I../carla-includes/vestige # Comment this line to not use vestige header
LINK_FLAGS = $(LDFLAGS) LINK_FLAGS = $(LDFLAGS)


32BIT_FLAGS = -m32 32BIT_FLAGS = -m32
64BIT_FLAGS = -m64 #-fPIC
64BIT_FLAGS = -m64


UNIX_BUILD_FLAGS = $(BUILD_FLAGS)
UNIX_LINK_FLAGS = -ldl $(LINK_FLAGS)
UNIX_32BIT_FLAGS = -L/usr/lib32 -L/usr/lib/i386-linux-gnu $(32BIT_FLAGS) UNIX_32BIT_FLAGS = -L/usr/lib32 -L/usr/lib/i386-linux-gnu $(32BIT_FLAGS)
UNIX_64BIT_FLAGS = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu $(64BIT_FLAGS) UNIX_64BIT_FLAGS = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu $(64BIT_FLAGS)
UNIX_LINK_FLAGS = -ldl $(LINK_FLAGS)


WIN32_FLAGS = $(32BIT_FLAGS) -static
WIN64_FLAGS = $(64BIT_FLAGS) -static
WIN_BUILD_FLAGS = $(BUILD_FLAGS)
WIN_LINK_FLAGS = -static $(LINK_FLAGS)
WIN_32BIT_FLAGS = $(32BIT_FLAGS)
WIN_64BIT_FLAGS = $(64BIT_FLAGS)


ifeq ($(FLUIDSYNTH),) ifeq ($(FLUIDSYNTH),)
else else
@@ -40,16 +43,16 @@ win64: carla-discovery-win64.exe




carla-discovery-unix32: carla-discovery.cpp carla-discovery-unix32: carla-discovery.cpp
$(CXX) carla-discovery.cpp $(BUILD_FLAGS) $(UNIX_32BIT_FLAGS) $(UNIX_LINK_FLAGS) -o $@
$(CXX) carla-discovery.cpp $(UNIX_BUILD_FLAGS) $(UNIX_32BIT_FLAGS) $(UNIX_LINK_FLAGS) -DBUILD_UNIX32 -o $@


carla-discovery-unix64: carla-discovery.cpp carla-discovery-unix64: carla-discovery.cpp
$(CXX) carla-discovery.cpp $(BUILD_FLAGS) $(UNIX_64BIT_FLAGS) $(UNIX_LINK_FLAGS) -o $@
$(CXX) carla-discovery.cpp $(UNIX_BUILD_FLAGS) $(UNIX_64BIT_FLAGS) $(UNIX_LINK_FLAGS) -DBUILD_UNIX64 -o $@


carla-discovery-win32.exe: carla-discovery.cpp carla-discovery-win32.exe: carla-discovery.cpp
$(CXX) carla-discovery.cpp $(BUILD_FLAGS) $(WIN32_FLAGS) $(LINK_FLAGS) -o $@
$(CXX) carla-discovery.cpp $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -DBUILD_WIN32 -o $@


carla-discovery-win64.exe: carla-discovery.cpp carla-discovery-win64.exe: carla-discovery.cpp
$(CXX) carla-discovery.cpp $(BUILD_FLAGS) $(WIN64_FLAGS) $(LINK_FLAGS) -o $@
$(CXX) carla-discovery.cpp $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -DBUILD_WIN64 -o $@


clean: clean:
rm -f carla-discovery-* rm -f carla-discovery-*

+ 66
- 61
src/carla-discovery/carla-discovery.cpp View File

@@ -1,6 +1,6 @@
/*
/*
* Carla Plugin discovery code * Carla Plugin discovery code
* Copyright (C) 2012 Filipe Coelho <falktx@gmail.com>
* Copyright (C) 2011-2012 Filipe Coelho <falktx@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -15,23 +15,10 @@
* For a full copy of the GNU General Public License see the COPYING file * For a full copy of the GNU General Public License see the COPYING file
*/ */


#ifndef nullptr
const class {
public:
template<class T> operator T*() const
{
return 0;
}

template<class C, class T> operator T C::*() const
{
return 0;
}

private:
void operator&() const;
} nullptr_ = {};
#define nullptr nullptr_
#if defined (__GXX_EXPERIMENTAL_CXX0X__) && defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
// nullptr is available
#else
#define nullptr (0)
#endif #endif


#if defined(__WIN32__) || defined(__WIN64__) #if defined(__WIN32__) || defined(__WIN64__)
@@ -46,8 +33,6 @@ private:
#endif #endif
#endif #endif


#include <stdint.h>

#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
@@ -84,8 +69,6 @@ private:
#include <fluidsynth.h> #include <fluidsynth.h>
#endif #endif


#define DEBUG 1

#define DISCOVERY_OUT(x, y) std::cout << "\ncarla-discovery::" << x << "::" << y << std::endl; #define DISCOVERY_OUT(x, y) std::cout << "\ncarla-discovery::" << x << "::" << y << std::endl;


// fake values to test plugins with // fake values to test plugins with
@@ -93,6 +76,7 @@ const unsigned int bufferSize = 512;
const unsigned int sampleRate = 44100; const unsigned int sampleRate = 44100;


// ------------------------------ Carla main defs ------------------------------ // ------------------------------ Carla main defs ------------------------------

// plugin hints // plugin hints
const unsigned int PLUGIN_HAS_GUI = 0x01; const unsigned int PLUGIN_HAS_GUI = 0x01;
const unsigned int PLUGIN_IS_BRIDGE = 0x02; const unsigned int PLUGIN_IS_BRIDGE = 0x02;
@@ -102,6 +86,13 @@ const unsigned int PLUGIN_CAN_DRYWET = 0x10;
const unsigned int PLUGIN_CAN_VOL = 0x20; const unsigned int PLUGIN_CAN_VOL = 0x20;
const unsigned int PLUGIN_CAN_BALANCE = 0x40; const unsigned int PLUGIN_CAN_BALANCE = 0x40;


enum BinaryType {
BINARY_UNIX32 = 1,
BINARY_UNIX64 = 2,
BINARY_WIN32 = 3,
BINARY_WIN64 = 4
};

enum PluginType { enum PluginType {
PLUGIN_NONE = 0, PLUGIN_NONE = 0,
PLUGIN_LADSPA = 1, PLUGIN_LADSPA = 1,
@@ -111,7 +102,7 @@ enum PluginType {
PLUGIN_SF2 = 5 PLUGIN_SF2 = 5
}; };


enum PluginInfoCategory {
enum PluginCategory {
PLUGIN_CATEGORY_NONE = 0, PLUGIN_CATEGORY_NONE = 0,
PLUGIN_CATEGORY_SYNTH = 1, PLUGIN_CATEGORY_SYNTH = 1,
PLUGIN_CATEGORY_DELAY = 2, // also Reverb PLUGIN_CATEGORY_DELAY = 2, // also Reverb
@@ -123,6 +114,18 @@ enum PluginInfoCategory {
PLUGIN_CATEGORY_OUTRO = 8 // used to check if a plugin has a category PLUGIN_CATEGORY_OUTRO = 8 // used to check if a plugin has a category
}; };


#if BUILD_UNIX32
#define BINARY_TYPE BINARY_UNIX32
#elif BUILD_UNIX64
#define BINARY_TYPE BINARY_UNIX64
#elif BUILD_WIN32
#define BINARY_TYPE BINARY_WIN32
#elif BUILD_WIN64
#define BINARY_TYPE BINARY_WIN64
#else
#error Invalid build type
#endif

// ------------------------------ library functions ------------------------------ // ------------------------------ library functions ------------------------------
void* lib_open(const char* filename) void* lib_open(const char* filename)
{ {
@@ -196,7 +199,7 @@ intptr_t VstHostCallback(AEffect* effect, int32_t opcode, int32_t index, intptr_


case audioMasterVersion: case audioMasterVersion:
return kVstVersion; return kVstVersion;
case audioMasterCurrentId: case audioMasterCurrentId:
return VstCurrentUniqueId; return VstCurrentUniqueId;


@@ -251,7 +254,7 @@ intptr_t VstHostCallback(AEffect* effect, int32_t opcode, int32_t index, intptr_
else if (strcmp((char*)ptr, "sizeWindow") == 0) else if (strcmp((char*)ptr, "sizeWindow") == 0)
return 1; return 1;
else if (strcmp((char*)ptr, "offline") == 0) else if (strcmp((char*)ptr, "offline") == 0)
return 1;
return -1;
else if (strcmp((char*)ptr, "openFileSelector") == 0) else if (strcmp((char*)ptr, "openFileSelector") == 0)
return -1; return -1;
else if (strcmp((char*)ptr, "closeFileSelector") == 0) else if (strcmp((char*)ptr, "closeFileSelector") == 0)
@@ -305,7 +308,7 @@ void do_ladspa_check(void* lib_handle)
DISCOVERY_OUT("id", descriptor->UniqueID); DISCOVERY_OUT("id", descriptor->UniqueID);


int hints = 0; int hints = 0;
PluginInfoCategory category = PLUGIN_CATEGORY_NONE;
PluginCategory category = PLUGIN_CATEGORY_NONE;


int audio_ins = 0; int audio_ins = 0;
int audio_outs = 0; int audio_outs = 0;
@@ -483,10 +486,11 @@ void do_ladspa_check(void* lib_handle)
DISCOVERY_OUT("parameters.outs", parameters_outs); DISCOVERY_OUT("parameters.outs", parameters_outs);
DISCOVERY_OUT("parameters.total", parameters_total); DISCOVERY_OUT("parameters.total", parameters_total);
DISCOVERY_OUT("programs.total", programs_total); DISCOVERY_OUT("programs.total", programs_total);
DISCOVERY_OUT("end", "------------");


if (descriptor->cleanup) if (descriptor->cleanup)
descriptor->cleanup(handle); descriptor->cleanup(handle);

DISCOVERY_OUT("end", "------------");
} }
else else
DISCOVERY_OUT("error", "Failed to init LADSPA plugin"); DISCOVERY_OUT("error", "Failed to init LADSPA plugin");
@@ -522,7 +526,7 @@ void do_dssi_check(void* lib_handle)
DISCOVERY_OUT("id", ldescriptor->UniqueID); DISCOVERY_OUT("id", ldescriptor->UniqueID);


int hints = 0; int hints = 0;
PluginInfoCategory category = PLUGIN_CATEGORY_NONE;
PluginCategory category = PLUGIN_CATEGORY_NONE;


int audio_ins = 0; int audio_ins = 0;
int audio_outs = 0; int audio_outs = 0;
@@ -739,10 +743,11 @@ void do_dssi_check(void* lib_handle)
DISCOVERY_OUT("parameters.outs", parameters_outs); DISCOVERY_OUT("parameters.outs", parameters_outs);
DISCOVERY_OUT("parameters.total", parameters_total); DISCOVERY_OUT("parameters.total", parameters_total);
DISCOVERY_OUT("programs.total", programs_total); DISCOVERY_OUT("programs.total", programs_total);
DISCOVERY_OUT("end", "------------");


if (ldescriptor->cleanup) if (ldescriptor->cleanup)
ldescriptor->cleanup(handle); ldescriptor->cleanup(handle);

DISCOVERY_OUT("end", "------------");
} }
else else
DISCOVERY_OUT("error", "Failed to init DSSI plugin"); DISCOVERY_OUT("error", "Failed to init DSSI plugin");
@@ -758,13 +763,13 @@ void do_lv2_check(const char* bundle)
void do_vst_check(void* lib_handle) void do_vst_check(void* lib_handle)
{ {
VST_Function vstfn = (VST_Function)lib_symbol(lib_handle, "VSTPluginMain"); VST_Function vstfn = (VST_Function)lib_symbol(lib_handle, "VSTPluginMain");
if (vstfn == nullptr) if (vstfn == nullptr)
{ {
if (vstfn == nullptr) if (vstfn == nullptr)
{ {
#ifdef TARGET_API_MAC_CARBON #ifdef TARGET_API_MAC_CARBON
vstfn = (VST_Function)lib_symbol(lib_handle, "main_macho"); vstfn = (VST_Function)lib_symbol(lib_handle, "main_macho");
if (vstfn == nullptr) if (vstfn == nullptr)
#endif #endif
@@ -789,7 +794,7 @@ void do_vst_check(void* lib_handle)


effect->dispatcher(effect, effGetEffectName, 0, 0, buf_str, 0.0f); effect->dispatcher(effect, effGetEffectName, 0, 0, buf_str, 0.0f);
c_name = strdup((buf_str[0] != 0) ? buf_str : ""); c_name = strdup((buf_str[0] != 0) ? buf_str : "");
buf_str[0] = 0; buf_str[0] = 0;
effect->dispatcher(effect, effGetProductString, 0, 0, buf_str, 0.0f); effect->dispatcher(effect, effGetProductString, 0, 0, buf_str, 0.0f);
c_product = strdup((buf_str[0] != 0) ? buf_str : ""); c_product = strdup((buf_str[0] != 0) ? buf_str : "");
@@ -797,7 +802,7 @@ void do_vst_check(void* lib_handle)
buf_str[0] = 0; buf_str[0] = 0;
effect->dispatcher(effect, effGetVendorString, 0, 0, buf_str, 0.0f); effect->dispatcher(effect, effGetVendorString, 0, 0, buf_str, 0.0f);
c_vendor = strdup((buf_str[0] != 0) ? buf_str : ""); c_vendor = strdup((buf_str[0] != 0) ? buf_str : "");
VstCurrentUniqueId = effect->uniqueID; VstCurrentUniqueId = effect->uniqueID;
intptr_t VstCategory = effect->dispatcher(effect, effGetPlugCategory, 0, 0, nullptr, 0.0f); intptr_t VstCategory = effect->dispatcher(effect, effGetPlugCategory, 0, 0, nullptr, 0.0f);


@@ -805,16 +810,16 @@ void do_vst_check(void* lib_handle)
{ {
DISCOVERY_OUT("init", "-----------"); DISCOVERY_OUT("init", "-----------");
effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f); effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f);
DISCOVERY_OUT("name", c_name); DISCOVERY_OUT("name", c_name);
DISCOVERY_OUT("label", c_product); DISCOVERY_OUT("label", c_product);
DISCOVERY_OUT("maker", c_vendor); DISCOVERY_OUT("maker", c_vendor);
DISCOVERY_OUT("copyright", c_vendor); DISCOVERY_OUT("copyright", c_vendor);
DISCOVERY_OUT("id", VstCurrentUniqueId); DISCOVERY_OUT("id", VstCurrentUniqueId);
int hints = 0; int hints = 0;
PluginInfoCategory category = PLUGIN_CATEGORY_NONE;
PluginCategory category = PLUGIN_CATEGORY_NONE;
switch (VstCategory) switch (VstCategory)
{ {
case kPlugCategUnknown: case kPlugCategUnknown:
@@ -841,18 +846,18 @@ void do_vst_check(void* lib_handle)
default: default:
category = PLUGIN_CATEGORY_OUTRO; category = PLUGIN_CATEGORY_OUTRO;
} }
if (effect->flags & effFlagsHasEditor) if (effect->flags & effFlagsHasEditor)
hints |= PLUGIN_HAS_GUI; hints |= PLUGIN_HAS_GUI;
if (effect->flags & effFlagsIsSynth) if (effect->flags & effFlagsIsSynth)
{ {
hints |= PLUGIN_IS_SYNTH; hints |= PLUGIN_IS_SYNTH;
if (category == PLUGIN_CATEGORY_NONE) if (category == PLUGIN_CATEGORY_NONE)
category = PLUGIN_CATEGORY_SYNTH; category = PLUGIN_CATEGORY_SYNTH;
} }
int audio_ins = effect->numInputs; int audio_ins = effect->numInputs;
int audio_outs = effect->numOutputs; int audio_outs = effect->numOutputs;
int audio_total = audio_ins + audio_outs; int audio_total = audio_ins + audio_outs;
@@ -863,15 +868,15 @@ void do_vst_check(void* lib_handle)
int parameters_outs = 0; int parameters_outs = 0;
int parameters_total = parameters_ins; int parameters_total = parameters_ins;
int programs_total = effect->numPrograms; int programs_total = effect->numPrograms;
if (VstPluginCanDo(effect, "receiveVstEvents") || VstPluginCanDo(effect, "receiveVstMidiEvent") || effect->flags & effFlagsIsSynth) if (VstPluginCanDo(effect, "receiveVstEvents") || VstPluginCanDo(effect, "receiveVstMidiEvent") || effect->flags & effFlagsIsSynth)
midi_ins = 1; midi_ins = 1;
if (VstPluginCanDo(effect, "sendVstEvents") || VstPluginCanDo(effect, "sendVstMidiEvent")) if (VstPluginCanDo(effect, "sendVstEvents") || VstPluginCanDo(effect, "sendVstMidiEvent"))
midi_outs = 1; midi_outs = 1;
midi_total = midi_ins + midi_outs; midi_total = midi_ins + midi_outs;
// small crash-free plugin test // small crash-free plugin test
float** bufferAudioIn = new float* [audio_ins]; float** bufferAudioIn = new float* [audio_ins];
for (int j=0; j < audio_ins; j++) for (int j=0; j < audio_ins; j++)
@@ -879,14 +884,14 @@ void do_vst_check(void* lib_handle)
bufferAudioIn[j] = new float [bufferSize]; bufferAudioIn[j] = new float [bufferSize];
memset(bufferAudioIn[j], 0, sizeof(float)*bufferSize); memset(bufferAudioIn[j], 0, sizeof(float)*bufferSize);
} }
float** bufferAudioOut = new float* [audio_outs]; float** bufferAudioOut = new float* [audio_outs];
for (int j=0; j < audio_outs; j++) for (int j=0; j < audio_outs; j++)
{ {
bufferAudioOut[j] = new float [bufferSize]; bufferAudioOut[j] = new float [bufferSize];
memset(bufferAudioOut[j], 0, sizeof(float)*bufferSize); memset(bufferAudioOut[j], 0, sizeof(float)*bufferSize);
} }
struct { struct {
int32_t numEvents; int32_t numEvents;
intptr_t reserved; intptr_t reserved;
@@ -894,54 +899,54 @@ void do_vst_check(void* lib_handle)
} events; } events;
VstMidiEvent midiEvents[2]; VstMidiEvent midiEvents[2];
memset(&midiEvents, 0, sizeof(VstMidiEvent)*2); memset(&midiEvents, 0, sizeof(VstMidiEvent)*2);
midiEvents[0].type = kVstMidiType; midiEvents[0].type = kVstMidiType;
midiEvents[0].byteSize = sizeof(VstMidiEvent); midiEvents[0].byteSize = sizeof(VstMidiEvent);
midiEvents[0].midiData[0] = 0x90; midiEvents[0].midiData[0] = 0x90;
midiEvents[0].midiData[1] = 64; midiEvents[0].midiData[1] = 64;
midiEvents[0].midiData[2] = 100; midiEvents[0].midiData[2] = 100;
midiEvents[1].type = kVstMidiType; midiEvents[1].type = kVstMidiType;
midiEvents[1].byteSize = sizeof(VstMidiEvent); midiEvents[1].byteSize = sizeof(VstMidiEvent);
midiEvents[1].midiData[0] = 0x80; midiEvents[1].midiData[0] = 0x80;
midiEvents[1].midiData[1] = 64; midiEvents[1].midiData[1] = 64;
midiEvents[1].deltaFrames = bufferSize/2; midiEvents[1].deltaFrames = bufferSize/2;
events.numEvents = 2; events.numEvents = 2;
events.reserved = 0; events.reserved = 0;
events.data[0] = (VstEvent*)&midiEvents[0]; events.data[0] = (VstEvent*)&midiEvents[0];
events.data[1] = (VstEvent*)&midiEvents[1]; events.data[1] = (VstEvent*)&midiEvents[1];
#if !VST_FORCE_DEPRECATED #if !VST_FORCE_DEPRECATED
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, bufferSize, nullptr, sampleRate); effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, bufferSize, nullptr, sampleRate);
#endif #endif
effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, sampleRate); effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, sampleRate);
effect->dispatcher(effect, effSetBlockSize, 0, bufferSize, nullptr, 0.0f); effect->dispatcher(effect, effSetBlockSize, 0, bufferSize, nullptr, 0.0f);
effect->dispatcher(effect, effSetProcessPrecision, 0, kVstProcessPrecision32, nullptr, 0.0f); effect->dispatcher(effect, effSetProcessPrecision, 0, kVstProcessPrecision32, nullptr, 0.0f);
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f); effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f);
effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f); effect->dispatcher(effect, effStartProcess, 0, 0, nullptr, 0.0f);
if (midi_ins == 1) if (midi_ins == 1)
effect->dispatcher(effect, effProcessEvents, 0, 0, &events, 0.0f); effect->dispatcher(effect, effProcessEvents, 0, 0, &events, 0.0f);
if (effect->flags & effFlagsCanReplacing) if (effect->flags & effFlagsCanReplacing)
effect->processReplacing(effect, bufferAudioIn, bufferAudioOut, bufferSize); effect->processReplacing(effect, bufferAudioIn, bufferAudioOut, bufferSize);
#if !VST_FORCE_DEPRECATED #if !VST_FORCE_DEPRECATED
else else
effect->process(effect, bufferAudioIn, bufferAudioOut, bufferSize); effect->process(effect, bufferAudioIn, bufferAudioOut, bufferSize);
#endif #endif
effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f); effect->dispatcher(effect, effStopProcess, 0, 0, nullptr, 0.0f);
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f); effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f);
for (int j=0; j < audio_ins; j++) for (int j=0; j < audio_ins; j++)
delete[] bufferAudioIn[j]; delete[] bufferAudioIn[j];
for (int j=0; j < audio_outs; j++) for (int j=0; j < audio_outs; j++)
delete[] bufferAudioOut[j]; delete[] bufferAudioOut[j];
delete[] bufferAudioIn; delete[] bufferAudioIn;
delete[] bufferAudioOut; delete[] bufferAudioOut;
DISCOVERY_OUT("hints", hints); DISCOVERY_OUT("hints", hints);
DISCOVERY_OUT("category", category); DISCOVERY_OUT("category", category);
DISCOVERY_OUT("audio.ins", audio_ins); DISCOVERY_OUT("audio.ins", audio_ins);
@@ -957,12 +962,12 @@ void do_vst_check(void* lib_handle)


effect->dispatcher(effect, effClose, 0, 0, nullptr, 0.0f); effect->dispatcher(effect, effClose, 0, 0, nullptr, 0.0f);
DISCOVERY_OUT("end", "------------"); DISCOVERY_OUT("end", "------------");
if (VstCategory == kPlugCategShell) if (VstCategory == kPlugCategShell)
{ {
buf_str[0] = 0; buf_str[0] = 0;
VstCurrentUniqueId = effect->dispatcher(effect, effShellGetNextPlugin, 0, 0, buf_str, 0.0f); VstCurrentUniqueId = effect->dispatcher(effect, effShellGetNextPlugin, 0, 0, buf_str, 0.0f);
if (VstCurrentUniqueId != 0) if (VstCurrentUniqueId != 0)
{ {
free((void*)c_name); free((void*)c_name);
@@ -974,7 +979,7 @@ void do_vst_check(void* lib_handle)
else else
break; break;
} }
free((void*)c_name); free((void*)c_name);
free((void*)c_product); free((void*)c_product);
free((void*)c_vendor); free((void*)c_vendor);


+ 7
- 2
src/carla_backend.py View File

@@ -622,14 +622,19 @@ PARAMETER_HAS_STRICT_BOUNDS = 0x04
PARAMETER_USES_SCALEPOINTS = 0x08 PARAMETER_USES_SCALEPOINTS = 0x08
PARAMETER_USES_SAMPLERATE = 0x10 PARAMETER_USES_SAMPLERATE = 0x10


# enum BinaryType
BINARY_UNIX32 = 1
BINARY_UNIX64 = 2
BINARY_WIN32 = 3
BINARY_WIN64 = 4

# enum PluginType # enum PluginType
PLUGIN_NONE = 0 PLUGIN_NONE = 0
PLUGIN_LADSPA = 1 PLUGIN_LADSPA = 1
PLUGIN_DSSI = 2 PLUGIN_DSSI = 2
PLUGIN_LV2 = 3 PLUGIN_LV2 = 3
PLUGIN_VST = 4 PLUGIN_VST = 4
PLUGIN_WINVST = 5
PLUGIN_SF2 = 6
PLUGIN_SF2 = 5


# enum PluginCategory # enum PluginCategory
PLUGIN_CATEGORY_NONE = 0 PLUGIN_CATEGORY_NONE = 0


Loading…
Cancel
Save