Browse Source

Same stuff for DSP side; Update carla export code

gh-pages
falkTX 11 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! # error DISTRHO_PLUGIN_WANT_TIMEPOS undefined!
#endif #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__) #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define DISTRHO_PLUGIN_EXPORT extern "C" __declspec (dllexport) # define DISTRHO_PLUGIN_EXPORT extern "C" __declspec (dllexport)
# define DISTRHO_OS_WINDOWS 1 # define DISTRHO_OS_WINDOWS 1
@@ -77,25 +86,25 @@
# define DISTRHO_DLL_EXTENSION "so" # define DISTRHO_DLL_EXTENSION "so"
#endif #endif


/* Check for C++11 support */
#if defined(HAVE_CPP11_SUPPORT) #if defined(HAVE_CPP11_SUPPORT)
# define PROPER_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
#endif #endif


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


/* Define namespace */
#ifndef DISTRHO_NO_NAMESPACE #ifndef DISTRHO_NO_NAMESPACE
# ifndef DISTRHO_NAMESPACE # ifndef DISTRHO_NAMESPACE
# define DISTRHO_NAMESPACE DISTRHO # 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(this, 0, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, uiResizeCallback)
{ {
fUI.setTitle(host->uiName); 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 const NativeParameter* getParameterInfo(const uint32_t index) const override
{ {
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), nullptr);


static NativeParameter param; static NativeParameter param;


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


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


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


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


const NativeMidiProgram* getMidiProgramInfo(const uint32_t index) const override 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; static NativeMidiProgram midiProgram;


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


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


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


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


fPlugin.setProgram(realProgram); fPlugin.setProgram(realProgram);
} }
@@ -300,8 +296,8 @@ protected:
#if DISTRHO_PLUGIN_WANT_STATE #if DISTRHO_PLUGIN_WANT_STATE
void setCustomData(const char* const key, const char* const value) override 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); fPlugin.setState(key, value);
} }
@@ -323,21 +319,20 @@ protected:
#if DISTRHO_PLUGIN_IS_SYNTH #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 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 #else
void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const, const uint32_t) override 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 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 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 # if DISTRHO_PLUGIN_WANT_PROGRAMS
void uiSetMidiProgram(const uint8_t, const uint32_t bank, const uint32_t program) override 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); 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 # endif


# if DISTRHO_PLUGIN_WANT_STATE # if DISTRHO_PLUGIN_WANT_STATE
void uiSetCustomData(const char* const key, const char* const value) override 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
#endif #endif
@@ -420,8 +410,9 @@ protected:
#if DISTRHO_PLUGIN_HAS_UI #if DISTRHO_PLUGIN_HAS_UI
void uiNameChanged(const char* const uiName) override 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 #endif


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


#if DISTRHO_PLUGIN_IS_SYNTH
MidiEvent fRealMidiEvents[kMaxMidiEvents];
#endif

#if DISTRHO_PLUGIN_HAS_UI #if DISTRHO_PLUGIN_HAS_UI
// UI // UI
UICarla* fUiPtr; UICarla* fUiPtr;


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

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


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

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


Loading…
Cancel
Save