Browse Source

Same stuff for DSP side; Update carla export code

gh-pages
falkTX 10 years ago
parent
commit
e3a4013f45
3 changed files with 56 additions and 55 deletions
  1. +18
    -9
      distrho/src/DistrhoDefines.h
  2. +33
    -46
      distrho/src/DistrhoPluginCarla.cpp
  3. +5
    -0
      distrho/src/DistrhoUIInternal.hpp

+ 18
- 9
distrho/src/DistrhoDefines.h View File

@@ -55,6 +55,15 @@
# error DISTRHO_PLUGIN_WANT_TIMEPOS undefined!
#endif

/* Compatibility with non-clang compilers */
#ifndef __has_feature
# define __has_feature(x) 0
#endif
#ifndef __has_extension
# define __has_extension __has_feature
#endif

/* Check OS */
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define DISTRHO_PLUGIN_EXPORT extern "C" __declspec (dllexport)
# define DISTRHO_OS_WINDOWS 1
@@ -77,25 +86,25 @@
# define DISTRHO_DLL_EXTENSION "so"
#endif

/* Check for C++11 support */
#if defined(HAVE_CPP11_SUPPORT)
# define PROPER_CPP11_SUPPORT
#elif defined(__GNUC__) && (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__))
# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
# define PROPER_CPP11_SUPPORT
# if (__GNUC__ * 100 + __GNUC_MINOR__) < 407
# define override // gcc4.7+ only
# endif
#elif __cplusplus >= 201103L || (defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405) || __has_extension(cxx_noexcept)
# define PROPER_CPP11_SUPPORT
# if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) < 407) || ! __has_extension(cxx_override_control)
# define override // gcc4.7+ only
# define final // gcc4.7+ only
# endif
#endif

#ifndef PROPER_CPP11_SUPPORT
# ifndef __clang__
# define noexcept throw()
# endif
# define noexcept throw()
# define override
# define final
# define nullptr (0)
#endif

/* Define namespace */
#ifndef DISTRHO_NO_NAMESPACE
# ifndef DISTRHO_NAMESPACE
# define DISTRHO_NAMESPACE DISTRHO


+ 33
- 46
distrho/src/DistrhoPluginCarla.cpp View File

@@ -46,6 +46,9 @@ public:
fUI(this, 0, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, uiResizeCallback)
{
fUI.setTitle(host->uiName);

if (host->uiParentId != 0)
fUI.setTransientWinId(host->uiParentId);
}

// ---------------------------------------------
@@ -198,7 +201,7 @@ protected:

const NativeParameter* getParameterInfo(const uint32_t index) const override
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), nullptr);

static NativeParameter param;

@@ -234,9 +237,6 @@ protected:
param.ranges.def = ranges.def;
param.ranges.min = ranges.min;
param.ranges.max = ranges.max;
//param.ranges.step = ranges.step;
//param.ranges.stepSmall = ranges.stepSmall;
//param.ranges.stepLarge = ranges.stepLarge;
}

return &param;
@@ -244,7 +244,7 @@ protected:

float getParameterValue(const uint32_t index) const override
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), 0.0f);

return fPlugin.getParameterValue(index);
}
@@ -260,10 +260,7 @@ protected:

const NativeMidiProgram* getMidiProgramInfo(const uint32_t index) const override
{
CARLA_ASSERT(index < getMidiProgramCount());

if (index >= fPlugin.getProgramCount())
return nullptr;
CARLA_SAFE_ASSERT_RETURN(index < getMidiProgramCount(), nullptr);

static NativeMidiProgram midiProgram;

@@ -280,7 +277,7 @@ protected:

void setParameterValue(const uint32_t index, const float value) override
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(),);

fPlugin.setParameterValue(index, value);
}
@@ -290,8 +287,7 @@ protected:
{
const uint32_t realProgram(bank * 128 + program);

if (realProgram >= fPlugin.getProgramCount())
return;
CARLA_SAFE_ASSERT_RETURN(realProgram < getMidiProgramCount(),);

fPlugin.setProgram(realProgram);
}
@@ -300,8 +296,8 @@ protected:
#if DISTRHO_PLUGIN_WANT_STATE
void setCustomData(const char* const key, const char* const value) override
{
CARLA_ASSERT(key != nullptr);
CARLA_ASSERT(value != nullptr);
CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);

fPlugin.setState(key, value);
}
@@ -323,21 +319,20 @@ protected:
#if DISTRHO_PLUGIN_IS_SYNTH
void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const midiEvents, const uint32_t midiEventCount) override
{
uint32_t i;
MidiEvent realMidiEvents[midiEventCount];

for (i=0; i < midiEventCount && i < kMaxMidiEvents; ++i)
for (uint32_t i=0; i < midiEventCount; ++i)
{
const NativeMidiEvent* const midiEvent(&midiEvents[i]);
MidiEvent* const realMidiEvent(&fRealMidiEvents[i]);
const NativeMidiEvent& midiEvent(midiEvents[i]);
MidiEvent& realMidiEvent(realMidiEvents[i]);

realMidiEvent->frame = midiEvent->time;
realMidiEvent->size = midiEvent->size;
realMidiEvent.frame = midiEvent.time;
realMidiEvent.size = midiEvent.size;

for (uint8_t j=0; j < midiEvent->size; ++j)
realMidiEvent->buf[j] = midiEvent->data[j];
carla_copy<uint8_t>(realMidiEvent.buf, midiEvent.data, midiEvent.size);
}

fPlugin.run(inBuffer, outBuffer, frames, fRealMidiEvents, i);
fPlugin.run(inBuffer, outBuffer, frames, realMidiEvents, midiEventCount);
}
#else
void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const, const uint32_t) override
@@ -361,45 +356,40 @@ protected:

void uiIdle() override
{
CARLA_ASSERT(fUiPtr != nullptr);
CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);

if (fUiPtr != nullptr)
fUiPtr->carla_idle();
fUiPtr->carla_idle();
}

void uiSetParameterValue(const uint32_t index, const float value) override
{
CARLA_ASSERT(fUiPtr != nullptr);
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(),);

if (fUiPtr != nullptr)
fUiPtr->carla_setParameterValue(index, value);
fUiPtr->carla_setParameterValue(index, value);
}

# if DISTRHO_PLUGIN_WANT_PROGRAMS
void uiSetMidiProgram(const uint8_t, const uint32_t bank, const uint32_t program) override
{
CARLA_ASSERT(fUiPtr != nullptr);
CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);

const uint32_t realProgram(bank * 128 + program);

if (realProgram >= fPlugin.getProgramCount())
return;
CARLA_SAFE_ASSERT_RETURN(realProgram < getMidiProgramCount(),);

if (fUiPtr != nullptr)
fUiPtr->carla_setMidiProgram(realProgram);
fUiPtr->carla_setMidiProgram(realProgram);
}
# endif

# if DISTRHO_PLUGIN_WANT_STATE
void uiSetCustomData(const char* const key, const char* const value) override
{
CARLA_ASSERT(fUiPtr != nullptr);
CARLA_ASSERT(key != nullptr);
CARLA_ASSERT(value != nullptr);
CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);

if (fUiPtr != nullptr)
fUiPtr->carla_setCustomData(key, value);
fUiPtr->carla_setCustomData(key, value);
}
# endif
#endif
@@ -420,8 +410,9 @@ protected:
#if DISTRHO_PLUGIN_HAS_UI
void uiNameChanged(const char* const uiName) override
{
if (fUiPtr != nullptr)
fUiPtr->carla_setUiTitle(uiName);
CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);

fUiPtr->carla_setUiTitle(uiName);
}
#endif

@@ -430,10 +421,6 @@ protected:
private:
PluginExporter fPlugin;

#if DISTRHO_PLUGIN_IS_SYNTH
MidiEvent fRealMidiEvents[kMaxMidiEvents];
#endif

#if DISTRHO_PLUGIN_HAS_UI
// UI
UICarla* fUiPtr;


+ 5
- 0
distrho/src/DistrhoUIInternal.hpp View File

@@ -223,6 +223,11 @@ public:
glWindow.setTitle(uiTitle);
}

void setTransientWinId(const intptr_t winId)
{
glWindow.setTransientWinId(winId);
}

void setVisible(const bool yesNo)
{
glWindow.setVisible(yesNo);


Loading…
Cancel
Save