Browse Source

Continue cleanup, move some files around

tags/1.9.4
falkTX 11 years ago
parent
commit
523fc019f8
100 changed files with 695 additions and 512 deletions
  1. +1
    -1
      source/Makefile.mk
  2. +17
    -17
      source/backend/CarlaBackend.hpp
  3. +13
    -26
      source/backend/CarlaEngine.hpp
  4. +4
    -6
      source/backend/CarlaNative.h
  5. +52
    -112
      source/backend/CarlaNative.hpp
  6. +3
    -3
      source/backend/engine/CarlaEngineInternal.hpp
  7. +3
    -3
      source/backend/engine/CarlaEngineOsc.hpp
  8. +3
    -3
      source/backend/engine/CarlaEngineThread.hpp
  9. +3
    -3
      source/backend/engine/distrho/DistrhoPluginInfo.h
  10. +3
    -3
      source/backend/native/3bandeq/DistrhoPlugin3BandEQ.hpp
  11. +3
    -3
      source/backend/native/3bandeq/DistrhoPluginInfo.h
  12. +3
    -3
      source/backend/native/3bandeq/DistrhoUI3BandEQ.hpp
  13. +3
    -3
      source/backend/native/3bandsplitter/DistrhoPlugin3BandSplitter.hpp
  14. +3
    -3
      source/backend/native/3bandsplitter/DistrhoPluginInfo.h
  15. +3
    -3
      source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.hpp
  16. +3
    -3
      source/backend/native/audio-base.hpp
  17. +3
    -3
      source/backend/native/midi-base.hpp
  18. +3
    -3
      source/backend/native/nekobi/DistrhoPluginInfo.h
  19. +3
    -3
      source/backend/native/nekobi/DistrhoPluginNekobi.hpp
  20. +3
    -3
      source/backend/native/nekobi/DistrhoUINekobi.hpp
  21. +3
    -3
      source/backend/native/notes/DistrhoPluginInfo.h
  22. +3
    -3
      source/backend/native/notes/DistrhoPluginNotes.hpp
  23. +3
    -5
      source/backend/native/notes/DistrhoUINotes.hpp
  24. +3
    -3
      source/backend/native/pingpongpan/DistrhoPluginInfo.h
  25. +3
    -3
      source/backend/native/pingpongpan/DistrhoPluginPingPongPan.hpp
  26. +3
    -5
      source/backend/native/pingpongpan/DistrhoUIPingPongPan.hpp
  27. +3
    -3
      source/backend/native/stereoenhancer/DistrhoPluginInfo.h
  28. +3
    -3
      source/backend/native/stereoenhancer/DistrhoPluginStereoEnhancer.hpp
  29. +3
    -5
      source/backend/native/stereoenhancer/DistrhoUIStereoEnhancer.hpp
  30. +3
    -3
      source/backend/plugin/CarlaPluginGui.hpp
  31. +4
    -34
      source/backend/plugin/CarlaPluginInternal.hpp
  32. +23
    -23
      source/backend/plugin/CarlaPluginThread.cpp
  33. +110
    -114
      source/backend/standalone/CarlaStandalone.cpp
  34. +3
    -3
      source/bridges/CarlaBridge.hpp
  35. +3
    -3
      source/bridges/CarlaBridgeClient.hpp
  36. +3
    -3
      source/bridges/CarlaBridgeOsc.hpp
  37. +2
    -2
      source/bridges/CarlaBridgeToolkit.hpp
  38. +4
    -4
      source/carla_backend.py
  39. +10
    -0
      source/includes/CarlaDefines.hpp
  40. +1
    -1
      source/includes/CarlaMIDI.h
  41. +0
    -1
      source/includes/dgl
  42. +1
    -1
      source/includes/ladspa_rdf.hpp
  43. +1
    -1
      source/includes/lilv
  44. +1
    -1
      source/includes/lv2_rdf.hpp
  45. +0
    -1
      source/includes/rtmempool
  46. +0
    -1
      source/includes/serd
  47. +0
    -1
      source/includes/sord
  48. +0
    -1
      source/includes/sratom
  49. +0
    -72
      source/libs/Makefile
  50. +0
    -0
      source/modules/distrho/DistrhoPlugin.hpp
  51. +0
    -0
      source/modules/distrho/DistrhoPluginMain.cpp
  52. +0
    -0
      source/modules/distrho/DistrhoUI.hpp
  53. +0
    -0
      source/modules/distrho/DistrhoUIExternal.hpp
  54. +0
    -0
      source/modules/distrho/DistrhoUIMain.cpp
  55. +0
    -0
      source/modules/distrho/DistrhoUIOpenGL.hpp
  56. +0
    -0
      source/modules/distrho/DistrhoUIQt.hpp
  57. +0
    -0
      source/modules/distrho/DistrhoUtils.hpp
  58. +0
    -0
      source/modules/distrho/dgl/App.hpp
  59. +0
    -0
      source/modules/distrho/dgl/Base.hpp
  60. +0
    -0
      source/modules/distrho/dgl/Geometry.hpp
  61. +0
    -0
      source/modules/distrho/dgl/Image.hpp
  62. +0
    -0
      source/modules/distrho/dgl/ImageAboutWindow.hpp
  63. +0
    -0
      source/modules/distrho/dgl/ImageButton.hpp
  64. +0
    -0
      source/modules/distrho/dgl/ImageKnob.hpp
  65. +0
    -0
      source/modules/distrho/dgl/ImageSlider.hpp
  66. +2
    -2
      source/modules/distrho/dgl/Makefile
  67. +0
    -0
      source/modules/distrho/dgl/StandaloneWindow.hpp
  68. +0
    -0
      source/modules/distrho/dgl/Widget.hpp
  69. +0
    -0
      source/modules/distrho/dgl/Window.hpp
  70. +0
    -0
      source/modules/distrho/dgl/src/App.cpp
  71. +0
    -0
      source/modules/distrho/dgl/src/AppPrivate.hpp
  72. +0
    -0
      source/modules/distrho/dgl/src/Geometry.cpp
  73. +0
    -0
      source/modules/distrho/dgl/src/Image.cpp
  74. +0
    -0
      source/modules/distrho/dgl/src/ImageAboutWindow.cpp
  75. +0
    -0
      source/modules/distrho/dgl/src/ImageButton.cpp
  76. +0
    -0
      source/modules/distrho/dgl/src/ImageKnob.cpp
  77. +0
    -0
      source/modules/distrho/dgl/src/ImageSlider.cpp
  78. +0
    -0
      source/modules/distrho/dgl/src/Widget.cpp
  79. +0
    -0
      source/modules/distrho/dgl/src/Window.cpp
  80. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl.h
  81. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_internal.h
  82. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_osx.m
  83. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_osx_extended.h
  84. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_osx_extended.m
  85. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_win.cpp
  86. +0
    -0
      source/modules/distrho/dgl/src/pugl/pugl_x11.c
  87. +0
    -0
      source/modules/distrho/src/DistrhoDefines.h
  88. +0
    -0
      source/modules/distrho/src/DistrhoPlugin.cpp
  89. +0
    -0
      source/modules/distrho/src/DistrhoPluginInternal.hpp
  90. +0
    -0
      source/modules/distrho/src/DistrhoPluginLADSPA+DSSI.cpp
  91. +0
    -0
      source/modules/distrho/src/DistrhoPluginLV2.cpp
  92. +0
    -0
      source/modules/distrho/src/DistrhoPluginLV2export.cpp
  93. +0
    -0
      source/modules/distrho/src/DistrhoPluginVST.cpp
  94. +0
    -0
      source/modules/distrho/src/DistrhoUI.cpp
  95. +0
    -0
      source/modules/distrho/src/DistrhoUIDSSI.cpp
  96. +0
    -0
      source/modules/distrho/src/DistrhoUIExternal.cpp
  97. +0
    -0
      source/modules/distrho/src/DistrhoUIInternal.hpp
  98. +0
    -0
      source/modules/distrho/src/DistrhoUIOpenGL.cpp
  99. +0
    -0
      source/modules/distrho/src/DistrhoUIQt.cpp
  100. +365
    -0
      source/modules/distrho/src/_todo/DistrhoPluginJACK.cpp

+ 1
- 1
source/Makefile.mk View File

@@ -29,7 +29,7 @@ STRIP ?= strip

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

BASE_FLAGS = -Wall -Wextra -fPIC -pipe
BASE_FLAGS = -Wall -Wextra -fPIC -DPIC -pipe
BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -mfpmath=sse

ifeq ($(RASPPI),true)


+ 17
- 17
source/backend/CarlaBackend.hpp View File

@@ -260,31 +260,32 @@ enum OptionsType {
*/
OPTION_PREFER_UI_BRIDGES = 5,

/*!
* Make plugin UIs always-on-top.\n
* Default is yes.
*/
OPTION_UIS_ALWAYS_ON_TOP = 6,

#ifdef WANT_DSSI
/*!
* Use (unofficial) dssi-vst chunks feature.\n
* Default is no.
* \see PLUGIN_OPTION_USE_CHUNKS
*/
OPTION_USE_DSSI_VST_CHUNKS = 6,
OPTION_USE_DSSI_VST_CHUNKS = 7,
#endif

/*!
* Maximum number of parameters allowed.\n
* Default is MAX_DEFAULT_PARAMETERS.
*/
OPTION_MAX_PARAMETERS = 7,
OPTION_MAX_PARAMETERS = 8,

/*!
* Timeout value in ms for how much to wait for UI-Bridges to respond.\n
* Default is 4000 (4 secs).
*/
OPTION_UI_BRIDGES_TIMEOUT = 8,

/*!
* JACK auto-connect to hardware ports.
*/
OPTION_JACK_AUTOCONNECT = 9,
OPTION_UI_BRIDGES_TIMEOUT = 9,

#ifdef WANT_RTAUDIO
/*!
@@ -734,23 +735,22 @@ struct ParameterRanges {

float getFixedValue(const float& value) const noexcept
{
if (value < min)
if (value <= min)
return min;
else if (value > max)
if (value >= max)
return max;
return value;
}

float getNormalizedValue(const float& value) const noexcept
{
float newValue = (value - min) / (max - min);

if (newValue < 0.0f)
newValue = 0.0f;
else if (newValue > 1.0f)
newValue = 1.0f;
const float normValue((value - min) / (max - min));

return newValue;
if (normValue <= 0.0f)
return 0.0f;
if (normValue >= 1.0f)
return 1.0f;
return normValue;
}

float getUnnormalizedValue(const float& value) const noexcept


+ 13
- 26
source/backend/CarlaEngine.hpp View File

@@ -200,12 +200,10 @@ struct EngineEvent {
EngineMidiEvent midi;
};

#ifndef DOXYGEN
EngineEvent() noexcept
{
clear();
}
#endif

void clear() noexcept
{
@@ -231,12 +229,10 @@ struct EngineOptions {
#endif

unsigned int maxParameters;
unsigned int oscUiTimeout;

bool jackAutoConnect;
unsigned int uiBridgesTimeout;

#ifdef WANT_RTAUDIO
unsigned int rtaudioNumberPeriods;
unsigned int rtaudioNumPeriods;
unsigned int rtaudioBufferSize;
unsigned int rtaudioSampleRate;
CarlaString rtaudioDevice;
@@ -266,32 +262,29 @@ struct EngineOptions {
CarlaString bridge_vstX11;
#endif

#ifndef DOXYGEN
EngineOptions() noexcept
# if defined(CARLA_OS_LINUX)
EngineOptions()
#if defined(CARLA_OS_LINUX)
: processMode(PROCESS_MODE_MULTIPLE_CLIENTS),
transportMode(TRANSPORT_MODE_JACK),
# else
#else
: processMode(PROCESS_MODE_CONTINUOUS_RACK),
transportMode(TRANSPORT_MODE_INTERNAL),
# endif
#endif
forceStereo(false),
preferPluginBridges(false),
preferUiBridges(true),
uisAlwaysOnTop(true),
# ifdef WANT_DSSI
#ifdef WANT_DSSI
useDssiVstChunks(false),
# endif
#endif
maxParameters(MAX_DEFAULT_PARAMETERS),
oscUiTimeout(4000),
jackAutoConnect(false),
# ifdef WANT_RTAUDIO
rtaudioNumberPeriods(0),
uiBridgesTimeout(4000),
#ifdef WANT_RTAUDIO
rtaudioNumPeriods(2),
rtaudioBufferSize(512),
rtaudioSampleRate(44100),
# endif
resourceDir() {}
#endif
resourceDir() {}
};

/*!
@@ -309,7 +302,6 @@ struct EngineTimeInfoBBT {
double ticksPerBeat;
double beatsPerMinute;

#ifndef DOXYGEN
EngineTimeInfoBBT() noexcept
: bar(0),
beat(0),
@@ -319,7 +311,6 @@ struct EngineTimeInfoBBT {
beatType(0.0f),
ticksPerBeat(0.0),
beatsPerMinute(0.0) {}
#endif
};

/*!
@@ -334,12 +325,10 @@ struct EngineTimeInfo {
uint32_t valid;
EngineTimeInfoBBT bbt;

#ifndef DOXYGEN
EngineTimeInfo() noexcept
{
clear();
}
#endif

void clear() noexcept
{
@@ -349,7 +338,6 @@ struct EngineTimeInfo {
valid = 0x0;
}

#ifndef DOXYGEN
// quick operator, doesn't check all values
bool operator==(const EngineTimeInfo& timeInfo) const noexcept
{
@@ -366,7 +354,6 @@ struct EngineTimeInfo {
{
return !operator==(timeInfo);
}
#endif
};

// -----------------------------------------------------------------------
@@ -1192,6 +1179,7 @@ private:
// -------------------------------------------------------------------
// Bridge/Controller OSC stuff

public:
#ifdef BUILD_BRIDGE
void oscSend_bridge_audio_count(const int32_t ins, const int32_t outs, const int32_t total);
void oscSend_bridge_midi_count(const int32_t ins, const int32_t outs, const int32_t total);
@@ -1213,7 +1201,6 @@ private:
void oscSend_bridge_set_chunk_data(const char* const chunkFile);
void oscSend_bridge_set_peaks();
#else
public:
void oscSend_control_add_plugin_start(const int32_t pluginId, const char* const pluginName);
void oscSend_control_add_plugin_end(const int32_t pluginId);
void oscSend_control_remove_plugin(const int32_t pluginId);


+ 4
- 6
source/backend/CarlaNative.h View File

@@ -30,7 +30,6 @@ extern "C" {
* @defgroup CarlaNativeAPI Carla Native API
*
* The Carla Native API
*
* @{
*/

@@ -56,11 +55,10 @@ typedef enum {
PLUGIN_IS_RTSAFE = 1 << 0,
PLUGIN_IS_SYNTH = 1 << 1,
PLUGIN_HAS_GUI = 1 << 2,
PLUGIN_USES_GUI_AS_FILE = 1 << 3,
PLUGIN_USES_PANNING = 1 << 4, // uses stereo balance if unset (default)
PLUGIN_USES_SINGLE_THREAD = 1 << 5,
PLUGIN_USES_STATE = 1 << 6,
PLUGIN_USES_STATIC_BUFFERS = 1 << 7
PLUGIN_USES_PANNING = 1 << 3, // uses stereo balance if unset (default)
PLUGIN_USES_SINGLE_THREAD = 1 << 4,
PLUGIN_USES_STATE = 1 << 5,
PLUGIN_USES_STATIC_BUFFERS = 1 << 6
} PluginHints;

typedef enum {


+ 52
- 112
source/backend/CarlaNative.hpp View File

@@ -52,134 +52,102 @@ protected:
return pHost;
}

const char* getResourceDir() const noexcept
const char* getResourceDir() const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, nullptr);

if (pHost != nullptr)
return pHost->resourceDir;

return nullptr;
return pHost->resourceDir;
}

const char* getUiName() const noexcept
const char* getUiName() const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->uiName;
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, nullptr);

return nullptr;
return pHost->uiName;
}

uint32_t getBufferSize() const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->get_buffer_size(pHost->handle);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, 0);

return 0;
return pHost->get_buffer_size(pHost->handle);
}

double getSampleRate() const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->get_sample_rate(pHost->handle);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, 0.0);

return 0.0;
return pHost->get_sample_rate(pHost->handle);
}

bool isOffline() const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->is_offline(pHost->handle);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, false);

return false;
return pHost->is_offline(pHost->handle);
}

const TimeInfo* getTimeInfo() const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, nullptr);

if (pHost != nullptr)
return pHost->get_time_info(pHost->handle);

return nullptr;
return pHost->get_time_info(pHost->handle);
}

void writeMidiEvent(const MidiEvent* const event) const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr,);

if (pHost != nullptr)
pHost->write_midi_event(pHost->handle, event);
pHost->write_midi_event(pHost->handle, event);
}

void uiParameterChanged(const uint32_t index, const float value) const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr,);

if (pHost != nullptr)
pHost->ui_parameter_changed(pHost->handle, index, value);
pHost->ui_parameter_changed(pHost->handle, index, value);
}

void uiMidiProgramChanged(const uint8_t channel, const uint32_t bank, const uint32_t program) const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr,);

if (pHost != nullptr)
pHost->ui_midi_program_changed(pHost->handle, channel, bank, program);
pHost->ui_midi_program_changed(pHost->handle, channel, bank, program);
}

void uiCustomDataChanged(const char* const key, const char* const value) const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr,);

if (pHost != nullptr)
pHost->ui_custom_data_changed(pHost->handle, key, value);
pHost->ui_custom_data_changed(pHost->handle, key, value);
}

void uiClosed() const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr,);

if (pHost != nullptr)
pHost->ui_closed(pHost->handle);
pHost->ui_closed(pHost->handle);
}

const char* uiOpenFile(const bool isDir, const char* const title, const char* const filter) const
{
CARLA_ASSERT(pHost != nullptr);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, nullptr);

if (pHost != nullptr)
return pHost->ui_open_file(pHost->handle, isDir, title, filter);

return nullptr;
return pHost->ui_open_file(pHost->handle, isDir, title, filter);
}

const char* uiSaveFile(const bool isDir, const char* const title, const char* const filter) const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->ui_save_file(pHost->handle, isDir, title, filter);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, nullptr);

return nullptr;
return pHost->ui_save_file(pHost->handle, isDir, title, filter);
}

intptr_t hostDispatcher(const HostDispatcherOpcode opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt) const
{
CARLA_ASSERT(pHost != nullptr);

if (pHost != nullptr)
return pHost->dispatcher(pHost->handle, opcode, index, value, ptr, opt);
CARLA_SAFE_ASSERT_RETURN(pHost != nullptr, 0);

return 0;
return pHost->dispatcher(pHost->handle, opcode, index, value, ptr, opt);
}

// -------------------------------------------------------------------
@@ -192,29 +160,22 @@ protected:

virtual const Parameter* getParameterInfo(const uint32_t index)
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), nullptr);
return nullptr;

// unused
(void)index;
}

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

// unused
(void)index;
}

virtual const char* getParameterText(const uint32_t index, const float value)
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), nullptr);
return nullptr;

// unused
(void)index;
(void)value;
}

@@ -228,11 +189,8 @@ protected:

virtual const MidiProgram* getMidiProgramInfo(const uint32_t index)
{
CARLA_ASSERT(index < getMidiProgramCount());
CARLA_SAFE_ASSERT_RETURN(index < getMidiProgramCount(), nullptr);
return nullptr;

// unused
(void)index;
}

// -------------------------------------------------------------------
@@ -240,34 +198,27 @@ protected:

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

// unused
(void)index;
(void)value;
}

virtual void setMidiProgram(const uint8_t channel, const uint32_t bank, const uint32_t program)
{
CARLA_ASSERT(channel < MAX_MIDI_CHANNELS);
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,);
return;

// unused
(void)channel;
(void)bank;
(void)program;
}

virtual void setCustomData(const char* const key, const char* const value)
{
CARLA_ASSERT(key != nullptr);
CARLA_ASSERT(value != nullptr);
return;

// unused
(void)key;
(void)value;
CARLA_SAFE_ASSERT_RETURN(key != nullptr,);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);
}

// -------------------------------------------------------------------
@@ -300,34 +251,27 @@ protected:

virtual void uiSetParameterValue(const uint32_t index, const float value)
{
CARLA_ASSERT(index < getParameterCount());
CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(),);
return;

// unused
(void)index;
(void)value;
}

virtual void uiSetMidiProgram(const uint8_t channel, const uint32_t bank, const uint32_t program)
{
CARLA_ASSERT(channel < MAX_MIDI_CHANNELS);
CARLA_SAFE_ASSERT_RETURN(channel < MAX_MIDI_CHANNELS,);
return;

// unused
(void)channel;
(void)bank;
(void)program;
}

virtual void uiSetCustomData(const char* const key, const char* const value)
{
CARLA_ASSERT(key != nullptr);
CARLA_ASSERT(value != nullptr);
return;

// unused
(void)key;
(void)value;
CARLA_SAFE_ASSERT_RETURN(key != nullptr,);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);
}

// -------------------------------------------------------------------
@@ -340,11 +284,7 @@ protected:

virtual void setState(const char* const data)
{
CARLA_ASSERT(data != nullptr);
return;

// unused
(void)data;
CARLA_SAFE_ASSERT_RETURN(data != nullptr,);
}

// -------------------------------------------------------------------
@@ -405,42 +345,42 @@ public:

static void _set_parameter_value(PluginHandle handle, uint32_t index, float value)
{
return handlePtr->setParameterValue(index, value);
handlePtr->setParameterValue(index, value);
}

static void _set_midi_program(PluginHandle handle, uint8_t channel, uint32_t bank, uint32_t program)
{
return handlePtr->setMidiProgram(channel, bank, program);
handlePtr->setMidiProgram(channel, bank, program);
}

static void _set_custom_data(PluginHandle handle, const char* key, const char* value)
{
return handlePtr->setCustomData(key, value);
handlePtr->setCustomData(key, value);
}

static void _ui_show(PluginHandle handle, bool show)
{
return handlePtr->uiShow(show);
handlePtr->uiShow(show);
}

static void _ui_idle(PluginHandle handle)
{
return handlePtr->uiIdle();
handlePtr->uiIdle();
}

static void _ui_set_parameter_value(PluginHandle handle, uint32_t index, float value)
{
return handlePtr->uiSetParameterValue(index, value);
handlePtr->uiSetParameterValue(index, value);
}

static void _ui_set_midi_program(PluginHandle handle, uint8_t channel, uint32_t bank, uint32_t program)
{
return handlePtr->uiSetMidiProgram(channel, bank, program);
handlePtr->uiSetMidiProgram(channel, bank, program);
}

static void _ui_set_custom_data(PluginHandle handle, const char* key, const char* value)
{
return handlePtr->uiSetCustomData(key, value);
handlePtr->uiSetCustomData(key, value);
}

static void _activate(PluginHandle handle)
@@ -455,7 +395,7 @@ public:

static void _process(PluginHandle handle, float** inBuffer, float** outBuffer, const uint32_t frames, uint32_t midiEventCount, const MidiEvent* midiEvents)
{
return handlePtr->process(inBuffer, outBuffer, frames, midiEventCount, midiEvents);
handlePtr->process(inBuffer, outBuffer, frames, midiEventCount, midiEvents);
}

static char* _get_state(PluginHandle handle)


+ 3
- 3
source/backend/engine/CarlaEngineInternal.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_ENGINE_INTERNAL_HPP__
#define __CARLA_ENGINE_INTERNAL_HPP__
#ifndef CARLA_ENGINE_INTERNAL_HPP_INCLUDED
#define CARLA_ENGINE_INTERNAL_HPP_INCLUDED

#include "CarlaEngine.hpp"
#include "CarlaEngineOsc.hpp"
@@ -351,4 +351,4 @@ struct CarlaEngineProtectedData {

CARLA_BACKEND_END_NAMESPACE

#endif // __CARLA_ENGINE_INTERNAL_HPP__
#endif // CARLA_ENGINE_INTERNAL_HPP_INCLUDED

+ 3
- 3
source/backend/engine/CarlaEngineOsc.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_ENGINE_OSC_HPP__
#define __CARLA_ENGINE_OSC_HPP__
#ifndef CARLA_ENGINE_OSC_HPP_INCLUDED
#define CARLA_ENGINE_OSC_HPP_INCLUDED

#include "CarlaBackend.hpp"
#include "CarlaOscUtils.hpp"
@@ -170,4 +170,4 @@ private:

CARLA_BACKEND_END_NAMESPACE

#endif // __CARLA_ENGINE_OSC_HPP__
#endif // CARLA_ENGINE_OSC_HPP_INCLUDED

+ 3
- 3
source/backend/engine/CarlaEngineThread.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_ENGINE_THREAD_HPP__
#define __CARLA_ENGINE_THREAD_HPP__
#ifndef CARLA_ENGINE_THREAD_HPP_INCLUDED
#define CARLA_ENGINE_THREAD_HPP_INCLUDED

#include "CarlaBackend.hpp"
#include "CarlaMutex.hpp"
@@ -56,4 +56,4 @@ private:

CARLA_BACKEND_END_NAMESPACE

#endif // __CARLA_ENGINE_THREAD_HPP__
#endif // CARLA_ENGINE_THREAD_HPP_INCLUDED

+ 3
- 3
source/backend/engine/distrho/DistrhoPluginInfo.h View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Carla"

@@ -35,4 +35,4 @@

#define DISTRHO_UI_EXTERNAL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/3bandeq/DistrhoPlugin3BandEQ.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the license see the LGPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_3BANDEQ_HPP__
#define __DISTRHO_PLUGIN_3BANDEQ_HPP__
#ifndef DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -105,4 +105,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_3BANDEQ_HPP__
#endif // DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED

+ 3
- 3
source/backend/native/3bandeq/DistrhoPluginInfo.h View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "3 Band EQ"

@@ -34,4 +34,4 @@

#define DISTRHO_UI_OPENGL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/3bandeq/DistrhoUI3BandEQ.hpp View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_UI_3BANDEQ_HPP__
#define __DISTRHO_UI_3BANDEQ_HPP__
#ifndef DISTRHO_UI_3BANDEQ_HPP_INCLUDED
#define DISTRHO_UI_3BANDEQ_HPP_INCLUDED

#include "DistrhoUIOpenGL.hpp"

@@ -90,4 +90,4 @@ private:

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_3BANDEQ_HPP__
#endif // DISTRHO_UI_3BANDEQ_HPP_INCLUDED

+ 3
- 3
source/backend/native/3bandsplitter/DistrhoPlugin3BandSplitter.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the license see the LGPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_3BANDSPLITTER_HPP__
#define __DISTRHO_PLUGIN_3BANDSPLITTER_HPP__
#ifndef DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -105,4 +105,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_3BANDSPLITTER_HPP__
#endif // DISTRHO_PLUGIN_3BANDSPLITTER_HPP_INCLUDED

+ 3
- 3
source/backend/native/3bandsplitter/DistrhoPluginInfo.h View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "3 Band Splitter"

@@ -34,4 +34,4 @@

#define DISTRHO_UI_OPENGL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.hpp View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_UI_3BANDSPLITTER_HPP__
#define __DISTRHO_UI_3BANDSPLITTER_HPP__
#ifndef DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED
#define DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED

#include "DistrhoUIOpenGL.hpp"

@@ -90,4 +90,4 @@ private:

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_3BANDSPLITTER_HPP__
#endif // DISTRHO_UI_3BANDSPLITTER_HPP_INCLUDED

+ 3
- 3
source/backend/native/audio-base.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __AUDIO_BASE_HPP__
#define __AUDIO_BASE_HPP__
#ifndef AUDIO_BASE_HPP_INCLUDED
#define AUDIO_BASE_HPP_INCLUDED

#include "CarlaMutex.hpp"

@@ -386,4 +386,4 @@ private:
CarlaMutex fMutex;
};

#endif // __AUDIO_BASE_HPP__
#endif // AUDIO_BASE_HPP_INCLUDED

+ 3
- 3
source/backend/native/midi-base.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __MIDI_BASE_HPP__
#define __MIDI_BASE_HPP__
#ifndef MIDI_BASE_HPP_INCLUDED
#define MIDI_BASE_HPP_INCLUDED

#include "CarlaMIDI.h"
#include "CarlaMutex.hpp"
@@ -236,4 +236,4 @@ private:
}
};

#endif // __MIDI_BASE_HPP__
#endif // MIDI_BASE_HPP_INCLUDED

+ 3
- 3
source/backend/native/nekobi/DistrhoPluginInfo.h View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Nekobi"

@@ -35,4 +35,4 @@

#define DISTRHO_UI_OPENGL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/nekobi/DistrhoPluginNekobi.hpp View File

@@ -16,8 +16,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_3BANDEQ_HPP__
#define __DISTRHO_PLUGIN_3BANDEQ_HPP__
#ifndef DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#define DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -112,4 +112,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_3BANDEQ_HPP__
#endif // DISTRHO_PLUGIN_3BANDEQ_HPP_INCLUDED

+ 3
- 3
source/backend/native/nekobi/DistrhoUINekobi.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __DISTRHO_UI_3BANDEQ_HPP__
#define __DISTRHO_UI_3BANDEQ_HPP__
#ifndef DISTRHO_UI_3BANDEQ_HPP_INCLUDED
#define DISTRHO_UI_3BANDEQ_HPP_INCLUDED

#include "DistrhoUIOpenGL.hpp"

@@ -101,4 +101,4 @@ private:

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_3BANDEQ_HPP__
#endif // DISTRHO_UI_3BANDEQ_HPP_INCLUDED

+ 3
- 3
source/backend/native/notes/DistrhoPluginInfo.h View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Notes"

@@ -35,4 +35,4 @@

#define DISTRHO_UI_QT

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/notes/DistrhoPluginNotes.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_NOTES_HPP__
#define __DISTRHO_PLUGIN_NOTES_HPP__
#ifndef DISTRHO_PLUGIN_NOTES_HPP_INCLUDED
#define DISTRHO_PLUGIN_NOTES_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -83,4 +83,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_NOTES_HPP__
#endif // DISTRHO_PLUGIN_NOTES_HPP_INCLUDED

+ 3
- 5
source/backend/native/notes/DistrhoUINotes.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __DISTRHO_UI_NOTES_HPP__
#define __DISTRHO_UI_NOTES_HPP__
#ifndef DISTRHO_UI_NOTES_HPP_INCLUDED
#define DISTRHO_UI_NOTES_HPP_INCLUDED

#include "DistrhoUIQt.hpp"
#include "paramspinbox.hpp"
@@ -104,8 +104,6 @@ private:
void saveCurrentTextState();
};

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

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_NOTES_HPP__
#endif // DISTRHO_UI_NOTES_HPP_INCLUDED

+ 3
- 3
source/backend/native/pingpongpan/DistrhoPluginInfo.h View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Ping Pong Pan"

@@ -34,4 +34,4 @@

#define DISTRHO_UI_OPENGL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/pingpongpan/DistrhoPluginPingPongPan.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the license see the LGPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_PINGPONGPAN_HPP__
#define __DISTRHO_PLUGIN_PINGPONGPAN_HPP__
#ifndef DISTRHO_PLUGIN_PINGPONGPAN_HPP_INCLUDED
#define DISTRHO_PLUGIN_PINGPONGPAN_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -96,4 +96,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_PINGPONGPAN_HPP__
#endif // DISTRHO_PLUGIN_PINGPONGPAN_HPP_INCLUDED

+ 3
- 5
source/backend/native/pingpongpan/DistrhoUIPingPongPan.hpp View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_UI_PINGPONGPAN_HPP__
#define __DISTRHO_UI_PINGPONGPAN_HPP__
#ifndef DISTRHO_UI_PINGPONGPAN_HPP_INCLUDED
#define DISTRHO_UI_PINGPONGPAN_HPP_INCLUDED

#include "DistrhoUIOpenGL.hpp"

@@ -78,8 +78,6 @@ private:
ImageButton* fButtonAbout;
};

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

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_PINGPONGPAN_HPP__
#endif // DISTRHO_UI_PINGPONGPAN_HPP_INCLUDED

+ 3
- 3
source/backend/native/stereoenhancer/DistrhoPluginInfo.h View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_PLUGIN_INFO_H__
#define __DISTRHO_PLUGIN_INFO_H__
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#define DISTRHO_PLUGIN_NAME "Stereo Enhancer"

@@ -34,4 +34,4 @@

#define DISTRHO_UI_OPENGL

#endif // __DISTRHO_PLUGIN_INFO_H__
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 3
- 3
source/backend/native/stereoenhancer/DistrhoPluginStereoEnhancer.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the license see the LGPL.txt file
*/
#ifndef __DISTRHO_PLUGIN_3BANDEQ_HPP__
#define __DISTRHO_PLUGIN_3BANDEQ_HPP__
#ifndef DISTRHO_PLUGIN_STEREO_ENHANCER_HPP_INCLUDED
#define DISTRHO_PLUGIN_STEREO_ENHANCER_HPP_INCLUDED
#include "DistrhoPlugin.hpp"
@@ -103,4 +103,4 @@ private:
END_NAMESPACE_DISTRHO
#endif // __DISTRHO_PLUGIN_3BANDEQ_HPP__
#endif // DISTRHO_PLUGIN_STEREO_ENHANCER_HPP_INCLUDED

+ 3
- 5
source/backend/native/stereoenhancer/DistrhoUIStereoEnhancer.hpp View File

@@ -14,8 +14,8 @@
* For a full copy of the license see the LGPL.txt file
*/

#ifndef __DISTRHO_UI_3BANDEQ_HPP__
#define __DISTRHO_UI_3BANDEQ_HPP__
#ifndef DISTRHO_UI_STEREO_ENHANCER_HPP_INCLUDED
#define DISTRHO_UI_STEREO_ENHANCER_HPP_INCLUDED

#include "DistrhoUIOpenGL.hpp"

@@ -78,8 +78,6 @@ private:
ImageButton* fButtonAbout;
};

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

END_NAMESPACE_DISTRHO

#endif // __DISTRHO_UI_3BANDEQ_HPP__
#endif // DISTRHO_UI_STEREO_ENHANCER_HPP_INCLUDED

+ 3
- 3
source/backend/plugin/CarlaPluginGui.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_PLUGIN_GUI_HPP__
#define __CARLA_PLUGIN_GUI_HPP__
#ifndef CARLA_PLUGIN_GUI_HPP_INCLUDED
#define CARLA_PLUGIN_GUI_HPP_INCLUDED

#include "CarlaPluginInternal.hpp"

@@ -79,4 +79,4 @@ private slots:

CARLA_BACKEND_END_NAMESPACE

#endif // __CARLA_PLUGIN_GUI_HPP__
#endif // CARLA_PLUGIN_GUI_HPP_INCLUDED

+ 4
- 34
source/backend/plugin/CarlaPluginInternal.hpp View File

@@ -12,11 +12,11 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the GPL.txt file
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef __CARLA_PLUGIN_INTERNAL_HPP__
#define __CARLA_PLUGIN_INTERNAL_HPP__
#ifndef CARLA_PLUGIN_INTERNAL_HPP_INCLUDED
#define CARLA_PLUGIN_INTERNAL_HPP_INCLUDED

#include "CarlaPlugin.hpp"
#include "CarlaPluginThread.hpp"
@@ -806,38 +806,8 @@ struct CarlaPluginProtectedData {

void saveSetting(const unsigned int option, const bool yesNo);
unsigned int loadSettings(const unsigned int options, const unsigned int availOptions);

// -------------------------------------------------------------------
// Static helper functions

static CarlaEngine* getEngine(CarlaPlugin* const plugin)
{
return plugin->kData->engine;
}

static CarlaEngineClient* getEngineClient(CarlaPlugin* const plugin)
{
return plugin->kData->client;
}

static CarlaEngineAudioPort* getAudioInPort(CarlaPlugin* const plugin, const uint32_t index)
{
return plugin->kData->audioIn.ports[index].port;
}

static CarlaEngineAudioPort* getAudioOutPort(CarlaPlugin* const plugin, const uint32_t index)
{
return plugin->kData->audioOut.ports[index].port;
}

static bool canRunInRack(CarlaPlugin* const plugin)
{
return (plugin->kData->extraHints & PLUGIN_HINT_CAN_RUN_RACK);
}
};

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

CARLA_BACKEND_END_NAMESPACE

#endif // __CARLA_PLUGIN_INTERNAL_HPP__
#endif // CARLA_PLUGIN_INTERNAL_HPP_INCLUDED

+ 23
- 23
source/backend/plugin/CarlaPluginThread.cpp View File

@@ -12,7 +12,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the GPL.txt file
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "CarlaPluginThread.hpp"
@@ -45,12 +45,12 @@ const char* PluginThreadMode2str(const CarlaPluginThread::Mode mode)
}

CarlaPluginThread::CarlaPluginThread(CarlaBackend::CarlaEngine* const engine, CarlaBackend::CarlaPlugin* const plugin, const Mode mode)
: kEngine(engine),
kPlugin(plugin),
: fEngine(engine),
fPlugin(plugin),
fMode(mode),
fProcess(nullptr)
{
carla_debug("CarlaPluginThread::CarlaPluginThread(plugin:\"%s\", engine:\"%s\", %s)", plugin->name(), engine->getName(), PluginThreadMode2str(mode));
carla_debug("CarlaPluginThread::CarlaPluginThread(plugin:\"%s\", engine:\"%s\", %s)", plugin->getName(), engine->getName(), PluginThreadMode2str(mode));
}

CarlaPluginThread::~CarlaPluginThread()
@@ -99,7 +99,7 @@ void CarlaPluginThread::run()
case PLUGIN_THREAD_LV2_GUI:
case PLUGIN_THREAD_VST_GUI:
fProcess->terminate();
kEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, kPlugin->id(), -1, 0, 0.0f, nullptr);
fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), -1, 0, 0.0f, nullptr);
return;

case PLUGIN_THREAD_BRIDGE:
@@ -107,7 +107,7 @@ void CarlaPluginThread::run()
}
}

QString name(kPlugin->name());
QString name(fPlugin->getName());
QStringList arguments;

if (name.isEmpty())
@@ -119,29 +119,29 @@ void CarlaPluginThread::run()
break;

case PLUGIN_THREAD_DSSI_GUI:
/* osc-url */ arguments << QString("%1/%2").arg(kEngine->getOscServerPathUDP()).arg(kPlugin->id());
/* filename */ arguments << kPlugin->filename();
/* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathUDP()).arg(fPlugin->getId());
/* filename */ arguments << fPlugin->getFilename();
/* label */ arguments << (const char*)fLabel;
/* ui-title */ arguments << QString("%1 (GUI)").arg(kPlugin->name());
/* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName());
break;

case PLUGIN_THREAD_LV2_GUI:
/* osc-url */ arguments << QString("%1/%2").arg(kEngine->getOscServerPathTCP()).arg(kPlugin->id());
/* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId());
/* URI */ arguments << (const char*)fLabel;
/* ui-URI */ arguments << (const char*)fExtra1;
/* ui-title */ arguments << QString("%1 (GUI)").arg(kPlugin->name());
/* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName());
break;

case PLUGIN_THREAD_VST_GUI:
/* osc-url */ arguments << QString("%1/%2").arg(kEngine->getOscServerPathTCP()).arg(kPlugin->id());
/* filename */ arguments << kPlugin->filename();
/* ui-title */ arguments << QString("%1 (GUI)").arg(kPlugin->name());
/* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId());
/* filename */ arguments << fPlugin->getFilename();
/* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName());
break;

case PLUGIN_THREAD_BRIDGE:
/* osc-url */ arguments << QString("%1/%2").arg(kEngine->getOscServerPathTCP()).arg(kPlugin->id());
/* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId());
/* stype */ arguments << (const char*)fExtra1;
/* filename */ arguments << kPlugin->filename();
/* filename */ arguments << fPlugin->getFilename();
/* name */ arguments << name;
/* label */ arguments << (const char*)fLabel;
/* SHM ids */ arguments << (const char*)fExtra2;
@@ -159,20 +159,20 @@ void CarlaPluginThread::run()
case PLUGIN_THREAD_DSSI_GUI:
case PLUGIN_THREAD_LV2_GUI:
case PLUGIN_THREAD_VST_GUI:
if (kPlugin->waitForOscGuiShow())
if (fPlugin->waitForOscGuiShow())
{
fProcess->waitForFinished(-1);

if (fProcess->exitCode() == 0)
{
// Hide
kEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, kPlugin->id(), 0, 0, 0.0f, nullptr);
fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), 0, 0, 0.0f, nullptr);
carla_stdout("CarlaPluginThread::run() - GUI closed");
}
else
{
// Kill
kEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, kPlugin->id(), -1, 0, 0.0f, nullptr);
fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), -1, 0, 0.0f, nullptr);
carla_stderr("CarlaPluginThread::run() - GUI crashed while running");
}
}
@@ -183,12 +183,12 @@ void CarlaPluginThread::run()

if (fProcess->exitCode() != 0 || fProcess->exitStatus() == QProcess::CrashExit)
{
kEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, kPlugin->id(), -1, 0, 0.0f, nullptr);
fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), -1, 0, 0.0f, nullptr);
carla_stderr("CarlaPluginThread::run() - GUI crashed while opening");
}
else
{
kEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, kPlugin->id(), 0, 0, 0.0f, nullptr);
fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), 0, 0, 0.0f, nullptr);
carla_debug("CarlaPluginThread::run() - GUI timeout");
}
}
@@ -201,10 +201,10 @@ void CarlaPluginThread::run()
{
carla_stderr("CarlaPluginThread::run() - bridge crashed");

CarlaString errorString("Plugin '" + CarlaString(kPlugin->name()) + "' has crashed!\n"
CarlaString errorString("Plugin '" + CarlaString(fPlugin->getName()) + "' has crashed!\n"
"Saving now will lose its current settings.\n"
"Please remove this plugin, and not rely on it from this point.");
kEngine->callback(CarlaBackend::CALLBACK_ERROR, kPlugin->id(), 0, 0, 0.0f, (const char*)errorString);
fEngine->callback(CarlaBackend::CALLBACK_ERROR, fPlugin->getId(), 0, 0, 0.0f, (const char*)errorString);
}
break;
}


+ 110
- 114
source/backend/standalone/CarlaStandalone.cpp View File

@@ -12,7 +12,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the GPL.txt file
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "CarlaStandalone.hpp"
@@ -37,12 +37,14 @@
# include <QtGui/QApplication>
#endif

using CarlaBackend::CarlaEngine;
using CarlaBackend::CarlaPlugin;
using CarlaBackend::CallbackFunc;
using CarlaBackend::EngineOptions;
using CarlaBackend::EngineTimeInfo;
using CarlaBackend::LogThread;
namespace CB = CarlaBackend;

using CB::CarlaEngine;
using CB::CarlaPlugin;
using CB::CallbackFunc;
using CB::EngineOptions;
using CB::EngineTimeInfo;
using CB::LogThread;

// -------------------------------------------------------------------------------------------------------------------
// Single, standalone engine
@@ -103,7 +105,7 @@ struct CarlaBackendStandalone {
if (app != nullptr)
return;

// try again, app might be registered now
// try again, app might be registed now
app = qApp;

if (app != nullptr)
@@ -130,7 +132,7 @@ struct CarlaBackendStandalone {
app = nullptr;
}

CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(CarlaBackendStandalone)
CARLA_DECLARE_NON_COPY_STRUCT(CarlaBackendStandalone)

} standalone;

@@ -296,9 +298,9 @@ unsigned int carla_get_internal_plugin_count()

#ifdef WANT_NATIVE
return static_cast<unsigned int>(CarlaPlugin::getNativePluginCount());
#endif

#else
return 0;
#endif
}

const CarlaNativePluginInfo* carla_get_internal_plugin_info(unsigned int internalPluginId)
@@ -320,15 +322,13 @@ const CarlaNativePluginInfo* carla_get_internal_plugin_info(unsigned int interna
info.hints = 0x0;

if (nativePlugin->hints & PLUGIN_IS_RTSAFE)
info.hints |= CarlaBackend::PLUGIN_IS_RTSAFE;
info.hints |= CB::PLUGIN_IS_RTSAFE;
if (nativePlugin->hints & PLUGIN_IS_SYNTH)
info.hints |= CarlaBackend::PLUGIN_IS_SYNTH;
info.hints |= CB::PLUGIN_IS_SYNTH;
if (nativePlugin->hints & PLUGIN_HAS_GUI)
info.hints |= CarlaBackend::PLUGIN_HAS_GUI;
if (nativePlugin->hints & PLUGIN_USES_GUI_AS_FILE)
info.hints |= CarlaBackend::PLUGIN_HAS_GUI_AS_FILE;
info.hints |= CB::PLUGIN_HAS_GUI;
if (nativePlugin->hints & PLUGIN_USES_SINGLE_THREAD)
info.hints |= CarlaBackend::PLUGIN_HAS_SINGLE_THREAD;
info.hints |= CB::PLUGIN_HAS_SINGLE_THREAD;

info.audioIns = nativePlugin->audioIns;
info.audioOuts = nativePlugin->audioOuts;
@@ -355,17 +355,17 @@ const CarlaNativePluginInfo* carla_get_internal_plugin_info(unsigned int interna

bool carla_engine_init(const char* driverName, const char* clientName)
{
carla_debug("carla_engine_init(\"%s\", \"%s\")", driverName, clientName);
CARLA_ASSERT(standalone.engine == nullptr);
CARLA_ASSERT(driverName != nullptr);
CARLA_ASSERT(clientName != nullptr);
carla_debug("carla_engine_init(\"%s\", \"%s\")", driverName, clientName);

#ifndef NDEBUG
static bool showWarning = true;

if (showWarning && standalone.callback != nullptr)
{
standalone.callback(standalone.callbackPtr, CarlaBackend::CALLBACK_DEBUG, 0, 0, 0, 0.0f, "Debug builds don't use this, check the console instead");
standalone.callback(standalone.callbackPtr, CB::CALLBACK_DEBUG, 0, 0, 0, 0.0f, "Debug builds don't use this, check the console instead");
showWarning = false;
}
#endif
@@ -399,49 +399,47 @@ bool carla_engine_init(const char* driverName, const char* clientName)
standalone.engine->setCallback(standalone.callback, nullptr);

#ifndef BUILD_BRIDGE
standalone.engine->setOption(CarlaBackend::OPTION_PROCESS_MODE, static_cast<int>(standalone.options.processMode), nullptr);
# if 0 // disabled for now
standalone.engine->setOption(CarlaBackend::OPTION_TRANSPORT_MODE, static_cast<int>(standalone.options.transportMode), nullptr);
# endif
standalone.engine->setOption(CarlaBackend::OPTION_FORCE_STEREO, standalone.options.forceStereo ? 1 : 0, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_PREFER_PLUGIN_BRIDGES, standalone.options.preferPluginBridges ? 1 : 0, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_PREFER_UI_BRIDGES, standalone.options.preferUiBridges ? 1 : 0, nullptr);
# ifdef WANT_DSSI
standalone.engine->setOption(CarlaBackend::OPTION_USE_DSSI_VST_CHUNKS, standalone.options.useDssiVstChunks ? 1 : 0, nullptr);
# endif
standalone.engine->setOption(CarlaBackend::OPTION_MAX_PARAMETERS, static_cast<int>(standalone.options.maxParameters), nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_OSC_UI_TIMEOUT, static_cast<int>(standalone.options.oscUiTimeout), nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_JACK_AUTOCONNECT, standalone.options.jackAutoConnect ? 1 : 0, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_JACK_TIMEMASTER, standalone.options.jackTimeMaster ? 1 : 0, nullptr);
# ifdef WANT_RTAUDIO
standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_BUFFER_SIZE, static_cast<int>(standalone.options.rtaudioBufferSize), nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_SAMPLE_RATE, static_cast<int>(standalone.options.rtaudioSampleRate), nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_DEVICE, 0, (const char*)standalone.options.rtaudioDevice);
# endif
standalone.engine->setOption(CarlaBackend::OPTION_PATH_RESOURCES, 0, (const char*)standalone.options.resourceDir);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)standalone.options.bridge_native);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX32, 0, (const char*)standalone.options.bridge_posix32);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX64, 0, (const char*)standalone.options.bridge_posix64);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_WIN32, 0, (const char*)standalone.options.bridge_win32);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_WIN64, 0, (const char*)standalone.options.bridge_win64);
# ifdef WANT_LV2
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK2, 0, (const char*)standalone.options.bridge_lv2Gtk2);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK3, 0, (const char*)standalone.options.bridge_lv2Gtk3);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT4, 0, (const char*)standalone.options.bridge_lv2Qt4);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT5, 0, (const char*)standalone.options.bridge_lv2Qt5);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_COCOA, 0, (const char*)standalone.options.bridge_lv2Cocoa);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, (const char*)standalone.options.bridge_lv2Win);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_X11, 0, (const char*)standalone.options.bridge_lv2X11);
# endif
# ifdef WANT_VST
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_COCOA, 0, (const char*)standalone.options.bridge_vstCocoa);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_HWND, 0, (const char*)standalone.options.bridge_vstHWND);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_X11, 0, (const char*)standalone.options.bridge_vstX11);
# endif
standalone.engine->setOption(CB::OPTION_PROCESS_MODE, static_cast<int>(standalone.options.processMode), nullptr);
standalone.engine->setOption(CB::OPTION_TRANSPORT_MODE, static_cast<int>(standalone.options.transportMode), nullptr);
#endif
standalone.engine->setOption(CB::OPTION_FORCE_STEREO, standalone.options.forceStereo ? 1 : 0, nullptr);
standalone.engine->setOption(CB::OPTION_PREFER_PLUGIN_BRIDGES, standalone.options.preferPluginBridges ? 1 : 0, nullptr);
standalone.engine->setOption(CB::OPTION_PREFER_UI_BRIDGES, standalone.options.preferUiBridges ? 1 : 0, nullptr);
standalone.engine->setOption(CB::OPTION_UIS_ALWAYS_ON_TOP, standalone.options.uisAlwaysOnTop ? 1 : 0, nullptr);
#ifdef WANT_DSSI
standalone.engine->setOption(CB::OPTION_USE_DSSI_VST_CHUNKS, standalone.options.useDssiVstChunks ? 1 : 0, nullptr);
#endif
standalone.engine->setOption(CB::OPTION_MAX_PARAMETERS, static_cast<int>(standalone.options.maxParameters), nullptr);
standalone.engine->setOption(CB::OPTION_UI_BRIDGES_TIMEOUT, static_cast<int>(standalone.options.uiBridgesTimeout), nullptr);
#ifdef WANT_RTAUDIO
standalone.engine->setOption(CB::OPTION_RTAUDIO_NUMBER_PERIODS, static_cast<int>(standalone.options.rtaudioNumPeriods), nullptr);
standalone.engine->setOption(CB::OPTION_RTAUDIO_BUFFER_SIZE, static_cast<int>(standalone.options.rtaudioBufferSize), nullptr);
standalone.engine->setOption(CB::OPTION_RTAUDIO_SAMPLE_RATE, static_cast<int>(standalone.options.rtaudioSampleRate), nullptr);
standalone.engine->setOption(CB::OPTION_RTAUDIO_DEVICE, 0, (const char*)standalone.options.rtaudioDevice);
#endif
standalone.engine->setOption(CB::OPTION_PATH_RESOURCES, 0, (const char*)standalone.options.resourceDir);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)standalone.options.bridge_native);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_POSIX32, 0, (const char*)standalone.options.bridge_posix32);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_POSIX64, 0, (const char*)standalone.options.bridge_posix64);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_WIN32, 0, (const char*)standalone.options.bridge_win32);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_WIN64, 0, (const char*)standalone.options.bridge_win64);
#ifdef WANT_LV2
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_GTK2, 0, (const char*)standalone.options.bridge_lv2Gtk2);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_GTK3, 0, (const char*)standalone.options.bridge_lv2Gtk3);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_QT4, 0, (const char*)standalone.options.bridge_lv2Qt4);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_QT5, 0, (const char*)standalone.options.bridge_lv2Qt5);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_COCOA, 0, (const char*)standalone.options.bridge_lv2Cocoa);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, (const char*)standalone.options.bridge_lv2Win);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_LV2_X11, 0, (const char*)standalone.options.bridge_lv2X11);
#endif
#ifdef WANT_VST
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_VST_COCOA, 0, (const char*)standalone.options.bridge_vstCocoa);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_VST_HWND, 0, (const char*)standalone.options.bridge_vstHWND);
standalone.engine->setOption(CB::OPTION_PATH_BRIDGE_VST_X11, 0, (const char*)standalone.options.bridge_vstX11);
#endif

if (standalone.procName.isNotEmpty())
standalone.engine->setOption(CarlaBackend::OPTION_PROCESS_NAME, 0, (const char*)standalone.procName);
#endif
standalone.engine->setOption(CB::OPTION_PROCESS_NAME, 0, (const char*)standalone.procName);

if (standalone.engine->init(clientName))
{
@@ -460,8 +458,8 @@ bool carla_engine_init(const char* driverName, const char* clientName)

bool carla_engine_close()
{
carla_debug("carla_engine_close()");
CARLA_ASSERT(standalone.engine != nullptr);
carla_debug("carla_engine_close()");

if (standalone.engine == nullptr)
{
@@ -504,8 +502,8 @@ bool carla_is_engine_running()

void carla_set_engine_about_to_close()
{
carla_debug("carla_set_engine_about_to_close()");
CARLA_ASSERT(standalone.engine != nullptr);
carla_debug("carla_set_engine_about_to_close()");

if (standalone.engine != nullptr)
standalone.engine->setAboutToClose();
@@ -526,142 +524,140 @@ void carla_set_engine_callback(CarlaCallbackFunc func, void* ptr)

void carla_set_engine_option(CarlaOptionsType option, int value, const char* valueStr)
{
carla_debug("carla_set_engine_option(%s, %i, \"%s\")", CarlaBackend::OptionsType2Str(option), value, valueStr);
carla_debug("carla_set_engine_option(%s, %i, \"%s\")", CB::OptionsType2Str(option), value, valueStr);

switch (option)
{
case CarlaBackend::OPTION_PROCESS_NAME:
case CB::OPTION_PROCESS_NAME:
standalone.procName = valueStr;
break;

case CarlaBackend::OPTION_PROCESS_MODE:
if (value < CarlaBackend::PROCESS_MODE_SINGLE_CLIENT || value > CarlaBackend::PROCESS_MODE_PATCHBAY)
case CB::OPTION_PROCESS_MODE:
if (value < CB::PROCESS_MODE_SINGLE_CLIENT || value > CB::PROCESS_MODE_PATCHBAY)
return carla_stderr2("carla_set_engine_option(OPTION_PROCESS_MODE, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.processMode = static_cast<CarlaBackend::ProcessMode>(value);
standalone.options.processMode = static_cast<CB::ProcessMode>(value);
break;

case CarlaBackend::OPTION_TRANSPORT_MODE:
#if 0 // disabled for now
if (value < CarlaBackend::TRANSPORT_MODE_INTERNAL || value > CarlaBackend::TRANSPORT_MODE_JACK)
case CB::OPTION_TRANSPORT_MODE:
if (value < CB::TRANSPORT_MODE_INTERNAL || value > CB::TRANSPORT_MODE_JACK)
return carla_stderr2("carla_set_engine_option(OPTION_TRANSPORT_MODE, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.transportMode = static_cast<CarlaBackend::TransportMode>(value);
#endif
standalone.options.transportMode = static_cast<CB::TransportMode>(value);
break;

case CarlaBackend::OPTION_FORCE_STEREO:
case CB::OPTION_FORCE_STEREO:
standalone.options.forceStereo = (value != 0);
break;

case CarlaBackend::OPTION_PREFER_PLUGIN_BRIDGES:
case CB::OPTION_PREFER_PLUGIN_BRIDGES:
standalone.options.preferPluginBridges = (value != 0);
break;

case CarlaBackend::OPTION_PREFER_UI_BRIDGES:
case CB::OPTION_PREFER_UI_BRIDGES:
standalone.options.preferUiBridges = (value != 0);
break;

#ifdef WANT_DSSI
case CarlaBackend::OPTION_USE_DSSI_VST_CHUNKS:
case CB::OPTION_USE_DSSI_VST_CHUNKS:
standalone.options.useDssiVstChunks = (value != 0);
break;
#endif

case CarlaBackend::OPTION_MAX_PARAMETERS:
case CB::OPTION_MAX_PARAMETERS:
if (value <= 0)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.maxParameters = static_cast<unsigned int>(value);
break;

case CarlaBackend::OPTION_OSC_UI_TIMEOUT:
case CB::OPTION_OSC_UI_TIMEOUT:
if (value <= 0)
return carla_stderr2("carla_set_engine_option(OPTION_OSC_UI_TIMEOUT, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.oscUiTimeout = static_cast<unsigned int>(value);
break;

case CarlaBackend::OPTION_JACK_AUTOCONNECT:
case CB::OPTION_JACK_AUTOCONNECT:
standalone.options.jackAutoConnect = (value != 0);
break;

case CarlaBackend::OPTION_JACK_TIMEMASTER:
case CB::OPTION_JACK_TIMEMASTER:
standalone.options.jackTimeMaster = (value != 0);
break;

#ifdef WANT_RTAUDIO
case CarlaBackend::OPTION_RTAUDIO_BUFFER_SIZE:
case CB::OPTION_RTAUDIO_BUFFER_SIZE:
if (value <= 0)
return carla_stderr2("carla_set_engine_option(OPTION_RTAUDIO_BUFFER_SIZE, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.rtaudioBufferSize = static_cast<unsigned int>(value);
break;

case CarlaBackend::OPTION_RTAUDIO_SAMPLE_RATE:
case CB::OPTION_RTAUDIO_SAMPLE_RATE:
if (value <= 0)
return carla_stderr2("carla_set_engine_option(OPTION_RTAUDIO_SAMPLE_RATE, %i, \"%s\") - invalid value", value, valueStr);

standalone.options.rtaudioSampleRate = static_cast<unsigned int>(value);
break;

case CarlaBackend::OPTION_RTAUDIO_DEVICE:
case CB::OPTION_RTAUDIO_DEVICE:
standalone.options.rtaudioDevice = valueStr;
break;
#endif

case CarlaBackend::OPTION_PATH_RESOURCES:
case CB::OPTION_PATH_RESOURCES:
standalone.options.resourceDir = valueStr;
break;

#ifndef BUILD_BRIDGE
case CarlaBackend::OPTION_PATH_BRIDGE_NATIVE:
case CB::OPTION_PATH_BRIDGE_NATIVE:
standalone.options.bridge_native = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_POSIX32:
case CB::OPTION_PATH_BRIDGE_POSIX32:
standalone.options.bridge_posix32 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_POSIX64:
case CB::OPTION_PATH_BRIDGE_POSIX64:
standalone.options.bridge_posix64 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_WIN32:
case CB::OPTION_PATH_BRIDGE_WIN32:
standalone.options.bridge_win32 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_WIN64:
case CB::OPTION_PATH_BRIDGE_WIN64:
standalone.options.bridge_win64 = valueStr;
break;
#endif
#ifdef WANT_LV2
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK2:
case CB::OPTION_PATH_BRIDGE_LV2_GTK2:
standalone.options.bridge_lv2Gtk2 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK3:
case CB::OPTION_PATH_BRIDGE_LV2_GTK3:
standalone.options.bridge_lv2Gtk3 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT4:
case CB::OPTION_PATH_BRIDGE_LV2_QT4:
standalone.options.bridge_lv2Qt4 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT5:
case CB::OPTION_PATH_BRIDGE_LV2_QT5:
standalone.options.bridge_lv2Qt5 = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_COCOA:
case CB::OPTION_PATH_BRIDGE_LV2_COCOA:
standalone.options.bridge_lv2Cocoa = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_WINDOWS:
case CB::OPTION_PATH_BRIDGE_LV2_WINDOWS:
standalone.options.bridge_lv2Win = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_X11:
case CB::OPTION_PATH_BRIDGE_LV2_X11:
standalone.options.bridge_lv2X11 = valueStr;
break;
#endif
#ifdef WANT_VST
case CarlaBackend::OPTION_PATH_BRIDGE_VST_COCOA:
case CB::OPTION_PATH_BRIDGE_VST_COCOA:
standalone.options.bridge_vstCocoa = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_VST_HWND:
case CB::OPTION_PATH_BRIDGE_VST_HWND:
standalone.options.bridge_vstHWND = valueStr;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_VST_X11:
case CB::OPTION_PATH_BRIDGE_VST_X11:
standalone.options.bridge_vstX11 = valueStr;
break;
#endif
@@ -834,7 +830,7 @@ const CarlaTransportInfo* carla_get_transport_info()

bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* const name, const char* label, const void* extraStuff)
{
carla_debug("carla_add_plugin(%s, %s, \"%s\", \"%s\", \"%s\", %p)", CarlaBackend::BinaryType2Str(btype), CarlaBackend::PluginType2Str(ptype), filename, name, label, extraStuff);
carla_debug("carla_add_plugin(%s, %s, \"%s\", \"%s\", \"%s\", %p)", CB::BinaryType2Str(btype), CB::PluginType2Str(ptype), filename, name, label, extraStuff);
CARLA_ASSERT(standalone.engine != nullptr);

if (standalone.engine != nullptr && standalone.engine->isRunning())
@@ -961,8 +957,8 @@ const CarlaPluginInfo* carla_get_plugin_info(unsigned int pluginId)
static CarlaPluginInfo info;

// reset
info.type = CarlaBackend::PLUGIN_NONE;
info.category = CarlaBackend::PLUGIN_CATEGORY_NONE;
info.type = CB::PLUGIN_NONE;
info.category = CB::PLUGIN_CATEGORY_NONE;
info.hints = 0x0;
info.hints = 0x0;
info.binary = nullptr;
@@ -1324,7 +1320,7 @@ const char* carla_get_chunk_data(unsigned int pluginId)

if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (plugin->options() & CarlaBackend::PLUGIN_OPTION_USE_CHUNKS)
if (plugin->options() & CB::PLUGIN_OPTION_USE_CHUNKS)
{
void* data = nullptr;
const int32_t dataSize = plugin->chunkData(&data);
@@ -1880,7 +1876,7 @@ void carla_set_chunk_data(unsigned int pluginId, const char* chunkData)

if (CarlaPlugin* const plugin = standalone.engine->getPlugin(pluginId))
{
if (plugin->options() & CarlaBackend::PLUGIN_OPTION_USE_CHUNKS)
if (plugin->options() & CB::PLUGIN_OPTION_USE_CHUNKS)
return plugin->setChunkData(chunkData);

carla_stderr2("carla_set_chunk_data(%i, \"%s\") - plugin does not support chunks", pluginId, chunkData);
@@ -2099,7 +2095,7 @@ protected:
carla_msleep(100);

if (std::strcmp(method, "/nsm/server/announce") == 0 && standalone.callback != nullptr)
standalone.callback(standalone.callbackPtr, CarlaBackend::CALLBACK_NSM_ANNOUNCE, 0, 0, 0, 0.0f, smName);
standalone.callback(standalone.callbackPtr, CB::CALLBACK_NSM_ANNOUNCE, 0, 0, 0, 0.0f, smName);

return 0;

@@ -2132,7 +2128,7 @@ protected:

fIsOpened = false;

standalone.callback(nullptr, CarlaBackend::CALLBACK_NSM_OPEN, 0, 0, 0, 0.0f, data);
standalone.callback(nullptr, CB::CALLBACK_NSM_OPEN, 0, 0, 0, 0.0f, data);

// wait max 10 secs to open
for (int i=0; i < 100 && ! fIsOpened; ++i)
@@ -2167,7 +2163,7 @@ protected:

fIsSaved = false;

standalone.callback(nullptr, CarlaBackend::CALLBACK_NSM_SAVE, 0, 0, 0, 0.0f, nullptr);
standalone.callback(nullptr, CB::CALLBACK_NSM_SAVE, 0, 0, 0, 0.0f, nullptr);

// wait max 10 secs to save
for (int i=0; i < 100 && ! fIsSaved; ++i)
@@ -2272,18 +2268,18 @@ bool carla_engine_init_bridge(const char* audioBaseName, const char* controlBase
if (standalone.callback != nullptr)
standalone.engine->setCallback(standalone.callback, nullptr);

standalone.engine->setOption(CarlaBackend::OPTION_PROCESS_MODE, CarlaBackend::PROCESS_MODE_BRIDGE, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_TRANSPORT_MODE, CarlaBackend::TRANSPORT_MODE_BRIDGE, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_PREFER_PLUGIN_BRIDGES, false, nullptr);
standalone.engine->setOption(CarlaBackend::OPTION_PREFER_UI_BRIDGES, false, nullptr);
standalone.engine->setOption(CB::OPTION_PROCESS_MODE, CB::PROCESS_MODE_BRIDGE, nullptr);
standalone.engine->setOption(CB::OPTION_TRANSPORT_MODE, CB::TRANSPORT_MODE_BRIDGE, nullptr);
standalone.engine->setOption(CB::OPTION_PREFER_PLUGIN_BRIDGES, false, nullptr);
standalone.engine->setOption(CB::OPTION_PREFER_UI_BRIDGES, false, nullptr);

// TODO - read from environment
#if 0
standalone.engine->setOption(CarlaBackend::OPTION_FORCE_STEREO, standalone.options.forceStereo ? 1 : 0, nullptr);
standalone.engine->setOption(CB::OPTION_FORCE_STEREO, standalone.options.forceStereo ? 1 : 0, nullptr);
# ifdef WANT_DSSI
standalone.engine->setOption(CarlaBackend::OPTION_USE_DSSI_VST_CHUNKS, standalone.options.useDssiVstChunks ? 1 : 0, nullptr);
standalone.engine->setOption(CB::OPTION_USE_DSSI_VST_CHUNKS, standalone.options.useDssiVstChunks ? 1 : 0, nullptr);
# endif
standalone.engine->setOption(CarlaBackend::OPTION_MAX_PARAMETERS, static_cast<int>(standalone.options.maxParameters), nullptr);
standalone.engine->setOption(CB::OPTION_MAX_PARAMETERS, static_cast<int>(standalone.options.maxParameters), nullptr);
#endif

if (standalone.engine->init(clientName))


+ 3
- 3
source/bridges/CarlaBridge.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_BRIDGE_HPP__
#define __CARLA_BRIDGE_HPP__
#ifndef CARLA_BRIDGE_HPP_INCLUDED
#define CARLA_BRIDGE_HPP_INCLUDED

#include "CarlaDefines.hpp"

@@ -32,4 +32,4 @@ class CarlaBridgeToolkit;

CARLA_BRIDGE_END_NAMESPACE

#endif // __CARLA_BRIDGE_HPP__
#endif // CARLA_BRIDGE_HPP_INCLUDED

+ 3
- 3
source/bridges/CarlaBridgeClient.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_BRIDGE_CLIENT_HPP__
#define __CARLA_BRIDGE_CLIENT_HPP__
#ifndef CARLA_BRIDGE_CLIENT_HPP_INCLUDED
#define CARLA_BRIDGE_CLIENT_HPP_INCLUDED

#include "CarlaBridgeOsc.hpp"

@@ -174,4 +174,4 @@ private:

CARLA_BRIDGE_END_NAMESPACE

#endif // __CARLA_BRIDGE_CLIENT_HPP__
#endif // CARLA_BRIDGE_CLIENT_HPP_INCLUDED

+ 3
- 3
source/bridges/CarlaBridgeOsc.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_BRIDGE_OSC_HPP__
#define __CARLA_BRIDGE_OSC_HPP__
#ifndef CARLA_BRIDGE_OSC_HPP_INCLUDED
#define CARLA_BRIDGE_OSC_HPP_INCLUDED

#include "CarlaBridge.hpp"
#include "CarlaOscUtils.hpp"
@@ -138,4 +138,4 @@ private:

CARLA_BRIDGE_END_NAMESPACE

#endif // __CARLA_BRIDGE_OSC_HPP__
#endif // CARLA_BRIDGE_OSC_HPP_INCLUDED

+ 2
- 2
source/bridges/CarlaBridgeToolkit.hpp View File

@@ -15,8 +15,8 @@
* For a full copy of the GNU General Public License see the GPL.txt file
*/

#ifndef __CARLA_BRIDGE_TOOLKIT_HPP__
#define __CARLA_BRIDGE_TOOLKIT_HPP__
#ifndef CARLA_BRIDGE_TOOLKIT_HPP_INCLUDED
#define CARLA_BRIDGE_TOOLKIT_HPP_INCLUDED

#include "CarlaBridge.hpp"
#include "CarlaJuceUtils.hpp"


+ 4
- 4
source/carla_backend.py View File

@@ -203,10 +203,10 @@ OPTION_TRANSPORT_MODE = 2
OPTION_FORCE_STEREO = 3
OPTION_PREFER_PLUGIN_BRIDGES = 4
OPTION_PREFER_UI_BRIDGES = 5
OPTION_USE_DSSI_VST_CHUNKS = 6
OPTION_MAX_PARAMETERS = 7
OPTION_UI_BRIDGES_TIMEOUT = 8
OPTION_JACK_AUTOCONNECT = 9
OPTION_UIS_ALWAYS_ON_TOP = 6
OPTION_USE_DSSI_VST_CHUNKS = 7
OPTION_MAX_PARAMETERS = 8
OPTION_UI_BRIDGES_TIMEOUT = 9
OPTION_RTAUDIO_NUMBER_PERIODS = 10
OPTION_RTAUDIO_BUFFER_SIZE = 11
OPTION_RTAUDIO_SAMPLE_RATE = 12


+ 10
- 0
source/includes/CarlaDefines.hpp View File

@@ -109,6 +109,16 @@
# define BINARY_NATIVE BINARY_OTHER
#endif

// Define CARLA_DECLARE_NON_COPY_STRUCT
#ifdef CARLA_PROPER_CPP11_SUPPORT
# define CARLA_DECLARE_NON_COPY_STRUCT(StructName) \
StructName(StructName&) = delete; \
StructName(const StructName&) = delete; \
StructName& operator=(const StructName&) = delete;
#else
# define CARLA_DECLARE_NON_COPY_STRUCT(StructName)
#endif

// Define CARLA_SAFE_ASSERT*
#define CARLA_SAFE_ASSERT(cond) if (cond) pass(); else carla_assert (#cond, __FILE__, __LINE__);
#define CARLA_SAFE_ASSERT_INT(cond, value) if (cond) pass(); else carla_assert_int (#cond, __FILE__, __LINE__, value);


+ 1
- 1
source/includes/CarlaMIDI.h View File

@@ -28,7 +28,7 @@
#define MIDI_STATUS_POLYPHONIC_AFTERTOUCH 0xA0 // note (0-127), pressure (0-127)
#define MIDI_STATUS_CONTROL_CHANGE 0xB0 // see 'Control Change Messages List'
#define MIDI_STATUS_PROGRAM_CHANGE 0xC0 // program (0-127), none
#define MIDI_STATUS_AFTERTOUCH 0xD0 // pressure (0-127), none
#define MIDI_STATUS_CHANNEL_PRESSURE 0xD0 // pressure (0-127), none
#define MIDI_STATUS_PITCH_WHEEL_CONTROL 0xE0 // LSB (0-127), MSB (0-127)

#define MIDI_IS_STATUS_NOTE_OFF(status) (((status) & 0xF0) == MIDI_STATUS_NOTE_OFF)


+ 0
- 1
source/includes/dgl View File

@@ -1 +0,0 @@
../libs/distrho/dgl/

+ 1
- 1
source/includes/ladspa_rdf.hpp View File

@@ -18,7 +18,7 @@
#ifndef LADSPA_RDF_HPP_INCLUDED
#define LADSPA_RDF_HPP_INCLUDED

#include "CarlaJuceUtils.hpp"
#include "CarlaDefines.hpp"

// Base Types
typedef float LADSPA_Data;


+ 1
- 1
source/includes/lilv View File

@@ -1 +1 @@
../libs/lilv/lilv-0.16.0/lilv
../modules/lilv/lilv-0.16.0/lilv

+ 1
- 1
source/includes/lv2_rdf.hpp View File

@@ -18,7 +18,7 @@
#ifndef LV2_RDF_HPP_INCLUDED
#define LV2_RDF_HPP_INCLUDED

#include "CarlaJuceUtils.hpp"
#include "CarlaDefines.hpp"

#ifdef CARLA_PROPER_CPP11_SUPPORT
# include <cstdint>


+ 0
- 1
source/includes/rtmempool View File

@@ -1 +0,0 @@
../libs/rtmempool

+ 0
- 1
source/includes/serd View File

@@ -1 +0,0 @@
../libs/lilv/serd-0.18.2/serd

+ 0
- 1
source/includes/sord View File

@@ -1 +0,0 @@
../libs/lilv/sord-0.12.0/sord

+ 0
- 1
source/includes/sratom View File

@@ -1 +0,0 @@
../libs/lilv/sratom-0.4.2/sratom

+ 0
- 72
source/libs/Makefile View File

@@ -1,72 +0,0 @@
#!/usr/bin/make -f
# Makefile for carla libs #
# ----------------------- #
# Created by falkTX
#

all:

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

dgl:
$(MAKE) -C distrho/dgl

dgl_%:
$(MAKE) -C distrho/dgl $*

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

lilv:
$(MAKE) -C lilv

lilv_%:
$(MAKE) -C lilv $*

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

rtmempool:
$(MAKE) -C rtmempool

rtmempool_%:
$(MAKE) -C rtmempool $*

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

theme:
$(MAKE) -C ../theme

theme_%:
$(MAKE) -C ../theme $*

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

widgets:
$(MAKE) -C ../widgets

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

jackbridge-win32:
$(MAKE) -C jackbridge win32

jackbridge-win64:
$(MAKE) -C jackbridge win64

jackbridge-wine32:
$(MAKE) -C jackbridge wine32

jackbridge-wine64:
$(MAKE) -C jackbridge wine64

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

clean:
rm -f *.a *.def *.dll *.dylib *.so
$(MAKE) clean -C distrho/dgl
$(MAKE) clean -C lilv
$(MAKE) clean -C rtmempool
$(MAKE) clean -C ../theme
$(MAKE) clean -C ../widgets

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

.PHONY: lilv rtmempool

source/libs/distrho/DistrhoPlugin.hpp → source/modules/distrho/DistrhoPlugin.hpp View File


source/libs/distrho/DistrhoPluginMain.cpp → source/modules/distrho/DistrhoPluginMain.cpp View File


source/libs/distrho/DistrhoUI.hpp → source/modules/distrho/DistrhoUI.hpp View File


source/libs/distrho/DistrhoUIExternal.hpp → source/modules/distrho/DistrhoUIExternal.hpp View File


source/libs/distrho/DistrhoUIMain.cpp → source/modules/distrho/DistrhoUIMain.cpp View File


source/libs/distrho/DistrhoUIOpenGL.hpp → source/modules/distrho/DistrhoUIOpenGL.hpp View File


source/libs/distrho/DistrhoUIQt.hpp → source/modules/distrho/DistrhoUIQt.hpp View File


source/libs/distrho/DistrhoUtils.hpp → source/modules/distrho/DistrhoUtils.hpp View File


source/libs/distrho/dgl/App.hpp → source/modules/distrho/dgl/App.hpp View File


source/libs/distrho/dgl/Base.hpp → source/modules/distrho/dgl/Base.hpp View File


source/libs/distrho/dgl/Geometry.hpp → source/modules/distrho/dgl/Geometry.hpp View File


source/libs/distrho/dgl/Image.hpp → source/modules/distrho/dgl/Image.hpp View File


source/libs/distrho/dgl/ImageAboutWindow.hpp → source/modules/distrho/dgl/ImageAboutWindow.hpp View File


source/libs/distrho/dgl/ImageButton.hpp → source/modules/distrho/dgl/ImageButton.hpp View File


source/libs/distrho/dgl/ImageKnob.hpp → source/modules/distrho/dgl/ImageKnob.hpp View File


source/libs/distrho/dgl/ImageSlider.hpp → source/modules/distrho/dgl/ImageSlider.hpp View File


source/libs/distrho/dgl/Makefile → source/modules/distrho/dgl/Makefile View File

@@ -8,8 +8,8 @@ include ../../../Makefile.mk

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

BUILD_C_FLAGS += -fvisibility=hidden -fPIC
BUILD_CXX_FLAGS += -fvisibility=hidden -fPIC -I.
BUILD_C_FLAGS += -I.
BUILD_CXX_FLAGS += -I.

OBJS = \
src/App.cpp.o \

source/libs/distrho/dgl/StandaloneWindow.hpp → source/modules/distrho/dgl/StandaloneWindow.hpp View File


source/libs/distrho/dgl/Widget.hpp → source/modules/distrho/dgl/Widget.hpp View File


source/libs/distrho/dgl/Window.hpp → source/modules/distrho/dgl/Window.hpp View File


source/libs/distrho/dgl/src/App.cpp → source/modules/distrho/dgl/src/App.cpp View File


source/libs/distrho/dgl/src/AppPrivate.hpp → source/modules/distrho/dgl/src/AppPrivate.hpp View File


source/libs/distrho/dgl/src/Geometry.cpp → source/modules/distrho/dgl/src/Geometry.cpp View File


source/libs/distrho/dgl/src/Image.cpp → source/modules/distrho/dgl/src/Image.cpp View File


source/libs/distrho/dgl/src/ImageAboutWindow.cpp → source/modules/distrho/dgl/src/ImageAboutWindow.cpp View File


source/libs/distrho/dgl/src/ImageButton.cpp → source/modules/distrho/dgl/src/ImageButton.cpp View File


source/libs/distrho/dgl/src/ImageKnob.cpp → source/modules/distrho/dgl/src/ImageKnob.cpp View File


source/libs/distrho/dgl/src/ImageSlider.cpp → source/modules/distrho/dgl/src/ImageSlider.cpp View File


source/libs/distrho/dgl/src/Widget.cpp → source/modules/distrho/dgl/src/Widget.cpp View File


source/libs/distrho/dgl/src/Window.cpp → source/modules/distrho/dgl/src/Window.cpp View File


source/libs/distrho/dgl/src/pugl/pugl.h → source/modules/distrho/dgl/src/pugl/pugl.h View File


source/libs/distrho/dgl/src/pugl/pugl_internal.h → source/modules/distrho/dgl/src/pugl/pugl_internal.h View File


source/libs/distrho/dgl/src/pugl/pugl_osx.m → source/modules/distrho/dgl/src/pugl/pugl_osx.m View File


source/libs/distrho/dgl/src/pugl/pugl_osx_extended.h → source/modules/distrho/dgl/src/pugl/pugl_osx_extended.h View File


source/libs/distrho/dgl/src/pugl/pugl_osx_extended.m → source/modules/distrho/dgl/src/pugl/pugl_osx_extended.m View File


source/libs/distrho/dgl/src/pugl/pugl_win.cpp → source/modules/distrho/dgl/src/pugl/pugl_win.cpp View File


source/libs/distrho/dgl/src/pugl/pugl_x11.c → source/modules/distrho/dgl/src/pugl/pugl_x11.c View File


source/libs/distrho/src/DistrhoDefines.h → source/modules/distrho/src/DistrhoDefines.h View File


source/libs/distrho/src/DistrhoPlugin.cpp → source/modules/distrho/src/DistrhoPlugin.cpp View File


source/libs/distrho/src/DistrhoPluginInternal.hpp → source/modules/distrho/src/DistrhoPluginInternal.hpp View File


source/libs/distrho/src/DistrhoPluginLADSPA+DSSI.cpp → source/modules/distrho/src/DistrhoPluginLADSPA+DSSI.cpp View File


source/libs/distrho/src/DistrhoPluginLV2.cpp → source/modules/distrho/src/DistrhoPluginLV2.cpp View File


source/libs/distrho/src/DistrhoPluginLV2export.cpp → source/modules/distrho/src/DistrhoPluginLV2export.cpp View File


source/libs/distrho/src/DistrhoPluginVST.cpp → source/modules/distrho/src/DistrhoPluginVST.cpp View File


source/libs/distrho/src/DistrhoUI.cpp → source/modules/distrho/src/DistrhoUI.cpp View File


source/libs/distrho/src/DistrhoUIDSSI.cpp → source/modules/distrho/src/DistrhoUIDSSI.cpp View File


source/libs/distrho/src/DistrhoUIExternal.cpp → source/modules/distrho/src/DistrhoUIExternal.cpp View File


source/libs/distrho/src/DistrhoUIInternal.hpp → source/modules/distrho/src/DistrhoUIInternal.hpp View File


source/libs/distrho/src/DistrhoUIOpenGL.cpp → source/modules/distrho/src/DistrhoUIOpenGL.cpp View File


source/libs/distrho/src/DistrhoUIQt.cpp → source/modules/distrho/src/DistrhoUIQt.cpp View File


+ 365
- 0
source/modules/distrho/src/_todo/DistrhoPluginJACK.cpp View File

@@ -0,0 +1,365 @@
/*
* DISTRHO Plugin Toolkit (DPT)
* Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* For a full copy of the license see the LGPL.txt file
*/

#ifdef DISTRHO_PLUGIN_TARGET_JACK

#include "DistrhoDefines.h"

#if ! DISTRHO_PLUGIN_HAS_UI
# error Standalone JACK mode requires UI
#endif

#include "DistrhoPluginInternal.h"
#include "DistrhoUIInternal.h"

#include <jack/jack.h>
#include <jack/midiport.h>
#include <jack/transport.h>

#include <QtCore/QSettings>
#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QMessageBox>

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

START_NAMESPACE_DISTRHO

class PluginJack : public QMainWindow
{
public:
PluginJack(jack_client_t* client_)
: QMainWindow(nullptr),
widget(this),
settings("DISTRHO", DISTRHO_PLUGIN_NAME),
ui(this, widget.winId(), setParameterCallback, setStateCallback, nullptr, uiNoteCallback, uiResizeCallback),
client(client_)
{
setCentralWidget(&widget);
setFixedSize(ui.getWidth(), ui.getHeight());
setWindowTitle(DISTRHO_PLUGIN_NAME);

if (DISTRHO_PLUGIN_NUM_INPUTS > 0)
{
portsIn = new jack_port_t* [DISTRHO_PLUGIN_NUM_INPUTS];

for (int i=0; i < DISTRHO_PLUGIN_NUM_INPUTS; i++)
portsIn[i] = jack_port_register(client, d_string("Audio Input ") + d_string(i+1), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
}
else
portsIn = nullptr;

if (DISTRHO_PLUGIN_NUM_OUTPUTS > 0)
{
portsOut = new jack_port_t* [DISTRHO_PLUGIN_NUM_OUTPUTS];

for (int i=0; i < DISTRHO_PLUGIN_NUM_OUTPUTS; i++)
portsOut[i] = jack_port_register(client, d_string("Audio Output ") + d_string(i+1), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
}
else
portsOut = nullptr;

#if DISTRHO_PLUGIN_IS_SYNTH
portMidi = jack_port_register(client, "Midi Input", JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0);
#endif

jack_set_process_callback(client, jackProcessCallback, this);

uiTimer = startTimer(30);

// load settings
restoreGeometry(settings.value("Global/Geometry", QByteArray()).toByteArray());

for (uint32_t i=0; i < plugin.parameterCount(); i++)
{
bool ok;
float value = settings.value(QString("Parameters/%1").arg(i)).toFloat(&ok);

if (ok)
{
plugin.setParameterValue(i, value);
ui.parameterChanged(i, value);
}
}

#if DISTRHO_PLUGIN_WANT_STATE
for (uint32_t i=0; i < plugin.stateCount(); i++)
{
const char* key = plugin.stateKey(i);
QString stringValue(settings.value(key).toString());

if (! stringValue.isEmpty())
ui.stateChanged(key, stringValue.toUtf8().constData());
}
#endif
}

~PluginJack()
{
// save settings
settings.setValue("Global/Geometry", saveGeometry());

if (uiTimer)
killTimer(uiTimer);

if (portsIn)
delete[] portsIn;

if (portsOut)
delete[] portsOut;
}

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

protected:
void setParameterValue(uint32_t index, float value)
{
plugin.setParameterValue(index, value);
settings.setValue(QString("Parameters/%1").arg(index), value);
}

#if DISTRHO_PLUGIN_WANT_STATE
void setState(const char* key, const char* value)
{
plugin.setState(key, value);
settings.setValue(key, value);
}
#endif

#if DISTRHO_PLUGIN_IS_SYNTH
void uiNote(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity)
{
// TODO
}
#endif

void uiResize(unsigned int width, unsigned int height)
{
widget.setFixedSize(width, height);
setFixedSize(width, height);
}

int jackProcess(jack_nframes_t nframes)
{
if (nframes <= 1)
return 1;

// Check for updated bufferSize
if (nframes != d_lastBufferSize)
{
d_lastBufferSize = nframes;
plugin.setBufferSize(nframes, true);
}

const float* ins[DISTRHO_PLUGIN_NUM_INPUTS];
float* outs[DISTRHO_PLUGIN_NUM_OUTPUTS];

for (int i=0; i < DISTRHO_PLUGIN_NUM_INPUTS; i++)
ins[i] = (float*)jack_port_get_buffer(portsIn[i], nframes);

for (int i=0; i < DISTRHO_PLUGIN_NUM_OUTPUTS; i++)
outs[i] = (float*)jack_port_get_buffer(portsOut[i], nframes);

#if DISTRHO_PLUGIN_IS_SYNTH
uint32_t midiEventCount = 0;

void* mIn = jack_port_get_buffer(portMidi, nframes);
// TODO

plugin.run(ins, outs, nframes, midiEventCount, midiEvents);
#else
plugin.run(ins, outs, nframes, 0, nullptr);
#endif

return 0;
}

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

void closeEvent(QCloseEvent* event)
{
QMainWindow::closeEvent(event);

qApp->quit();
}

void timerEvent(QTimerEvent* event)
{
if (event->timerId() == uiTimer)
ui.idle();

QMainWindow::timerEvent(event);
}

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

private:
// Qt4 stuff
int uiTimer;
QWidget widget;
QSettings settings;

PluginInternal plugin;
UIInternal ui;

jack_client_t* const client;
jack_port_t** portsIn;
jack_port_t** portsOut;

#if DISTRHO_PLUGIN_IS_SYNTH
jack_port_t* portMidi;
MidiEvent midiEvents[MAX_MIDI_EVENTS];
#endif

// ---------------------------------------------
// Callbacks

static void setParameterCallback(void* ptr, uint32_t index, float value)
{
PluginJack* _this_ = (PluginJack*)ptr;
assert(_this_);

_this_->setParameterValue(index, value);
}

static void setStateCallback(void* ptr, const char* key, const char* value)
{
#if DISTRHO_PLUGIN_WANT_STATE
PluginJack* _this_ = (PluginJack*)ptr;
assert(_this_);

_this_->setState(key, value);
#else
Q_UNUSED(ptr);
Q_UNUSED(key);
Q_UNUSED(value);
#endif
}

static void uiNoteCallback(void* ptr, bool onOff, uint8_t channel, uint8_t note, uint8_t velocity)
{
#if DISTRHO_PLUGIN_IS_SYNTH
PluginJack* _this_ = (PluginJack*)ptr;
assert(_this_);

_this_->uiNote(onOff, channel, note, velocity);
#else
Q_UNUSED(ptr);
Q_UNUSED(onOff);
Q_UNUSED(channel);
Q_UNUSED(note);
Q_UNUSED(velocity);
#endif
}

static void uiResizeCallback(void* ptr, unsigned int width, unsigned int height)
{
PluginJack* _this_ = (PluginJack*)ptr;
assert(_this_);

_this_->uiResize(width, height);
}

static int jackProcessCallback(jack_nframes_t nframes, void* arg)
{
PluginJack* _this_ = (PluginJack*)arg;
assert(_this_);

return _this_->jackProcess(nframes);
}
};

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

END_NAMESPACE_DISTRHO

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

std::string jack_status_get_error_string(const jack_status_t& status)
{
std::string errorString;

if (status & JackFailure)
errorString += "Overall operation failed;\n";
if (status & JackInvalidOption)
errorString += "The operation contained an invalid or unsupported option;\n";
if (status & JackNameNotUnique)
errorString += "The desired client name was not unique;\n";
if (status & JackServerStarted)
errorString += "The JACK server was started as a result of this operation;\n";
if (status & JackServerFailed)
errorString += "Unable to connect to the JACK server;\n";
if (status & JackServerError)
errorString += "Communication error with the JACK server;\n";
if (status & JackNoSuchClient)
errorString += "Requested client does not exist;\n";
if (status & JackLoadFailure)
errorString += "Unable to load internal client;\n";
if (status & JackInitFailure)
errorString += "Unable to initialize client;\n";
if (status & JackShmFailure)
errorString += "Unable to access shared memory;\n";
if (status & JackVersionError)
errorString += "Client's protocol version does not match;\n";
if (status & JackBackendError)
errorString += "Backend Error;\n";
if (status & JackClientZombie)
errorString += "Client is being shutdown against its will;\n";

if (errorString.size() > 0)
errorString.replace(errorString.size()-2, 2, ".");

return errorString;
}

int main(int argc, char* argv[])
{
USE_NAMESPACE_DISTRHO
QApplication app(argc, argv, true);

jack_status_t status;
jack_client_t* client = jack_client_open(DISTRHO_PLUGIN_NAME, JackNullOption, &status);

if (! client)
{
std::string errorString(jack_status_get_error_string(status));
QMessageBox::critical(nullptr, app.translate(DISTRHO_PLUGIN_NAME, "Error"),
app.translate(DISTRHO_PLUGIN_NAME,
"Could not connect to JACK, possible reasons:\n"
"%1").arg(QString::fromStdString(errorString)));
return 1;
}

d_lastBufferSize = jack_get_buffer_size(client);
d_lastSampleRate = jack_get_sample_rate(client);
setLastUiSampleRate(d_lastSampleRate);

PluginJack plugin(client);
plugin.show();

jack_activate(client);

int ret = app.exec();

jack_deactivate(client);
jack_client_close(client);

return ret;
}

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

#endif // DISTRHO_PLUGIN_TARGET_JACK

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save