Browse Source

Fixup for latest changes, expose JSFX plugins

Signed-off-by: falkTX <falktx@falktx.com>
tags/v1.1
falkTX 2 years ago
parent
commit
80574e0b69
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
5 changed files with 69 additions and 28 deletions
  1. +1
    -1
      carla
  2. +1
    -1
      dpf
  3. +1
    -0
      plugins/Common/IldaeilBasePlugin.hpp
  4. +37
    -4
      plugins/Common/IldaeilPlugin.cpp
  5. +29
    -22
      plugins/Common/IldaeilUI.cpp

+ 1
- 1
carla

@@ -1 +1 @@
Subproject commit ca15445429d7ff872fd40db23e24840cc6b90436
Subproject commit 93d3fff123f7630be1a28912c029b9775ffd0feb

+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit 58153fdefd7c2e33421a1cd1aa15d02add36262a
Subproject commit 5e77ebb317d5fd7209386ce8eb367682896d02b2

+ 1
- 0
plugins/Common/IldaeilBasePlugin.hpp View File

@@ -32,6 +32,7 @@ class IldaeilBasePlugin : public Plugin
{
public:
static Mutex sPluginInfoLoadMutex;
static const char* getPathForJSFX();

const NativePluginDescriptor* fCarlaPluginDescriptor;
NativePluginHandle fCarlaPluginHandle;


+ 37
- 4
plugins/Common/IldaeilPlugin.cpp View File

@@ -18,14 +18,13 @@
#include "IldaeilBasePlugin.hpp"
#include "CarlaEngine.hpp"
#include "water/files/File.h"
#include "water/streams/MemoryOutputStream.h"
#include "water/xml/XmlDocument.h"
START_NAMESPACE_DISTRHO
// --------------------------------------------------------------------------------------------------------------------
Mutex IldaeilBasePlugin::sPluginInfoLoadMutex;
using namespace CARLA_BACKEND_NAMESPACE;
// --------------------------------------------------------------------------------------------------------------------
@@ -44,7 +43,39 @@ static intptr_t host_dispatcher(NativeHostHandle handle, NativeHostDispatcherOpc
// --------------------------------------------------------------------------------------------------------------------
using namespace CARLA_BACKEND_NAMESPACE;
Mutex IldaeilBasePlugin::sPluginInfoLoadMutex;
// --------------------------------------------------------------------------------------------------------------------
const char* IldaeilBasePlugin::getPathForJSFX()
{
static water::String path;
if (path.isEmpty())
{
#if defined(CARLA_OS_MAC)
path = water::File::getSpecialLocation(File::userHomeDirectory).getFullPathName()
+ "/Library/Application Support/REAPER/Effects";
#elif defined(CARLA_OS_WASM)
path = "/jsfx";
#elif defined(CARLA_OS_WIN)
path = water::File::getSpecialLocation(water::File::winAppData).getFullPathName() + "\\REAPER\\Effects";
if (! system::exists(path))
path = water::File::getSpecialLocation(water::File::winProgramFiles).getFullPathName()
+ "\\REAPER\\InstallData\\Effects";
#else
if (const char* const configHome = std::getenv("XDG_CONFIG_HOME"))
path = configHome;
else
path = water::File::getSpecialLocation(water::File::userHomeDirectory).getFullPathName() + "/.config";
path += "/REAPER/Effects";
#endif
}
return path.toRawUTF8();
}
// --------------------------------------------------------------------------------------------------------------------
class IldaeilPlugin : public IldaeilBasePlugin
{
@@ -119,6 +150,8 @@ public:
if (const char* const path = std::getenv("LV2_PATH"))
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PLUGIN_PATH, PLUGIN_LV2, path);
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PLUGIN_PATH, PLUGIN_JSFX, getPathForJSFX());
fCarlaPluginDescriptor->dispatcher(fCarlaPluginHandle, NATIVE_PLUGIN_OPCODE_HOST_USES_EMBED,
0, 0, nullptr, 0.0f);


+ 29
- 22
plugins/Common/IldaeilUI.cpp View File

@@ -43,14 +43,14 @@ namespace ildaeil {
}
#endif

#define WASM_TESTING
// #define WASM_TESTING

START_NAMESPACE_DISTRHO

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

using namespace CARLA_BACKEND_NAMESPACE;

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

class IldaeilUI : public UI,
public Runner,
public PluginHostWindow::Callbacks
@@ -258,7 +258,7 @@ public:
fPlugin->fUI = this;

#ifdef WASM_TESTING
if (carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr,
if (carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr,
"midifile", 0, 0x0, PLUGIN_OPTIONS_NULL))
{
d_stdout("Special hack for MIDI file playback activated");
@@ -267,14 +267,14 @@ public:
carla_set_parameter_value(handle, 0, 1, 0.0f);
fPluginId = 2;
}
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "miditranspose", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "bypass", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "3bandeq", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "pingpongpan", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "miditranspose", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "bypass", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "3bandeq", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "pingpongpan", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_set_parameter_value(handle, 4, 1, 0.0f);
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "audiogain_s", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "audiogain_s", 0, 0x0, PLUGIN_OPTIONS_NULL);
for (uint i=0; i<5; ++i)
carla_add_plugin(handle, BINARY_NATIVE, fPluginType, nullptr, nullptr, "bypass", 0, 0x0, PLUGIN_OPTIONS_NULL);
carla_add_plugin(handle, BINARY_NATIVE, PLUGIN_INTERNAL, nullptr, nullptr, "bypass", 0, 0x0, PLUGIN_OPTIONS_NULL);
#endif
}

@@ -572,13 +572,13 @@ protected:
{
case kIdleInit:
fIdleState = kIdleNothing;
startRunner();
initAndStartRunner();
break;

case kIdleInitPluginAlreadyLoaded:
fIdleState = kIdleNothing;
showPluginUI(handle, false);
startRunner();
initAndStartRunner();
break;

case kIdlePluginLoadedFromDSP:
@@ -624,7 +624,7 @@ protected:
fPluginSelected = -1;
stopRunner();
fPluginType = fNextPluginType;
startRunner();
initAndStartRunner();
break;

case kIdleNothing:
@@ -644,7 +644,7 @@ protected:
{
case PLUGIN_INTERNAL:
case PLUGIN_AU:
// case PLUGIN_JSFX:
case PLUGIN_JSFX:
case PLUGIN_SFZ:
label = info.label;
break;
@@ -670,13 +670,13 @@ protected:
carla_set_custom_data(fPlugin->fCarlaHostHandle, fPluginId, CUSTOM_DATA_TYPE_STRING, "file", filename);
}

bool startRunner()
bool initAndStartRunner()
{
if (isRunnerActive())
stopRunner();

fRunnerData.needsReinit = true;
return Runner::startRunner();
fRunnerData.init();
return startRunner();
}

bool run() override
@@ -691,14 +691,14 @@ protected:
case PLUGIN_LV2:
path = std::getenv("LV2_PATH");
break;
case PLUGIN_JSFX:
path = fPlugin->getPathForJSFX();
break;
default:
path = nullptr;
break;
}

if (path != nullptr)
carla_set_engine_option(fPlugin->fCarlaHostHandle, ENGINE_OPTION_PLUGIN_PATH, fPluginType, path);

fPluginCount = 0;
delete[] fPlugins;

@@ -1055,6 +1055,7 @@ protected:
static const char* pluginTypes[] = {
getPluginTypeAsString(PLUGIN_INTERNAL),
getPluginTypeAsString(PLUGIN_LV2),
getPluginTypeAsString(PLUGIN_JSFX),
};

setupMainWindowPos();
@@ -1100,6 +1101,9 @@ protected:
int current;
switch (fPluginType)
{
case PLUGIN_JSFX:
current = 2;
break;
case PLUGIN_LV2:
current = 1;
break;
@@ -1119,6 +1123,9 @@ protected:
case 1:
fNextPluginType = PLUGIN_LV2;
break;
case 2:
fNextPluginType = PLUGIN_JSFX;
break;
}
}

@@ -1155,7 +1162,7 @@ protected:
case PLUGIN_INTERNAL:
case PLUGIN_AU:
case PLUGIN_SFZ:
// case PLUGIN_JSFX:
case PLUGIN_JSFX:
ImGui::TableSetupColumn("Name");
ImGui::TableSetupColumn("Label");
ImGui::TableHeadersRow();
@@ -1182,7 +1189,7 @@ protected:
{
case PLUGIN_INTERNAL:
case PLUGIN_AU:
// case PLUGIN_JSFX:
case PLUGIN_JSFX:
case PLUGIN_SFZ:
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);


Loading…
Cancel
Save