Browse Source

Fix last commit, rework Carla native API for better programs support

tags/v0.9.0
falkTX 13 years ago
parent
commit
959f9073b6
7 changed files with 28 additions and 107 deletions
  1. +2
    -2
      c++/carla-backend/Makefile
  2. +2
    -2
      c++/carla-backend/Makefile.dbg
  3. +7
    -3
      c++/carla-backend/carla_native.cpp
  4. +2
    -3
      c++/carla-backend/plugins/bypass.c
  5. +2
    -3
      c++/carla-backend/plugins/carla_native.h
  6. +11
    -31
      c++/carla-backend/plugins/carla_nativemm.h
  7. +2
    -63
      c++/carla-backend/qtcreator/carla-backend.pro

+ 2
- 2
c++/carla-backend/Makefile View File

@@ -57,7 +57,7 @@ CARLA_LD_FLAGS += $(shell pkg-config --libs linuxsampler)
endif endif


ifeq ($(HAVE_ZYN_DEPS),true) ifeq ($(HAVE_ZYN_DEPS),true)
CARLA_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml) -DWANT_ZYNADDSUBFX -Iplugins/zynaddsubfx
CARLA_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml) -DWANT_ZYNADDSUBFX
CARLA_LD_FLAGS += $(shell pkg-config --libs fftw3 mxml) CARLA_LD_FLAGS += $(shell pkg-config --libs fftw3 mxml)
endif endif


@@ -91,7 +91,7 @@ OBJS += rtmidi-2.0.1/RtMidi.o
endif endif


ifeq ($(HAVE_ZYN_DEPS),true) ifeq ($(HAVE_ZYN_DEPS),true)
OBJS += plugins/zynaddsubfx.o
OBJS += plugins/zynaddsubfx.o plugins/zynaddsubfx-src.o
endif endif


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


+ 2
- 2
c++/carla-backend/Makefile.dbg View File

@@ -57,7 +57,7 @@ CARLA_LD_FLAGS += $(shell pkg-config --libs linuxsampler)
endif endif


ifeq ($(HAVE_ZYN_DEPS),true) ifeq ($(HAVE_ZYN_DEPS),true)
CARLA_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml) -DWANT_ZYNADDSUBFX -Iplugins/zynaddsubfx
CARLA_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml) -DWANT_ZYNADDSUBFX
CARLA_LD_FLAGS += $(shell pkg-config --libs fftw3 mxml) CARLA_LD_FLAGS += $(shell pkg-config --libs fftw3 mxml)
endif endif


@@ -91,7 +91,7 @@ OBJS += rtmidi-2.0.1/RtMidi.o
endif endif


ifeq ($(HAVE_ZYN_DEPS),true) ifeq ($(HAVE_ZYN_DEPS),true)
OBJS += plugins/zynaddsubfx.o
OBJS += plugins/zynaddsubfx.o plugins/zynaddsubfx-src.o
endif endif


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


+ 7
- 3
c++/carla-backend/carla_native.cpp View File

@@ -802,7 +802,11 @@ public:
midiprog.data = nullptr; midiprog.data = nullptr;


// Query new programs // Query new programs
midiprog.count = descriptor->midiProgramCount;
if (descriptor->get_midi_program && descriptor->set_midi_program)
{
while (descriptor->get_midi_program(handle, midiprog.count))
midiprog.count += 1;
}


if (midiprog.count > 0) if (midiprog.count > 0)
midiprog.data = new MidiProgramData[midiprog.count]; midiprog.data = new MidiProgramData[midiprog.count];
@@ -810,8 +814,8 @@ public:
// Update data // Update data
for (i=0; i < midiprog.count; i++) for (i=0; i < midiprog.count; i++)
{ {
const MidiProgram* const mpDesc = &descriptor->midiPrograms[i];
CARLA_ASSERT(mpDesc->program < 128);
const MidiProgram* const mpDesc = descriptor->get_midi_program(handle, i);
CARLA_ASSERT(mpDesc);
CARLA_ASSERT(mpDesc->name); CARLA_ASSERT(mpDesc->name);


midiprog.data[i].bank = mpDesc->bank; midiprog.data[i].bank = mpDesc->bank;


+ 2
- 3
c++/carla-backend/plugins/bypass.c View File

@@ -83,9 +83,6 @@ static PluginDescriptor bypassDesc = {
.portCount = 0, .portCount = 0,
.ports = NULL, .ports = NULL,


.midiProgramCount = 0,
.midiPrograms = NULL,

.instantiate = bypass_instantiate, .instantiate = bypass_instantiate,
.activate = NULL, .activate = NULL,
.deactivate = NULL, .deactivate = NULL,
@@ -96,6 +93,8 @@ static PluginDescriptor bypassDesc = {
.get_parameter_text = NULL, .get_parameter_text = NULL,
.get_parameter_unit = NULL, .get_parameter_unit = NULL,


.get_midi_program = NULL,

.set_parameter_value = NULL, .set_parameter_value = NULL,
.set_midi_program = NULL, .set_midi_program = NULL,
.set_custom_data = NULL, .set_custom_data = NULL,


+ 2
- 3
c++/carla-backend/plugins/carla_native.h View File

@@ -137,9 +137,6 @@ typedef struct _PluginDescriptor {
uint32_t portCount; uint32_t portCount;
PluginPort* ports; PluginPort* ports;


uint32_t midiProgramCount;
MidiProgram* midiPrograms;

PluginHandle (*instantiate)(struct _PluginDescriptor* _this_, HostDescriptor* host); PluginHandle (*instantiate)(struct _PluginDescriptor* _this_, HostDescriptor* host);
void (*activate)(PluginHandle handle); void (*activate)(PluginHandle handle);
void (*deactivate)(PluginHandle handle); void (*deactivate)(PluginHandle handle);
@@ -150,6 +147,8 @@ typedef struct _PluginDescriptor {
const char* (*get_parameter_text)(PluginHandle handle, uint32_t index); const char* (*get_parameter_text)(PluginHandle handle, uint32_t index);
const char* (*get_parameter_unit)(PluginHandle handle, uint32_t index); const char* (*get_parameter_unit)(PluginHandle handle, uint32_t index);


const MidiProgram* (*get_midi_program)(PluginHandle handle, uint32_t index);

void (*set_parameter_value)(PluginHandle handle, uint32_t index, double value); void (*set_parameter_value)(PluginHandle handle, uint32_t index, double value);
void (*set_midi_program)(PluginHandle handle, uint32_t bank, uint32_t program); void (*set_midi_program)(PluginHandle handle, uint32_t bank, uint32_t program);
void (*set_custom_data)(PluginHandle handle, const char* key, const char* value); void (*set_custom_data)(PluginHandle handle, const char* key, const char* value);


+ 11
- 31
c++/carla-backend/plugins/carla_nativemm.h View File

@@ -37,9 +37,6 @@ public:
desc.portCount = master->desc.portCount; desc.portCount = master->desc.portCount;
desc.ports = master->desc.ports; desc.ports = master->desc.ports;


desc.midiProgramCount = master->desc.midiProgramCount;
desc.midiPrograms = master->desc.midiPrograms;

host = master->host; host = master->host;
} }
else else
@@ -54,9 +51,6 @@ public:
desc.portCount = 0; desc.portCount = 0;
desc.ports = nullptr; desc.ports = nullptr;


desc.midiProgramCount = 0;
desc.midiPrograms = nullptr;

host = nullptr; host = nullptr;
} }


@@ -107,7 +101,7 @@ public:


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


PluginDescriptor* descriptorInit()
const PluginDescriptor* descriptorInit()
{ {
desc.category = getCategory(); desc.category = getCategory();
desc.hints = getHints(); desc.hints = getHints();
@@ -211,15 +205,10 @@ protected:


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


virtual uint32_t getMidiProgramCount()
virtual const MidiProgram* getMidiProgram(uint32_t index)
{ {
return 0;
}

virtual void getMidiProgram(uint32_t index, MidiProgram* midiProgram)
{
CARLA_ASSERT(index < getMidiProgramCount());
CARLA_ASSERT(midiProgram);
Q_UNUSED(index);
return nullptr;
} }


// ------------------------------------------------------------------- // -------------------------------------------------------------------
@@ -293,6 +282,8 @@ private:
desc.get_parameter_text = _get_parameter_text; desc.get_parameter_text = _get_parameter_text;
desc.get_parameter_unit = _get_parameter_unit; desc.get_parameter_unit = _get_parameter_unit;


desc.get_midi_program = _get_midi_program;

desc.set_parameter_value = _set_parameter_value; desc.set_parameter_value = _set_parameter_value;
desc.set_midi_program = _set_midi_program; desc.set_midi_program = _set_midi_program;
desc.set_custom_data = _set_custom_data; desc.set_custom_data = _set_custom_data;
@@ -349,6 +340,11 @@ private:
return ((PluginDescriptorClass*)handle)->getParameterUnit(index); return ((PluginDescriptorClass*)handle)->getParameterUnit(index);
} }


static const MidiProgram* _get_midi_program(PluginHandle handle, uint32_t index)
{
return ((PluginDescriptorClass*)handle)->getMidiProgram(index);
}

static void _set_parameter_value(PluginHandle handle, uint32_t index, double value) static void _set_parameter_value(PluginHandle handle, uint32_t index, double value)
{ {
return ((PluginDescriptorClass*)handle)->setParameterValue(index, value); return ((PluginDescriptorClass*)handle)->setParameterValue(index, value);
@@ -406,26 +402,10 @@ private:
port->name = getPortName(i); port->name = getPortName(i);
} }
} }

desc.midiProgramCount = getMidiProgramCount();

if (desc.midiProgramCount > 0)
{
desc.midiPrograms = new MidiProgram [desc.midiProgramCount];

for (uint32_t i=0; i < desc.midiProgramCount; i++)
getMidiProgram(i, &desc.midiPrograms[i]);
}
} }


void _handleFini() void _handleFini()
{ {
if (desc.midiProgramCount > 0 && desc.midiPrograms)
delete[] desc.midiPrograms;

desc.midiProgramCount = 0;
desc.midiPrograms = nullptr;

if (desc.portCount > 0 && desc.ports) if (desc.portCount > 0 && desc.ports)
delete[] desc.ports; delete[] desc.ports;




+ 2
- 63
c++/carla-backend/qtcreator/carla-backend.pro View File

@@ -35,69 +35,8 @@ SOURCES = \
SOURCES += \ SOURCES += \
../plugins/bypass.c \ ../plugins/bypass.c \
../plugins/midi-split.cpp \ ../plugins/midi-split.cpp \
../plugins/zynaddsubfx.cpp

#SOURCES += \
# ../plugins/zynaddsubfx/DSP/AnalogFilter.cpp \
# ../plugins/zynaddsubfx/DSP/FFTwrapper.cpp \
# ../plugins/zynaddsubfx/DSP/Filter.cpp \
# ../plugins/zynaddsubfx/DSP/FormantFilter.cpp \
# ../plugins/zynaddsubfx/DSP/SVFilter.cpp \
# ../plugins/zynaddsubfx/DSP/Unison.cpp \
# ../plugins/zynaddsubfx/Effects/Alienwah.cpp \
# ../plugins/zynaddsubfx/Effects/Chorus.cpp \
# ../plugins/zynaddsubfx/Effects/Distorsion.cpp \
# ../plugins/zynaddsubfx/Effects/DynamicFilter.cpp \
# ../plugins/zynaddsubfx/Effects/Echo.cpp \
# ../plugins/zynaddsubfx/Effects/Effect.cpp \
# ../plugins/zynaddsubfx/Effects/EffectLFO.cpp \
# ../plugins/zynaddsubfx/Effects/EffectMgr.cpp \
# ../plugins/zynaddsubfx/Effects/EQ.cpp \
# ../plugins/zynaddsubfx/Effects/Phaser.cpp \
# ../plugins/zynaddsubfx/Effects/Reverb.cpp \
# ../plugins/zynaddsubfx/Misc/Bank.cpp \
# ../plugins/zynaddsubfx/Misc/Config.cpp \
# ../plugins/zynaddsubfx/Misc/Dump.cpp \
# ../plugins/zynaddsubfx/Misc/Master.cpp \
# ../plugins/zynaddsubfx/Misc/Microtonal.cpp \
# ../plugins/zynaddsubfx/Misc/Part.cpp \
# ../plugins/zynaddsubfx/Misc/Recorder.cpp \
# ../plugins/zynaddsubfx/Misc/Stereo.cpp \
# ../plugins/zynaddsubfx/Misc/Util.cpp \
# ../plugins/zynaddsubfx/Misc/WavFile.cpp \
# ../plugins/zynaddsubfx/Misc/WaveShapeSmps.cpp \
# ../plugins/zynaddsubfx/Misc/XMLwrapper.cpp \
# ../plugins/zynaddsubfx/Nio/AudioOut.cpp \
# ../plugins/zynaddsubfx/Nio/Engine.cpp \
# ../plugins/zynaddsubfx/Nio/EngineMgr.cpp \
# ../plugins/zynaddsubfx/Nio/MidiIn.cpp \
# ../plugins/zynaddsubfx/Nio/Nio.cpp \
# ../plugins/zynaddsubfx/Nio/NulEngine.cpp \
# ../plugins/zynaddsubfx/Nio/InMgr.cpp \
# ../plugins/zynaddsubfx/Nio/OutMgr.cpp \
# ../plugins/zynaddsubfx/Nio/WavEngine.cpp \
# ../plugins/zynaddsubfx/Params/ADnoteParameters.cpp \
# ../plugins/zynaddsubfx/Params/Controller.cpp \
# ../plugins/zynaddsubfx/Params/EnvelopeParams.cpp \
# ../plugins/zynaddsubfx/Params/FilterParams.cpp \
# ../plugins/zynaddsubfx/Params/LFOParams.cpp \
# ../plugins/zynaddsubfx/Params/PADnoteParameters.cpp \
# ../plugins/zynaddsubfx/Params/Presets.cpp \
# ../plugins/zynaddsubfx/Params/PresetsArray.cpp \
# ../plugins/zynaddsubfx/Params/PresetsStore.cpp \
# ../plugins/zynaddsubfx/Params/SUBnoteParameters.cpp \
# ../plugins/zynaddsubfx/Synth/ADnote.cpp \
# ../plugins/zynaddsubfx/Synth/Envelope.cpp \
# ../plugins/zynaddsubfx/Synth/LFO.cpp \
# ../plugins/zynaddsubfx/Synth/OscilGen.cpp \
# ../plugins/zynaddsubfx/Synth/PADnote.cpp \
# ../plugins/zynaddsubfx/Synth/Resonance.cpp \
# ../plugins/zynaddsubfx/Synth/SUBnote.cpp \
# ../plugins/zynaddsubfx/Synth/SynthNote.cpp

# ../plugins/zynaddsubfx/Effects/.cpp \
# ../plugins/zynaddsubfx/Params/.cpp \
# ../plugins/zynaddsubfx/Synth/.cpp \
../plugins/zynaddsubfx.cpp \
../plugins/zynaddsubfx-src.cpp


HEADERS = \ HEADERS = \
../carla_backend.h \ ../carla_backend.h \


Loading…
Cancel
Save