21#include "CarlaHostImpl.hpp"
24#include "CarlaEngineInit.hpp"
25#include "CarlaPlugin.hpp"
27#include "CarlaBackendUtils.hpp"
28#include "CarlaBase64Utils.hpp"
29#include "ThreadSafeFFTW.hpp"
33#if defined(USING_JUCE) && !defined(BUILD_BRIDGE)
37#define CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(cond, msg, ret) \
39 carla_stderr2("%s: " msg, __FUNCTION__); \
40 if (handle->isStandalone) \
41 ((CarlaHostStandalone*)handle)->lastError = msg; \
52 if (charPtr ==
nullptr)
59_CarlaPluginInfo::_CarlaPluginInfo()
noexcept
63 optionsAvailable(0x0),
73_CarlaPluginInfo::~_CarlaPluginInfo()
noexcept
83_CarlaParameterInfo::_CarlaParameterInfo()
noexcept
91_CarlaParameterInfo::~_CarlaParameterInfo()
noexcept
105_CarlaScalePointInfo::_CarlaScalePointInfo()
noexcept
109_CarlaScalePointInfo::~_CarlaScalePointInfo()
noexcept
115_CarlaTransportInfo::_CarlaTransportInfo()
noexcept
123void _CarlaTransportInfo::clear()
noexcept
135using CARLA_BACKEND_NAMESPACE::CarlaPluginPtr;
141 carla_debug(
"carla_get_engine_driver_count()");
143 return CarlaEngine::getDriverCount();
148 carla_debug(
"carla_get_engine_driver_name(%i)", index);
150 return CarlaEngine::getDriverName(index);
155 carla_debug(
"carla_get_engine_driver_device_names(%i)", index);
157 return CarlaEngine::getDriverDeviceNames(index);
165 static const uint32_t nullBufferSizes[] = { 0 };
166 static const double nullSampleRates[] = { 0.0 };
168 carla_debug(
"carla_get_engine_driver_device_info(%i, \"%s\")", index,
name);
172 retDevInfo.
hints = devInfo->hints;
173 retDevInfo.
bufferSizes = devInfo->bufferSizes !=
nullptr ? devInfo->bufferSizes : nullBufferSizes;
174 retDevInfo.
sampleRates = devInfo->sampleRates !=
nullptr ? devInfo->sampleRates : nullSampleRates;
178 retDevInfo.
hints = 0x0;
188 return CarlaEngine::showDriverDeviceControlPanel(index,
name);
196 static const ThreadSafeFFTW sThreadSafeFFTW;
199 static CarlaHostStandalone gStandalone;
206 carla_debug(
"carla_get_engine(%p)", handle);
208 return handle->engine;
215 engine->setCallback(standalone.engineCallback, standalone.engineCallbackPtr);
216 engine->setFileCallback(standalone.fileCallback, standalone.fileCallbackPtr);
233 if (
const char*
const uisAlwaysOnTop = std::getenv(
"ENGINE_OPTION_UIS_ALWAYS_ON_TOP"))
234 engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, (std::strcmp(uisAlwaysOnTop,
"true") == 0) ? 1 : 0,
nullptr);
236 if (
const char*
const maxParameters = std::getenv(
"ENGINE_OPTION_MAX_PARAMETERS"))
237 engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS, std::atoi(maxParameters),
nullptr);
239 if (
const char*
const resetXruns = std::getenv(
"ENGINE_OPTION_RESET_XRUNS"))
240 engine->setOption(CB::ENGINE_OPTION_RESET_XRUNS, (std::strcmp(resetXruns,
"true") == 0) ? 1 : 0,
nullptr);
242 if (
const char*
const uiBridgesTimeout = std::getenv(
"ENGINE_OPTION_UI_BRIDGES_TIMEOUT"))
243 engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT, std::atoi(uiBridgesTimeout),
nullptr);
245 if (
const char*
const pathAudio = std::getenv(
"ENGINE_OPTION_FILE_PATH_AUDIO"))
246 engine->setOption(CB::ENGINE_OPTION_FILE_PATH, CB::FILE_AUDIO, pathAudio);
248 if (
const char*
const pathMIDI = std::getenv(
"ENGINE_OPTION_FILE_PATH_MIDI"))
249 engine->setOption(CB::ENGINE_OPTION_FILE_PATH, CB::FILE_MIDI, pathMIDI);
251 if (
const char*
const pathLADSPA = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_LADSPA"))
252 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_LADSPA, pathLADSPA);
254 if (
const char*
const pathDSSI = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_DSSI"))
255 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_DSSI, pathDSSI);
257 if (
const char*
const pathLV2 = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_LV2"))
258 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_LV2, pathLV2);
260 if (
const char*
const pathVST2 = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_VST2"))
261 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_VST2, pathVST2);
263 if (
const char*
const pathVST3 = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_VST3"))
264 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_VST3, pathVST3);
266 if (
const char*
const pathSF2 = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_SF2"))
267 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SF2, pathSF2);
269 if (
const char*
const pathSFZ = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_SFZ"))
270 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SFZ, pathSFZ);
272 if (
const char*
const pathJSFX = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_JSFX"))
273 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_JSFX, pathJSFX);
275 if (
const char*
const pathCLAP = std::getenv(
"ENGINE_OPTION_PLUGIN_PATH_CLAP"))
276 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_CLAP, pathCLAP);
278 if (
const char*
const binaryDir = std::getenv(
"ENGINE_OPTION_PATH_BINARIES"))
279 engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, binaryDir);
283 if (
const char*
const resourceDir = std::getenv(
"ENGINE_OPTION_PATH_RESOURCES"))
284 engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, resourceDir);
288 if (
const char*
const preventBadBehaviour = std::getenv(
"ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR"))
289 engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, (std::strcmp(preventBadBehaviour,
"true") == 0) ? 1 : 0,
nullptr);
291 if (
const char*
const frontendWinId = std::getenv(
"ENGINE_OPTION_FRONTEND_WIN_ID"))
292 engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0, frontendWinId);
294 engine->setOption(CB::ENGINE_OPTION_FORCE_STEREO, standalone.engineOptions.forceStereo ? 1 : 0,
nullptr);
295 engine->setOption(CB::ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, standalone.engineOptions.preferPluginBridges ? 1 : 0,
nullptr);
296 engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES, standalone.engineOptions.preferUiBridges ? 1 : 0,
nullptr);
297 engine->setOption(CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP, standalone.engineOptions.uisAlwaysOnTop ? 1 : 0,
nullptr);
298 engine->setOption(CB::ENGINE_OPTION_MAX_PARAMETERS,
static_cast<int>(standalone.engineOptions.maxParameters),
nullptr);
299 engine->setOption(CB::ENGINE_OPTION_RESET_XRUNS, standalone.engineOptions.resetXruns ? 1 : 0,
nullptr);
300 engine->setOption(CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT,
static_cast<int>(standalone.engineOptions.uiBridgesTimeout),
nullptr);
301 engine->setOption(CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE,
static_cast<int>(standalone.engineOptions.audioBufferSize),
nullptr);
302 engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE,
static_cast<int>(standalone.engineOptions.audioSampleRate),
nullptr);
303 engine->setOption(CB::ENGINE_OPTION_AUDIO_TRIPLE_BUFFER, standalone.engineOptions.audioTripleBuffer ? 1 : 0,
nullptr);
305 if (standalone.engineOptions.audioDriver !=
nullptr)
306 engine->setOption(CB::ENGINE_OPTION_AUDIO_DRIVER, 0, standalone.engineOptions.audioDriver);
308 if (standalone.engineOptions.audioDevice !=
nullptr)
309 engine->setOption(CB::ENGINE_OPTION_AUDIO_DEVICE, 0, standalone.engineOptions.audioDevice);
311 engine->setOption(CB::ENGINE_OPTION_OSC_ENABLED, standalone.engineOptions.oscEnabled,
nullptr);
312 engine->setOption(CB::ENGINE_OPTION_OSC_PORT_TCP, standalone.engineOptions.oscPortTCP,
nullptr);
313 engine->setOption(CB::ENGINE_OPTION_OSC_PORT_UDP, standalone.engineOptions.oscPortUDP,
nullptr);
315 if (standalone.engineOptions.pathAudio !=
nullptr)
316 engine->setOption(CB::ENGINE_OPTION_FILE_PATH, CB::FILE_AUDIO, standalone.engineOptions.pathAudio);
318 if (standalone.engineOptions.pathMIDI !=
nullptr)
319 engine->setOption(CB::ENGINE_OPTION_FILE_PATH, CB::FILE_MIDI, standalone.engineOptions.pathMIDI);
321 if (standalone.engineOptions.pathLADSPA !=
nullptr)
322 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_LADSPA, standalone.engineOptions.pathLADSPA);
324 if (standalone.engineOptions.pathDSSI !=
nullptr)
325 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_DSSI, standalone.engineOptions.pathDSSI);
327 if (standalone.engineOptions.pathLV2 !=
nullptr)
328 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_LV2, standalone.engineOptions.pathLV2);
330 if (standalone.engineOptions.pathVST2 !=
nullptr)
331 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_VST2, standalone.engineOptions.pathVST2);
333 if (standalone.engineOptions.pathVST3 !=
nullptr)
334 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_VST3, standalone.engineOptions.pathVST3);
336 if (standalone.engineOptions.pathSF2 !=
nullptr)
337 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SF2, standalone.engineOptions.pathSF2);
339 if (standalone.engineOptions.pathSFZ !=
nullptr)
340 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_SFZ, standalone.engineOptions.pathSFZ);
342 if (standalone.engineOptions.pathJSFX !=
nullptr)
343 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_JSFX, standalone.engineOptions.pathJSFX);
345 if (standalone.engineOptions.pathCLAP !=
nullptr)
346 engine->setOption(CB::ENGINE_OPTION_PLUGIN_PATH, CB::PLUGIN_CLAP, standalone.engineOptions.pathCLAP);
348 if (standalone.engineOptions.binaryDir !=
nullptr && standalone.engineOptions.binaryDir[0] !=
'\0')
349 engine->setOption(CB::ENGINE_OPTION_PATH_BINARIES, 0, standalone.engineOptions.binaryDir);
353 if (standalone.engineOptions.resourceDir !=
nullptr && standalone.engineOptions.resourceDir[0] !=
'\0')
354 engine->setOption(CB::ENGINE_OPTION_PATH_RESOURCES, 0, standalone.engineOptions.resourceDir);
356 engine->setOption(CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR, standalone.engineOptions.preventBadBehaviour ? 1 : 0,
nullptr);
358 engine->setOption(CB::ENGINE_OPTION_FRONTEND_BACKGROUND_COLOR,
static_cast<int>(standalone.engineOptions.bgColor),
nullptr);
359 engine->setOption(CB::ENGINE_OPTION_FRONTEND_FOREGROUND_COLOR,
static_cast<int>(standalone.engineOptions.fgColor),
nullptr);
360 engine->setOption(CB::ENGINE_OPTION_FRONTEND_UI_SCALE,
static_cast<int>(standalone.engineOptions.uiScale * 1000.0f),
nullptr);
362 if (standalone.engineOptions.frontendWinId != 0)
367 engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0,
strBuf);
371 engine->setOption(CB::ENGINE_OPTION_FRONTEND_WIN_ID, 0,
"0");
375 if (standalone.engineOptions.wine.executable !=
nullptr && standalone.engineOptions.wine.executable[0] !=
'\0')
376 engine->setOption(CB::ENGINE_OPTION_WINE_EXECUTABLE, 0, standalone.engineOptions.wine.executable);
378 engine->setOption(CB::ENGINE_OPTION_WINE_AUTO_PREFIX, standalone.engineOptions.wine.autoPrefix ? 1 : 0,
nullptr);
380 if (standalone.engineOptions.wine.fallbackPrefix !=
nullptr && standalone.engineOptions.wine.fallbackPrefix[0] !=
'\0')
381 engine->setOption(CB::ENGINE_OPTION_WINE_FALLBACK_PREFIX, 0, standalone.engineOptions.wine.fallbackPrefix);
383 engine->setOption(CB::ENGINE_OPTION_WINE_RT_PRIO_ENABLED, standalone.engineOptions.wine.rtPrio ? 1 : 0,
nullptr);
384 engine->setOption(CB::ENGINE_OPTION_WINE_BASE_RT_PRIO, standalone.engineOptions.wine.baseRtPrio,
nullptr);
385 engine->setOption(CB::ENGINE_OPTION_WINE_SERVER_RT_PRIO, standalone.engineOptions.wine.serverRtPrio,
nullptr);
388 engine->setOption(CB::ENGINE_OPTION_CLIENT_NAME_PREFIX, 0, standalone.engineOptions.clientNamePrefix);
390 engine->setOption(CB::ENGINE_OPTION_PLUGINS_ARE_STANDALONE, standalone.engineOptions.pluginsAreStandalone,
nullptr);
398 carla_debug(
"carla_engine_init(%p, \"%s\", \"%s\")", handle, driverName, clientName);
404 carla_setenv(
"WINEASIO_CLIENT_NAME", clientName);
407#if defined(USING_JUCE) && !defined(BUILD_BRIDGE)
411 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
413 CarlaEngine*
const engine = CarlaEngine::newDriverByName(driverName);
416 shandle.engine = engine;
419 if (std::getenv(
"CARLA_BRIDGE_DUMMY") !=
nullptr)
422 engine->setOption(CB::ENGINE_OPTION_PROCESS_MODE, CB::ENGINE_PROCESS_MODE_CONTINUOUS_RACK,
nullptr);
423 engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE, CB::ENGINE_TRANSPORT_MODE_INTERNAL,
nullptr);
425 engine->setOption(CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE, 4096,
nullptr);
426 engine->setOption(CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE, 48000,
nullptr);
430 engine->setOption(CB::ENGINE_OPTION_PROCESS_MODE, CB::ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS,
nullptr);
431 engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE, CB::ENGINE_TRANSPORT_MODE_JACK,
nullptr);
433 engine->setOption(CB::ENGINE_OPTION_FORCE_STEREO,
false,
nullptr);
434 engine->setOption(CB::ENGINE_OPTION_PREFER_PLUGIN_BRIDGES,
false,
nullptr);
435 engine->setOption(CB::ENGINE_OPTION_PREFER_UI_BRIDGES,
false,
nullptr);
437 engine->setOption(CB::ENGINE_OPTION_PROCESS_MODE,
static_cast<int>(shandle.engineOptions.processMode),
nullptr);
438 engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE,
static_cast<int>(shandle.engineOptions.transportMode), shandle.engineOptions.transportExtra);
443 if (engine->init(clientName))
445#ifdef CARLA_CAN_USE_LOG_THREAD
446 if (shandle.logThreadEnabled && std::getenv(
"CARLA_LOGS_DISABLED") ==
nullptr)
447 shandle.logThread.init();
449 shandle.lastError =
"No error";
454 shandle.lastError = engine->getLastError();
455 shandle.engine =
nullptr;
457#if defined(USING_JUCE) && !defined(BUILD_BRIDGE)
466 const char audioBaseName[6+1],
467 const char rtClientBaseName[6+1],
468 const char nonRtClientBaseName[6+1],
469 const char nonRtServerBaseName[6+1],
470 const char*
const clientName)
477 carla_debug(
"carla_engine_init_bridge(%p, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\")",
478 handle, audioBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName, clientName);
483 CarlaScopedPointer<CarlaEngine> engine(CB::EngineInit::newBridge(audioBaseName,
486 nonRtServerBaseName));
490 engine->setOption(CB::ENGINE_OPTION_PROCESS_MODE, CB::ENGINE_PROCESS_MODE_BRIDGE,
nullptr);
491 engine->setOption(CB::ENGINE_OPTION_TRANSPORT_MODE, CB::ENGINE_TRANSPORT_MODE_BRIDGE,
nullptr);
493 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
497 if (engine->init(clientName))
499 shandle.lastError =
"No error";
500 shandle.engine = engine.release();
505 shandle.lastError = engine->getLastError();
513 carla_debug(
"carla_engine_close(%p)", handle);
518 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
520 CarlaEngine*
const engine = shandle.engine;
522 engine->setAboutToClose();
523 engine->removeAllPlugins();
525 const bool closed = engine->close();
528 shandle.lastError = engine->getLastError();
530#ifdef CARLA_CAN_USE_LOG_THREAD
531 shandle.logThread.stop();
534 shandle.engine =
nullptr;
537#if defined(USING_JUCE) && !defined(BUILD_BRIDGE)
547 handle->engine->idle();
549#if defined(USING_JUCE) && !defined(BUILD_BRIDGE)
550 if (handle->isStandalone)
557 return (handle->engine !=
nullptr && handle->engine->isRunning());
570 retInfo.
load = handle->engine->getDSPLoad();
571 retInfo.
xruns = handle->engine->getTotalXruns();
589 const char* audioDriver;
590 const char* audioDevice;
592 if (CarlaEngine*
const engine = handle->engine)
594 audioDriver = engine->getCurrentDriverName();
595 audioDevice = engine->getOptions().audioDevice;
600 else if (handle->isStandalone)
602 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
604 audioDriver = shandle.engineOptions.audioDriver;
605 audioDevice = shandle.engineOptions.audioDevice;
607 retInfo.
bufferSize = shandle.engineOptions.audioBufferSize;
608 retInfo.
sampleRate = shandle.engineOptions.audioSampleRate;
618 uint count = CarlaEngine::getDriverCount();
619 for (; index<
count; ++index)
621 const char*
const testDriverName = CarlaEngine::getDriverName(index);
624 if (std::strcmp(testDriverName, audioDriver) == 0)
632 retInfo.
name = audioDevice;
643 carla_debug(
"carla_set_engine_buffer_size_and_sample_rate(%p, %u, %f)", handle, bufferSize, sampleRate);
645 return handle->engine->setBufferSizeAndSampleRate(bufferSize, sampleRate);
651 carla_debug(
"carla_show_engine_device_control_panel(%p)", handle);
653 return handle->engine->showDeviceControlPanel();
659 if (handle->engine !=
nullptr)
660 handle->engine->clearXruns();
665 if (handle->engine !=
nullptr)
666 handle->engine->setActionCanceled(
true);
672 carla_debug(
"carla_set_engine_about_to_close(%p)", handle);
674 return handle->engine->setAboutToClose();
679 carla_debug(
"carla_set_engine_callback(%p, %p, %p)", handle, func, ptr);
681 if (handle->isStandalone)
683 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
685 shandle.engineCallback = func;
686 shandle.engineCallbackPtr = ptr;
688#ifdef CARLA_CAN_USE_LOG_THREAD
689 shandle.logThread.setCallback(func, ptr);
693 if (handle->engine !=
nullptr)
694 handle->engine->setCallback(func, ptr);
699 carla_debug(
"carla_set_engine_option(%p, %i:%s, %i, \"%s\")",
702 if (handle->isStandalone)
704 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
708 case CB::ENGINE_OPTION_DEBUG:
711 case CB::ENGINE_OPTION_PROCESS_MODE:
713 shandle.engineOptions.processMode =
static_cast<CB::EngineProcessMode
>(
value);
716 case CB::ENGINE_OPTION_TRANSPORT_MODE:
720 if (shandle.engineOptions.processMode == CB::ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS
721 &&
value != CB::ENGINE_TRANSPORT_MODE_JACK)
723 shandle.engineOptions.transportMode = CB::ENGINE_TRANSPORT_MODE_JACK;
725 if (shandle.engineCallback !=
nullptr)
726 shandle.engineCallback(shandle.engineCallbackPtr,
727 CB::ENGINE_CALLBACK_TRANSPORT_MODE_CHANGED,
729 CB::ENGINE_TRANSPORT_MODE_JACK,
731 shandle.engineOptions.transportExtra);
735 shandle.engineOptions.transportMode =
static_cast<CB::EngineTransportMode
>(
value);
738 delete[] shandle.engineOptions.transportExtra;
739 if (
value != CB::ENGINE_TRANSPORT_MODE_DISABLED && valueStr !=
nullptr)
740 shandle.engineOptions.transportExtra = carla_strdup_safe(valueStr);
742 shandle.engineOptions.transportExtra =
nullptr;
745 case CB::ENGINE_OPTION_FORCE_STEREO:
747 shandle.engineOptions.forceStereo = (
value != 0);
750 case CB::ENGINE_OPTION_PREFER_PLUGIN_BRIDGES:
752 shandle.engineOptions.preferPluginBridges = (
value != 0);
755 case CB::ENGINE_OPTION_PREFER_UI_BRIDGES:
757 shandle.engineOptions.preferUiBridges = (
value != 0);
760 case CB::ENGINE_OPTION_UIS_ALWAYS_ON_TOP:
762 shandle.engineOptions.uisAlwaysOnTop = (
value != 0);
765 case CB::ENGINE_OPTION_MAX_PARAMETERS:
767 shandle.engineOptions.maxParameters =
static_cast<uint>(
value);
770 case CB::ENGINE_OPTION_RESET_XRUNS:
772 shandle.engineOptions.resetXruns = (
value != 0);
775 case CB::ENGINE_OPTION_UI_BRIDGES_TIMEOUT:
777 shandle.engineOptions.uiBridgesTimeout =
static_cast<uint>(
value);
780 case CB::ENGINE_OPTION_AUDIO_BUFFER_SIZE:
782 shandle.engineOptions.audioBufferSize =
static_cast<uint>(
value);
785 case CB::ENGINE_OPTION_AUDIO_SAMPLE_RATE:
787 shandle.engineOptions.audioSampleRate =
static_cast<uint>(
value);
790 case CB::ENGINE_OPTION_AUDIO_TRIPLE_BUFFER:
792 shandle.engineOptions.audioTripleBuffer = (
value != 0);
795 case CB::ENGINE_OPTION_AUDIO_DRIVER:
798 if (shandle.engineOptions.audioDriver !=
nullptr)
799 delete[] shandle.engineOptions.audioDriver;
801 shandle.engineOptions.audioDriver = carla_strdup_safe(valueStr);
804 case CB::ENGINE_OPTION_AUDIO_DEVICE:
807 if (shandle.engineOptions.audioDevice !=
nullptr)
808 delete[] shandle.engineOptions.audioDevice;
810 shandle.engineOptions.audioDevice = carla_strdup_safe(valueStr);
814 case CB::ENGINE_OPTION_OSC_ENABLED:
816 shandle.engineOptions.oscEnabled = (
value != 0);
819 case CB::ENGINE_OPTION_OSC_PORT_TCP:
821 shandle.engineOptions.oscPortTCP =
value;
824 case CB::ENGINE_OPTION_OSC_PORT_UDP:
826 shandle.engineOptions.oscPortUDP =
value;
830 case CB::ENGINE_OPTION_FILE_PATH:
838 if (shandle.engineOptions.pathAudio !=
nullptr)
839 delete[] shandle.engineOptions.pathAudio;
840 shandle.engineOptions.pathAudio = carla_strdup_safe(valueStr);
843 if (shandle.engineOptions.pathMIDI !=
nullptr)
844 delete[] shandle.engineOptions.pathMIDI;
845 shandle.engineOptions.pathMIDI = carla_strdup_safe(valueStr);
850 case CB::ENGINE_OPTION_PLUGIN_PATH:
857 case CB::PLUGIN_LADSPA:
858 if (shandle.engineOptions.pathLADSPA !=
nullptr)
859 delete[] shandle.engineOptions.pathLADSPA;
860 shandle.engineOptions.pathLADSPA = carla_strdup_safe(valueStr);
862 case CB::PLUGIN_DSSI:
863 if (shandle.engineOptions.pathDSSI !=
nullptr)
864 delete[] shandle.engineOptions.pathDSSI;
865 shandle.engineOptions.pathDSSI = carla_strdup_safe(valueStr);
868 if (shandle.engineOptions.pathLV2 !=
nullptr)
869 delete[] shandle.engineOptions.pathLV2;
870 shandle.engineOptions.pathLV2 = carla_strdup_safe(valueStr);
872 case CB::PLUGIN_VST2:
873 if (shandle.engineOptions.pathVST2 !=
nullptr)
874 delete[] shandle.engineOptions.pathVST2;
875 shandle.engineOptions.pathVST2 = carla_strdup_safe(valueStr);
877 case CB::PLUGIN_VST3:
878 if (shandle.engineOptions.pathVST3 !=
nullptr)
879 delete[] shandle.engineOptions.pathVST3;
880 shandle.engineOptions.pathVST3 = carla_strdup_safe(valueStr);
883 if (shandle.engineOptions.pathSF2 !=
nullptr)
884 delete[] shandle.engineOptions.pathSF2;
885 shandle.engineOptions.pathSF2 = carla_strdup_safe(valueStr);
888 if (shandle.engineOptions.pathSFZ !=
nullptr)
889 delete[] shandle.engineOptions.pathSFZ;
890 shandle.engineOptions.pathSFZ = carla_strdup_safe(valueStr);
892 case CB::PLUGIN_JSFX:
893 if (shandle.engineOptions.pathJSFX !=
nullptr)
894 delete[] shandle.engineOptions.pathJSFX;
895 shandle.engineOptions.pathJSFX = carla_strdup_safe(valueStr);
897 case CB::PLUGIN_CLAP:
898 if (shandle.engineOptions.pathCLAP !=
nullptr)
899 delete[] shandle.engineOptions.pathCLAP;
900 shandle.engineOptions.pathCLAP = carla_strdup_safe(valueStr);
905 case CB::ENGINE_OPTION_PATH_BINARIES:
908 if (shandle.engineOptions.binaryDir !=
nullptr)
909 delete[] shandle.engineOptions.binaryDir;
911 shandle.engineOptions.binaryDir = carla_strdup_safe(valueStr);
914 case CB::ENGINE_OPTION_PATH_RESOURCES:
917 if (shandle.engineOptions.resourceDir !=
nullptr)
918 delete[] shandle.engineOptions.resourceDir;
920 shandle.engineOptions.resourceDir = carla_strdup_safe(valueStr);
923 case CB::ENGINE_OPTION_PREVENT_BAD_BEHAVIOUR:
925 shandle.engineOptions.preventBadBehaviour = (
value != 0);
928 case CB::ENGINE_OPTION_FRONTEND_BACKGROUND_COLOR:
929 shandle.engineOptions.bgColor =
static_cast<uint>(
value);
932 case CB::ENGINE_OPTION_FRONTEND_FOREGROUND_COLOR:
933 shandle.engineOptions.fgColor =
static_cast<uint>(
value);
936 case CB::ENGINE_OPTION_FRONTEND_UI_SCALE:
938 shandle.engineOptions.uiScale =
static_cast<float>(
value) / 1000;
941 case CB::ENGINE_OPTION_FRONTEND_WIN_ID: {
943 const long long winId(std::strtoll(valueStr,
nullptr, 16));
945 shandle.engineOptions.frontendWinId =
static_cast<uintptr_t
>(winId);
948#if !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) && !defined(CARLA_OS_WIN)
949 case CB::ENGINE_OPTION_WINE_EXECUTABLE:
952 if (shandle.engineOptions.wine.executable !=
nullptr)
953 delete[] shandle.engineOptions.wine.executable;
955 shandle.engineOptions.wine.executable = carla_strdup_safe(valueStr);
958 case CB::ENGINE_OPTION_WINE_AUTO_PREFIX:
960 shandle.engineOptions.wine.autoPrefix = (
value != 0);
963 case CB::ENGINE_OPTION_WINE_FALLBACK_PREFIX:
966 if (shandle.engineOptions.wine.fallbackPrefix !=
nullptr)
967 delete[] shandle.engineOptions.wine.fallbackPrefix;
969 shandle.engineOptions.wine.fallbackPrefix = carla_strdup_safe(valueStr);
972 case CB::ENGINE_OPTION_WINE_RT_PRIO_ENABLED:
974 shandle.engineOptions.wine.rtPrio = (
value != 0);
977 case CB::ENGINE_OPTION_WINE_BASE_RT_PRIO:
979 shandle.engineOptions.wine.baseRtPrio =
value;
982 case CB::ENGINE_OPTION_WINE_SERVER_RT_PRIO:
984 shandle.engineOptions.wine.serverRtPrio =
value;
989 case CB::ENGINE_OPTION_DEBUG_CONSOLE_OUTPUT:
990#ifdef CARLA_CAN_USE_LOG_THREAD
991 shandle.logThreadEnabled = (
value != 0);
996 case CB::ENGINE_OPTION_CLIENT_NAME_PREFIX:
997 if (shandle.engineOptions.clientNamePrefix !=
nullptr)
998 delete[] shandle.engineOptions.clientNamePrefix;
1000 shandle.engineOptions.clientNamePrefix = valueStr !=
nullptr && valueStr[0] !=
'\0'
1001 ? carla_strdup_safe(valueStr)
1005 case CB::ENGINE_OPTION_PLUGINS_ARE_STANDALONE:
1007 shandle.engineOptions.pluginsAreStandalone = (
value != 0);
1012 if (handle->engine !=
nullptr)
1013 handle->engine->setOption(
option,
value, valueStr);
1018 carla_debug(
"carla_set_file_callback(%p, %p, %p)", handle, func, ptr);
1020 if (handle->isStandalone)
1022 CarlaHostStandalone& shandle((CarlaHostStandalone&)*handle);
1024 shandle.fileCallback = func;
1025 shandle.fileCallbackPtr = ptr;
1028 if (handle->engine !=
nullptr)
1029 handle->engine->setFileCallback(func, ptr);
1039 carla_debug(
"carla_load_file(%p, \"%s\")", handle,
filename);
1041 return handle->engine->loadFile(
filename);
1049 carla_debug(
"carla_load_project(%p, \"%s\")", handle,
filename);
1051 return handle->engine->loadProject(
filename,
true);
1059 carla_debug(
"carla_save_project(%p, \"%s\")", handle,
filename);
1061 return handle->engine->saveProject(
filename,
true);
1069 carla_debug(
"carla_get_current_project_folder(%p)", handle);
1071 if (
const char*
const ret = handle->engine->getCurrentProjectFolder())
1081 carla_debug(
"carla_get_current_project_filename(%p)", handle);
1083 if (
const char*
const ret = handle->engine->getCurrentProjectFilename())
1093 carla_debug(
"carla_clear_project_filename(%p)", handle);
1095 handle->engine->clearCurrentProjectFilename();
1104 carla_debug(
"carla_patchbay_connect(%p, %s, %u, %u, %u, %u)",
1105 handle, bool2str(external), groupIdA, portIdA, groupIdB, portIdB);
1107 return handle->engine->patchbayConnect(external, groupIdA, portIdA, groupIdB, portIdB);
1114 carla_debug(
"carla_patchbay_disconnect(%p, %s, %i)", handle, bool2str(external), connectionId);
1116 return handle->engine->patchbayDisconnect(external, connectionId);
1122 "Engine is not running",
false);
1124 carla_debug(
"carla_patchbay_set_group_pos(%p, %s, %u, %i, %i, %i, %i)",
1125 handle, bool2str(external), groupId, x1, y1, x2, y2);
1127 if (handle->engine->isAboutToClose())
1130 return handle->engine->patchbaySetGroupPos(
false,
true, external, groupId, x1, y1, x2, y2);
1137 carla_debug(
"carla_patchbay_refresh(%p, %s)", handle, bool2str(external));
1139 return handle->engine->patchbayRefresh(
true,
false, external);
1148 carla_debug(
"carla_transport_play(%p)", handle);
1150 handle->engine->transportPlay();
1157 carla_debug(
"carla_transport_pause(%p)", handle);
1159 handle->engine->transportPause();
1166 carla_debug(
"carla_transport_bpm(%p, %f)", handle, bpm);
1168 handle->engine->transportBPM(bpm);
1175 carla_debug(
"carla_transport_relocate(%p, %i)", handle, frame);
1177 handle->engine->transportRelocate(frame);
1184 return handle->engine->getTimeInfo().frame;
1190 retTransInfo.clear();
1194 const CB::EngineTimeInfo& timeInfo(handle->engine->getTimeInfo());
1196 retTransInfo.
playing = timeInfo.playing;
1197 retTransInfo.
frame = timeInfo.frame;
1199 if (timeInfo.bbt.valid)
1201 retTransInfo.
bar = timeInfo.bbt.bar;
1202 retTransInfo.
beat = timeInfo.bbt.beat;
1203 retTransInfo.
tick =
static_cast<int32_t>(timeInfo.bbt.tick + 0.5);
1204 retTransInfo.
bpm = timeInfo.bbt.beatsPerMinute;
1207 return &retTransInfo;
1220 return handle->engine->getCurrentPluginCount();
1227 carla_debug(
"carla_get_max_plugin_number(%p)", handle);
1229 return handle->engine->getMaxPluginNumber();
1236 const char*
filename,
const char*
name,
const char* label, int64_t uniqueId,
1237 const void* extraPtr,
uint options)
1241 carla_debug(
"carla_add_plugin(%p, %i:%s, %i:%s, \"%s\", \"%s\", \"%s\", " P_INT64 ", %p, %u)",
1243 btype, CB::BinaryType2Str(btype),
1244 ptype, CB::PluginType2Str(ptype),
1247 return handle->engine->addPlugin(btype, ptype,
filename,
name, label, uniqueId, extraPtr, options);
1254 carla_debug(
"carla_remove_plugin(%p, %i)", handle, pluginId);
1256 return handle->engine->removePlugin(pluginId);
1263 carla_debug(
"carla_remove_all_plugins(%p)", handle);
1265 return handle->engine->removeAllPlugins();
1274 carla_debug(
"carla_rename_plugin(%p, %i, \"%s\")", handle, pluginId, newName);
1276 return handle->engine->renamePlugin(pluginId, newName);
1283 carla_debug(
"carla_clone_plugin(%p, %i)", handle, pluginId);
1285 return handle->engine->clonePlugin(pluginId);
1292 carla_debug(
"carla_replace_plugin(%p, %i)", handle, pluginId);
1294 return handle->engine->replacePlugin(pluginId);
1302 carla_debug(
"carla_switch_plugins(%p, %i, %i)", handle, pluginIdA, pluginIdB);
1304 return handle->engine->switchPlugins(pluginIdA, pluginIdB);
1314 && handle->engine->isRunning(),
"Engine is not running",
false);
1316 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1317 return plugin->loadStateFromFile(
filename);
1327 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1328 return plugin->saveStateToFile(
filename);
1333#ifndef CARLA_PLUGIN_ONLY_BRIDGE
1339 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1340 return plugin->exportAsLV2(lv2path);
1353 retInfo.
type = CB::PLUGIN_NONE;
1354 retInfo.
category = CB::PLUGIN_CATEGORY_NONE;
1355 retInfo.
hints = 0x0;
1366 delete[] retInfo.
label;
1372 delete[] retInfo.
maker;
1384 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1389 retInfo.
type = plugin->getType();
1390 retInfo.
category = plugin->getCategory();
1391 retInfo.
hints = plugin->getHints();
1392 retInfo.
filename = plugin->getFilename();
1393 retInfo.
name = plugin->getName();
1394 retInfo.
iconName = plugin->getIconName();
1395 retInfo.
uniqueId = plugin->getUniqueId();
1400 if (plugin->getLabel(
strBuf))
1402 if (plugin->getMaker(
strBuf))
1404 if (plugin->getCopyright(
strBuf))
1421 carla_zeroStruct(retInfo);
1425 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1427 retInfo.
ins = plugin->getAudioInCount();
1428 retInfo.
outs = plugin->getAudioOutCount();
1437 carla_zeroStruct(retInfo);
1441 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1443 retInfo.
ins = plugin->getMidiInCount();
1444 retInfo.
outs = plugin->getMidiOutCount();
1453 carla_zeroStruct(retInfo);
1457 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1458 plugin->getParameterCountInfo(retInfo.
ins, retInfo.
outs);
1473 delete[] retInfo.
name;
1485 delete[] retInfo.
unit;
1503 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1508 retInfo.
scalePointCount = plugin->getParameterScalePointCount(parameterId);
1510 if (plugin->getParameterName(parameterId,
strBuf))
1516 if (plugin->getParameterSymbol(parameterId,
strBuf))
1522 if (plugin->getParameterUnit(parameterId,
strBuf))
1528 if (plugin->getParameterComment(parameterId,
strBuf))
1534 if (plugin->getParameterGroupName(parameterId,
strBuf))
1560 retInfo.
value = 0.0f;
1565 delete[] retInfo.
label;
1571 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1575 retInfo.
value = plugin->getParameterScalePointValue(parameterId, scalePointId);
1578 if (plugin->getParameterScalePointLabel(parameterId, scalePointId,
strBuf))
1593 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1597 return plugin->getAudioPortHints(isOutput, portIndex);
1610 retParamData.
type = CB::PARAMETER_UNKNOWN;
1611 retParamData.
hints = 0x0;
1612 retParamData.
index = CB::PARAMETER_NULL;
1613 retParamData.
rindex = -1;
1621 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1625 const ParameterData& pluginParamData(plugin->getParameterData(parameterId));
1626 retParamData.
type = pluginParamData.
type;
1636 return &retParamData;
1644 retParamRanges.
def = 0.0f;
1645 retParamRanges.
min = 0.0f;
1646 retParamRanges.
max = 1.0f;
1647 retParamRanges.
step = 0.01f;
1653 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1657 const ParameterRanges& pluginParamRanges(plugin->getParameterRanges(parameterId));
1658 retParamRanges.
def = pluginParamRanges.
def;
1659 retParamRanges.
min = pluginParamRanges.
min;
1660 retParamRanges.
max = pluginParamRanges.
max;
1661 retParamRanges.
step = pluginParamRanges.
step;
1666 return &retParamRanges;
1674 retMidiProgData.
bank = 0;
1679 delete[] retMidiProgData.
name;
1685 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1689 const MidiProgramData& pluginMidiProgData(plugin->getMidiProgramData(midiProgramId));
1690 retMidiProgData.
bank = pluginMidiProgData.
bank;
1693 if (pluginMidiProgData.
name !=
nullptr)
1695 retMidiProgData.
name = carla_strdup_safe(pluginMidiProgData.
name);
1704 return &retMidiProgData;
1714 delete[] retCustomData.
type;
1720 delete[] retCustomData.
key;
1726 delete[] retCustomData.
value;
1732 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1736 const CustomData& pluginCustomData(plugin->getCustomData(customDataId));
1737 retCustomData.
type = carla_strdup_safe(pluginCustomData.
type);
1738 retCustomData.
key = carla_strdup_safe(pluginCustomData.
key);
1739 retCustomData.
value = carla_strdup_safe(pluginCustomData.
value);
1745 return &retCustomData;
1754 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1761 static CarlaString customDataValue;
1765 const CustomData& pluginCustomData(plugin->getCustomData(
i));
1767 if (std::strcmp(pluginCustomData.
type,
type) != 0)
1769 if (std::strcmp(pluginCustomData.
key,
key) != 0)
1772 customDataValue = pluginCustomData.
value;
1773 return customDataValue.buffer();
1784 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1788 void*
data =
nullptr;
1789 const std::size_t dataSize(plugin->getChunkData(&
data));
1792 static CarlaString chunkData;
1794 chunkData = CarlaString::asBase64(
data,
static_cast<std::size_t
>(dataSize));
1795 return chunkData.buffer();
1807 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1808 return plugin->getParameterCount();
1817 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1818 return plugin->getProgramCount();
1827 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1828 return plugin->getMidiProgramCount();
1837 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1838 return plugin->getCustomDataCount();
1849 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1853 static char textBuf[
STR_MAX+1];
1854 carla_zeroChars(textBuf,
STR_MAX+1);
1856 if (! plugin->getParameterText(parameterId, textBuf))
1869 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1873 static char programName[
STR_MAX+1];
1874 carla_zeroChars(programName,
STR_MAX+1);
1876 if (! plugin->getProgramName(programId, programName))
1877 programName[0] =
'\0';
1889 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1893 static char midiProgramName[
STR_MAX+1];
1894 carla_zeroChars(midiProgramName,
STR_MAX+1);
1896 if (! plugin->getMidiProgramName(midiProgramId, midiProgramName))
1897 midiProgramName[0] =
'\0';
1899 return midiProgramName;
1909 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1911 static char realPluginName[
STR_MAX+1];
1912 carla_zeroChars(realPluginName,
STR_MAX+1);
1914 if (! plugin->getRealName(realPluginName))
1915 realPluginName[0] =
'\0';
1917 return realPluginName;
1929 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1930 return plugin->getCurrentProgram();
1939 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1940 return plugin->getCurrentMidiProgram();
1951 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1955 return plugin->getParameterRanges(parameterId).def;
1965 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1969 return plugin->getParameterValue(parameterId);
1977#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
1984 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1985 return plugin->getInternalParameterValue(parameterId);
1996 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
1997 return plugin->getLatencyInFrames();
2008 return handle->engine->getPeaks(pluginId);
2015 return handle->engine->getInputPeak(pluginId, isLeft);
2022 return handle->engine->getOutputPeak(pluginId, isLeft);
2027CARLA_BACKEND_START_NAMESPACE
2029#if !(defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) || defined(CARLA_PLUGIN_ONLY_BRIDGE))
2034#ifndef CARLA_PLUGIN_ONLY_BRIDGE
2039CARLA_BACKEND_END_NAMESPACE
2047 if (handle->engine->isAboutToClose())
2050 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2052 switch (plugin->getType())
2054#if !(defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) || defined(CARLA_PLUGIN_ONLY_BRIDGE))
2055 case CB::PLUGIN_INTERNAL:
2058#ifndef CARLA_PLUGIN_ONLY_BRIDGE
2059 case CB::PLUGIN_LV2:
2080 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2081 plugin->setActive(onOff,
true,
false);
2089 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2090 plugin->setDryWet(
value,
true,
false);
2097 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2098 plugin->setVolume(
value,
true,
false);
2105 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2106 plugin->setBalanceLeft(
value,
true,
false);
2113 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2114 plugin->setBalanceRight(
value,
true,
false);
2121 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2122 plugin->setPanning(
value,
true,
false);
2130 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2131 plugin->setCtrlChannel(channel,
true,
false);
2139 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2140 plugin->setOption(
option, yesNo,
false);
2149 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2153 plugin->setParameterValue(parameterId,
value,
true,
true,
false);
2164 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2168 plugin->setParameterMidiChannel(parameterId, channel,
true,
false);
2177 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2181 plugin->setParameterMappedControlIndex(parameterId, index,
true,
false,
true);
2189 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2193 plugin->setParameterMappedRange(parameterId, minimum, maximum,
true,
false);
2201 carla_debug(
"carla_set_parameter_touch(%p, %i, %i, %s)", handle, pluginId, parameterId, bool2str(touch));
2202 return handle->engine->touchPluginParameter(pluginId, parameterId, touch);
2212 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2216 plugin->setProgram(
static_cast<int32_t>(programId),
true,
true,
false);
2224 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2228 plugin->setMidiProgram(
static_cast<int32_t>(midiProgramId),
true,
true,
false);
2241 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2250 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2254 std::vector<uint8_t> chunk(carla_getChunkFromBase64String(chunkData));
2255#ifdef CARLA_PROPER_CPP11_SUPPORT
2256 plugin->setChunkData(chunk.data(), chunk.size());
2258 plugin->setChunkData(&chunk.front(), chunk.size());
2269 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2270 plugin->prepareForSave(
false);
2277 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2278 plugin->resetParameters();
2285 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2286 plugin->randomizeParameters();
2294 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2295 plugin->sendMidiSingleNote(channel, note, velocity,
true,
true,
false);
2304 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2305 plugin->setCustomUITitle(
title);
2312 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2313 plugin->showCustomUI(yesNo);
2320 if (
const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId))
2321 return plugin->embedCustomUI(ptr);
2332 carla_debug(
"carla_get_buffer_size(%p)", handle);
2333 return handle->engine->getBufferSize();
2340 carla_debug(
"carla_get_sample_rate(%p)", handle);
2341 return handle->engine->getSampleRate();
2348 carla_debug(
"carla_get_last_error(%p)", handle);
2350 if (handle->engine !=
nullptr)
2351 return handle->engine->getLastError();
2353 return handle->isStandalone
2354 ? ((CarlaHostStandalone*)handle)->lastError.buffer()
2360 carla_debug(
"carla_get_host_osc_url_tcp(%p)", handle);
2362#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE)
2363 if (handle->engine ==
nullptr)
2365 carla_stderr2(
"carla_get_host_osc_url_tcp() failed, engine is not running");
2366 if (handle->isStandalone)
2367 ((CarlaHostStandalone*)handle)->lastError =
"Engine is not running";
2371 const char*
const path = handle->engine->getOscServerPathTCP();
2373 if (path !=
nullptr && path[0] !=
'\0')
2376 static const char*
const notAvailable =
"(OSC TCP port not available)";
2377 return notAvailable;
2379 return "(OSC support not available in this build)";
2388 carla_debug(
"carla_get_host_osc_url_udp(%p)", handle);
2390#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE)
2391 if (handle->engine ==
nullptr)
2393 carla_stderr2(
"carla_get_host_osc_url_udp() failed, engine is not running");
2394 if (handle->isStandalone)
2395 ((CarlaHostStandalone*)handle)->lastError =
"Engine is not running";
2399 const char*
const path = handle->engine->getOscServerPathUDP();
2401 if (path !=
nullptr && path[0] !=
'\0')
2404 static const char*
const notAvailable =
"(OSC UDP port not available)";
2405 return notAvailable;
2407 return "(OSC support not available in this build)";
2416#ifndef CARLA_PLUGIN_BUILD
2417# define CARLA_PLUGIN_UI_CLASS_PREFIX Standalone
2419# undef CARLA_PLUGIN_UI_CLASS_PREFIX
2423# include "CarlaPipeUtils.cpp"
#define STR_MAX
Definition CarlaBackend.h:29
#define CARLA_SAFE_ASSERT_CONTINUE(cond)
Definition CarlaDefines.h:189
#define CARLA_SAFE_ASSERT_RETURN(cond, ret)
Definition CarlaDefines.h:190
unsigned int uint
Definition CarlaDefines.h:327
#define P_UINTPTR
Definition CarlaDefines.h:139
#define P_INT64
Definition CarlaDefines.h:136
#define CARLA_ASSERT(cond)
Definition CarlaDefines.h:176
#define MAX_MIDI_CHANNELS
Definition CarlaMIDI.h:21
CarlaEngine * carla_get_engine_from_handle(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:204
static void checkStringPtr(const char *&charPtr) noexcept
Definition CarlaStandalone.cpp:50
static void carla_engine_init_common(const CarlaHostStandalone &standalone, CarlaEngine *const engine)
Definition CarlaStandalone.cpp:213
const void * carla_render_inline_display_lv2(const CarlaPluginPtr &plugin, uint32_t width, uint32_t height)
Definition CarlaPluginLV2.cpp:8472
#define CARLA_SAFE_ASSERT_WITH_LAST_ERROR_RETURN(cond, msg, ret)
Definition CarlaStandalone.cpp:37
static const char *const gNullCharPtr
Definition CarlaStandalone.cpp:48
CARLA_BACKEND_START_NAMESPACE const void * carla_render_inline_display_internal(const CarlaPluginPtr &plugin, uint32_t width, uint32_t height)
Definition CarlaPluginNative.cpp:3189
#define noexcept
Definition DistrhoDefines.h:72
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static void copyright()
Definition adplugdb.cpp:261
static char strBuf[kStrBufSize+1]
Definition buffers.cpp:40
@ currentExecutableFile
Definition File.h:649
File getChildFile(StringRef relativeOrAbsolutePath) const
Definition File.cpp:418
const String & getFullPathName() const noexcept
Definition File.h:152
static File getSpecialLocation(const SpecialLocationType type)
Definition File.cpp:1642
const String & getFullPathName() const noexcept
Definition File.h:152
const char * toRawUTF8() const
Definition String.cpp:1925
register unsigned i
Definition inflate.c:1575
unsigned f
Definition inflate.c:1572
static char filename[]
Definition features.c:5
void(* EngineCallbackFunc)(void *ptr, EngineCallbackOpcode action, uint pluginId, int value1, int value2, int value3, float valuef, const char *valueStr)
Definition CarlaBackend.h:1710
const char *(* FileCallbackFunc)(void *ptr, FileCallbackOpcode action, bool isDir, const char *title, const char *filter)
Definition CarlaBackend.h:1718
PluginType
Definition CarlaBackend.h:614
BinaryType
Definition CarlaBackend.h:550
struct _ParameterRanges ParameterRanges
EngineOption
Definition CarlaBackend.h:1333
struct _CustomData CustomData
Definition CarlaStateUtils.cpp:153
@ PLUGIN_NONE
Definition CarlaBackend.h:618
@ PLUGIN_CATEGORY_NONE
Definition CarlaBackend.h:708
void carla_set_file_callback(CarlaHostHandle handle, FileCallbackFunc func, void *ptr)
Definition CarlaStandalone.cpp:1016
const ParameterData * carla_get_parameter_data(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1605
void carla_set_engine_callback(CarlaHostHandle handle, EngineCallbackFunc func, void *ptr)
Definition CarlaStandalone.cpp:677
bool carla_clone_plugin(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1279
void carla_set_option(CarlaHostHandle handle, uint pluginId, uint option, bool yesNo)
Definition CarlaStandalone.cpp:2135
const char * carla_get_host_osc_url_udp(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:2386
const char * carla_get_current_project_folder(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1065
const CustomData * carla_get_custom_data(CarlaHostHandle handle, uint pluginId, uint32_t customDataId)
Definition CarlaStandalone.cpp:1707
const float * carla_get_peak_values(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:2004
const CarlaTransportInfo * carla_get_transport_info(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1187
struct _CarlaScalePointInfo CarlaScalePointInfo
const EngineDriverDeviceInfo * carla_get_engine_driver_device_info(uint index, const char *name)
Definition CarlaStandalone.cpp:160
void carla_set_volume(CarlaHostHandle handle, uint pluginId, float value)
Definition CarlaStandalone.cpp:2093
bool carla_engine_close(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:511
struct _CarlaParameterInfo CarlaParameterInfo
void carla_set_engine_option(CarlaHostHandle handle, EngineOption option, int value, const char *valueStr)
Definition CarlaStandalone.cpp:697
const CarlaPortCountInfo * carla_get_parameter_count_info(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1450
void carla_set_ctrl_channel(CarlaHostHandle handle, uint pluginId, int8_t channel)
Definition CarlaStandalone.cpp:2125
bool carla_load_plugin_state(CarlaHostHandle handle, uint pluginId, const char *filename)
Definition CarlaStandalone.cpp:1310
const char * carla_get_current_project_filename(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1077
void carla_set_program(CarlaHostHandle handle, uint pluginId, uint32_t programId)
Definition CarlaStandalone.cpp:2208
const ParameterRanges * carla_get_parameter_ranges(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1639
float carla_get_current_parameter_value(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1961
float carla_get_default_parameter_value(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1947
void carla_prepare_for_save(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:2265
void carla_transport_bpm(CarlaHostHandle handle, double bpm)
Definition CarlaStandalone.cpp:1162
bool carla_patchbay_disconnect(CarlaHostHandle handle, bool external, uint connectionId)
Definition CarlaStandalone.cpp:1110
CarlaHostHandle carla_standalone_host_init(void)
Definition CarlaStandalone.cpp:193
CARLA_BACKEND_END_NAMESPACE const CarlaInlineDisplayImageSurface * carla_render_inline_display(CarlaHostHandle handle, uint pluginId, uint32_t width, uint32_t height)
Definition CarlaStandalone.cpp:2041
const char *const * carla_get_engine_driver_device_names(uint index)
Definition CarlaStandalone.cpp:153
int32_t carla_get_current_program_index(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1925
void carla_set_custom_ui_title(CarlaHostHandle handle, uint pluginId, const char *title)
Definition CarlaStandalone.cpp:2299
bool carla_patchbay_refresh(CarlaHostHandle handle, bool external)
Definition CarlaStandalone.cpp:1133
bool carla_rename_plugin(CarlaHostHandle handle, uint pluginId, const char *newName)
Definition CarlaStandalone.cpp:1269
float carla_get_input_peak_value(CarlaHostHandle handle, uint pluginId, bool isLeft)
Definition CarlaStandalone.cpp:2011
void carla_reset_parameters(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:2273
const char * carla_get_real_plugin_name(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1905
bool carla_save_plugin_state(CarlaHostHandle handle, uint pluginId, const char *filename)
Definition CarlaStandalone.cpp:1322
void carla_set_parameter_mapped_range(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, float minimum, float maximum)
Definition CarlaStandalone.cpp:2185
bool carla_load_project(CarlaHostHandle handle, const char *filename)
Definition CarlaStandalone.cpp:1044
void carla_cancel_engine_action(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:663
void carla_transport_relocate(CarlaHostHandle handle, uint64_t frame)
Definition CarlaStandalone.cpp:1171
bool carla_patchbay_connect(CarlaHostHandle handle, bool external, uint groupIdA, uint portIdA, uint groupIdB, uint portIdB)
Definition CarlaStandalone.cpp:1100
struct _CarlaHostHandle * CarlaHostHandle
Definition CarlaHost.h:354
bool carla_export_plugin_lv2(CarlaHostHandle handle, uint pluginId, const char *lv2path)
Definition CarlaStandalone.cpp:1334
struct _CarlaPortCountInfo CarlaPortCountInfo
const char * carla_get_host_osc_url_tcp(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:2358
uint32_t carla_get_midi_program_count(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1823
const char * carla_get_program_name(CarlaHostHandle handle, uint pluginId, uint32_t programId)
Definition CarlaStandalone.cpp:1865
void * carla_embed_custom_ui(CarlaHostHandle handle, uint pluginId, void *ptr)
Definition CarlaStandalone.cpp:2316
struct _CarlaTransportInfo CarlaTransportInfo
const CarlaPluginInfo * carla_get_plugin_info(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1348
uint32_t carla_get_program_count(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1813
uint32_t carla_get_max_plugin_number(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1223
void carla_set_parameter_value(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, float value)
Definition CarlaStandalone.cpp:2145
void carla_send_midi_note(CarlaHostHandle handle, uint pluginId, uint8_t channel, uint8_t note, uint8_t velocity)
Definition CarlaStandalone.cpp:2290
void carla_set_midi_program(CarlaHostHandle handle, uint pluginId, uint32_t midiProgramId)
Definition CarlaStandalone.cpp:2220
void carla_engine_idle(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:543
uint32_t carla_get_custom_data_count(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1833
const CarlaParameterInfo * carla_get_parameter_info(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1463
struct _CarlaRuntimeEngineInfo CarlaRuntimeEngineInfo
bool carla_set_engine_about_to_close(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:669
void carla_set_chunk_data(CarlaHostHandle handle, uint pluginId, const char *chunkData)
Definition CarlaStandalone.cpp:2245
bool carla_add_plugin(CarlaHostHandle handle, BinaryType btype, PluginType ptype, const char *filename, const char *name, const char *label, int64_t uniqueId, const void *extraPtr, uint options)
Definition CarlaStandalone.cpp:1234
uint32_t carla_get_plugin_latency(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1992
bool carla_load_file(CarlaHostHandle handle, const char *filename)
Definition CarlaStandalone.cpp:1034
void carla_set_custom_data(CarlaHostHandle handle, uint pluginId, const char *type, const char *key, const char *value)
Definition CarlaStandalone.cpp:2234
bool carla_engine_init(CarlaHostHandle handle, const char *driverName, const char *clientName)
Definition CarlaStandalone.cpp:394
void carla_transport_pause(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1153
const CarlaPortCountInfo * carla_get_midi_port_count_info(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1434
bool carla_replace_plugin(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1288
void carla_set_active(CarlaHostHandle handle, uint pluginId, bool onOff)
Definition CarlaStandalone.cpp:2076
void carla_set_panning(CarlaHostHandle handle, uint pluginId, float value)
Definition CarlaStandalone.cpp:2117
bool carla_remove_plugin(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1250
bool carla_save_project(CarlaHostHandle handle, const char *filename)
Definition CarlaStandalone.cpp:1054
void carla_set_parameter_touch(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, bool touch)
Definition CarlaStandalone.cpp:2197
bool carla_patchbay_set_group_pos(CarlaHostHandle handle, bool external, uint groupId, int x1, int y1, int x2, int y2)
Definition CarlaStandalone.cpp:1119
const char * carla_get_parameter_text(CarlaHostHandle handle, uint pluginId, uint32_t parameterId)
Definition CarlaStandalone.cpp:1845
bool carla_remove_all_plugins(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1259
void carla_randomize_parameters(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:2281
struct _CarlaPluginInfo CarlaPluginInfo
void carla_set_parameter_midi_channel(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, uint8_t channel)
Definition CarlaStandalone.cpp:2159
float carla_get_internal_parameter_value(CarlaHostHandle handle, uint pluginId, int32_t parameterId)
Definition CarlaStandalone.cpp:1975
void carla_set_drywet(CarlaHostHandle handle, uint pluginId, float value)
Definition CarlaStandalone.cpp:2085
void carla_transport_play(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1144
void carla_show_custom_ui(CarlaHostHandle handle, uint pluginId, bool yesNo)
Definition CarlaStandalone.cpp:2308
uint carla_get_engine_driver_count()
Definition CarlaStandalone.cpp:139
bool carla_set_engine_buffer_size_and_sample_rate(CarlaHostHandle handle, uint bufferSize, double sampleRate)
Definition CarlaStandalone.cpp:640
const char * carla_get_engine_driver_name(uint index)
Definition CarlaStandalone.cpp:146
void carla_set_balance_right(CarlaHostHandle handle, uint pluginId, float value)
Definition CarlaStandalone.cpp:2109
bool carla_show_engine_device_control_panel(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:648
const CarlaRuntimeEngineInfo * carla_get_runtime_engine_info(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:560
bool carla_show_engine_driver_device_control_panel(uint index, const char *name)
Definition CarlaStandalone.cpp:186
const char * carla_get_chunk_data(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1780
bool carla_is_engine_running(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:555
const MidiProgramData * carla_get_midi_program_data(CarlaHostHandle handle, uint pluginId, uint32_t midiProgramId)
Definition CarlaStandalone.cpp:1669
const CarlaRuntimeEngineDriverDeviceInfo * carla_get_runtime_engine_driver_device_info(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:577
const CarlaScalePointInfo * carla_get_parameter_scalepoint_info(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, uint32_t scalePointId)
Definition CarlaStandalone.cpp:1550
bool carla_switch_plugins(CarlaHostHandle handle, uint pluginIdA, uint pluginIdB)
Definition CarlaStandalone.cpp:1297
const char * carla_get_last_error(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:2346
const CarlaPortCountInfo * carla_get_audio_port_count_info(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1418
const char * carla_get_custom_data_value(CarlaHostHandle handle, uint pluginId, const char *type, const char *key)
Definition CarlaStandalone.cpp:1748
int32_t carla_get_current_midi_program_index(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1935
double carla_get_sample_rate(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:2336
float carla_get_output_peak_value(CarlaHostHandle handle, uint pluginId, bool isLeft)
Definition CarlaStandalone.cpp:2018
void carla_set_balance_left(CarlaHostHandle handle, uint pluginId, float value)
Definition CarlaStandalone.cpp:2101
void carla_set_parameter_mapped_control_index(CarlaHostHandle handle, uint pluginId, uint32_t parameterId, int16_t index)
Definition CarlaStandalone.cpp:2172
const char * carla_get_midi_program_name(CarlaHostHandle handle, uint pluginId, uint32_t midiProgramId)
Definition CarlaStandalone.cpp:1885
uint carla_get_audio_port_hints(CarlaHostHandle handle, uint pluginId, bool isOutput, uint32_t portIndex)
Definition CarlaStandalone.cpp:1589
uint32_t carla_get_parameter_count(CarlaHostHandle handle, uint pluginId)
Definition CarlaStandalone.cpp:1803
uint32_t carla_get_current_plugin_count(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1213
uint64_t carla_get_current_transport_frame(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1180
uint32_t carla_get_buffer_size(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:2328
void carla_clear_engine_xruns(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:657
void carla_clear_project_filename(CarlaHostHandle handle)
Definition CarlaStandalone.cpp:1089
static PuglViewHint int value
Definition pugl.h:1708
static const char * title
Definition pugl.h:1747
static const char * name
Definition pugl.h:1582
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
JSAMPIMAGE data
Definition jpeglib.h:945
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
unsigned char uint8_t
Definition mid.cpp:98
signed char int8_t
Definition mid.cpp:95
void initialiseJuce_GUI()
Definition carla_juce.cpp:37
void shutdownJuce_GUI()
Definition carla_juce.cpp:52
void idleJuce_GUI()
Definition carla_juce.cpp:45
#define false
Definition ordinals.h:83
png_const_structrp png_const_inforp int * unit
Definition png.h:2161
const char * symbol
Definition CarlaHost.h:178
const char * comment
Definition CarlaHost.h:188
uint32_t scalePointCount
Definition CarlaHost.h:199
const char * name
Definition CarlaHost.h:173
const char * unit
Definition CarlaHost.h:183
const char * groupName
Definition CarlaHost.h:193
uint optionsAvailable
Definition CarlaHost.h:86
const char * label
Definition CarlaHost.h:111
uint optionsEnabled
Definition CarlaHost.h:93
int64_t uniqueId
Definition CarlaHost.h:133
PluginCategory category
Definition CarlaHost.h:74
const char * name
Definition CarlaHost.h:106
const char * maker
Definition CarlaHost.h:116
uint hints
Definition CarlaHost.h:80
const char * iconName
Definition CarlaHost.h:127
PluginType type
Definition CarlaHost.h:69
const char * copyright
Definition CarlaHost.h:121
const char * filename
Definition CarlaHost.h:99
uint32_t outs
Definition CarlaHost.h:161
uint32_t ins
Definition CarlaHost.h:156
uint32_t xruns
Definition CarlaHost.h:299
float load
Definition CarlaHost.h:294
float value
Definition CarlaHost.h:220
const char * label
Definition CarlaHost.h:225
double bpm
Definition CarlaHost.h:271
uint64_t frame
Definition CarlaHost.h:251
int32_t bar
Definition CarlaHost.h:256
int32_t beat
Definition CarlaHost.h:261
int32_t tick
Definition CarlaHost.h:266
bool playing
Definition CarlaHost.h:246
const char * key
Definition CarlaBackend.h:1959
const char * type
Definition CarlaBackend.h:1953
const char * value
Definition CarlaBackend.h:1964
float stepSmall
Definition CarlaBackend.h:1802
float stepLarge
Definition CarlaBackend.h:1807
float def
Definition CarlaBackend.h:1782
float max
Definition CarlaBackend.h:1792
float step
Definition CarlaBackend.h:1797
float min
Definition CarlaBackend.h:1787
Definition CarlaHost.h:346
Definition CarlaHost.h:306
double sampleRate
Definition CarlaHost.h:332
const char * name
Definition CarlaHost.h:310
uint bufferSize
Definition CarlaHost.h:321
const uint32_t * bufferSizes
Definition CarlaHost.h:327
uint hints
Definition CarlaHost.h:316
const double * sampleRates
Definition CarlaHost.h:338
Definition CarlaBackend.h:1984
const double * sampleRates
Definition CarlaBackend.h:2001
const uint32_t * bufferSizes
Definition CarlaBackend.h:1995
uint hints
Definition CarlaBackend.h:1989
Definition CarlaBackend.h:1927
uint32_t program
Definition CarlaBackend.h:1936
const char * name
Definition CarlaBackend.h:1941
uint32_t bank
Definition CarlaBackend.h:1931
Definition CarlaBackend.h:1723
ParameterType type
Definition CarlaBackend.h:1727
uint8_t midiChannel
Definition CarlaBackend.h:1749
int32_t index
Definition CarlaBackend.h:1738
float mappedMaximum
Definition CarlaBackend.h:1765
int32_t rindex
Definition CarlaBackend.h:1743
float mappedMinimum
Definition CarlaBackend.h:1760
uint hints
Definition CarlaBackend.h:1733
int16_t mappedControlIndex
Definition CarlaBackend.h:1755
ZCONST char * key
Definition crypt.c:587
#define void
Definition unzip.h:396
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263