Fixes #1184 Fixes #1106 Signed-off-by: falkTX <falktx@falktx.com>tags/v2.2.0-RC1
@@ -40,6 +40,7 @@ | |||||
#define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 | #define JUCE_GUI_BASICS_INCLUDE_XHEADERS 1 | ||||
#include "AppConfig.h" | #include "AppConfig.h" | ||||
#include "juce_audio_processors/juce_audio_processors.h" | #include "juce_audio_processors/juce_audio_processors.h" | ||||
#include "juce_audio_processors/format_types/juce_VSTInterface.h" | |||||
#include "juce_gui_basics/juce_gui_basics.h" | #include "juce_gui_basics/juce_gui_basics.h" | ||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) | #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) | ||||
@@ -477,6 +478,16 @@ public: | |||||
aOuts = static_cast<uint32_t>(std::max(fInstance->getTotalNumOutputChannels(), 0)); | aOuts = static_cast<uint32_t>(std::max(fInstance->getTotalNumOutputChannels(), 0)); | ||||
params = static_cast<uint32_t>(std::max(fInstance->getNumParameters(), 0)); | params = static_cast<uint32_t>(std::max(fInstance->getNumParameters(), 0)); | ||||
if (getType() == PLUGIN_VST2) | |||||
{ | |||||
if (VstEffectInterface* const vst | |||||
= reinterpret_cast<VstEffectInterface*>(fInstance->getPlatformSpecificData())) | |||||
{ | |||||
aIns = std::max(aIns, static_cast<uint32_t>(std::max(vst->numInputChannels, 0))); | |||||
aOuts = std::max(aOuts, static_cast<uint32_t>(std::max(vst->numOutputChannels, 0))); | |||||
} | |||||
} | |||||
if (fInstance->acceptsMidi()) | if (fInstance->acceptsMidi()) | ||||
{ | { | ||||
mIns = 1; | mIns = 1; | ||||
@@ -672,7 +683,10 @@ public: | |||||
if (mOuts > 0) | if (mOuts > 0) | ||||
pData->extraHints |= PLUGIN_EXTRA_HINT_HAS_MIDI_OUT; | pData->extraHints |= PLUGIN_EXTRA_HINT_HAS_MIDI_OUT; | ||||
fInstance->setPlayConfigDetails(static_cast<int>(aIns), static_cast<int>(aOuts), pData->engine->getSampleRate(), static_cast<int>(pData->engine->getBufferSize())); | |||||
fInstance->setPlayConfigDetails(static_cast<int>(aIns), | |||||
static_cast<int>(aOuts), | |||||
pData->engine->getSampleRate(), | |||||
static_cast<int>(pData->engine->getBufferSize())); | |||||
bufferSizeChanged(pData->engine->getBufferSize()); | bufferSizeChanged(pData->engine->getBufferSize()); | ||||
reloadPrograms(true); | reloadPrograms(true); | ||||
@@ -153,7 +153,7 @@ static const CarlaCachedPluginInfo* get_cached_plugin_lv2(Lv2WorldClass& lv2Worl | |||||
if (char* const bundle = lilv_file_uri_parse(lilvPlugin.get_bundle_uri().as_uri(), nullptr)) | if (char* const bundle = lilv_file_uri_parse(lilvPlugin.get_bundle_uri().as_uri(), nullptr)) | ||||
{ | { | ||||
File fbundle(bundle); | |||||
water::File fbundle(bundle); | |||||
lilv_free(bundle); | lilv_free(bundle); | ||||
suri = (fbundle.getFileName() + CARLA_OS_SEP).toRawUTF8() + suri; | suri = (fbundle.getFileName() + CARLA_OS_SEP).toRawUTF8() + suri; | ||||
@@ -50,7 +50,12 @@ | |||||
#include "CarlaLadspaUtils.hpp" | #include "CarlaLadspaUtils.hpp" | ||||
#include "CarlaLv2Utils.hpp" | #include "CarlaLv2Utils.hpp" | ||||
#include "CarlaVstUtils.hpp" | |||||
#ifdef USING_JUCE_FOR_VST2 | |||||
# include "juce_audio_processors/format_types/juce_VSTInterface.h" | |||||
#else | |||||
# include "CarlaVstUtils.hpp" | |||||
#endif | |||||
#ifdef CARLA_OS_MAC | #ifdef CARLA_OS_MAC | ||||
# import <Foundation/Foundation.h> | # import <Foundation/Foundation.h> | ||||
@@ -733,7 +738,7 @@ static void do_lv2_check(const char* const bundle, const bool doInit) | |||||
const Lilv::Plugins lilvPlugins(lv2World.get_all_plugins()); | const Lilv::Plugins lilvPlugins(lv2World.get_all_plugins()); | ||||
// Get all plugin URIs in this bundle | // Get all plugin URIs in this bundle | ||||
StringArray URIs; | |||||
water::StringArray URIs; | |||||
LILV_FOREACH(plugins, it, lilvPlugins) | LILV_FOREACH(plugins, it, lilvPlugins) | ||||
{ | { | ||||
@@ -1470,6 +1475,18 @@ static void do_juce_check(const char* const filename_, const char* const stype, | |||||
audioIns = instance->getTotalNumInputChannels(); | audioIns = instance->getTotalNumInputChannels(); | ||||
audioOuts = instance->getTotalNumOutputChannels(); | audioOuts = instance->getTotalNumOutputChannels(); | ||||
#if JUCE_PLUGINHOST_VST | |||||
if (std::strcmp(stype, "VST2") == 0) | |||||
{ | |||||
if (VstEffectInterface* const vst | |||||
= reinterpret_cast<VstEffectInterface*>(instance->getPlatformSpecificData())) | |||||
{ | |||||
audioIns = std::max(audioIns, std::max(vst->numInputChannels, 0)); | |||||
audioOuts = std::max(audioOuts, std::max(vst->numOutputChannels, 0)); | |||||
} | |||||
} | |||||
#endif | |||||
parameters = instance->getParameters().size(); | parameters = instance->getParameters().size(); | ||||
if (instance->hasEditor()) | if (instance->hasEditor()) | ||||
@@ -1505,8 +1522,8 @@ static void do_juce_check(const char* const filename_, const char* const stype, | |||||
static void do_fluidsynth_check(const char* const filename, const PluginType type, const bool doInit) | static void do_fluidsynth_check(const char* const filename, const PluginType type, const bool doInit) | ||||
{ | { | ||||
#ifdef HAVE_FLUIDSYNTH | #ifdef HAVE_FLUIDSYNTH | ||||
const water::String jfilename = water::String(CharPointer_UTF8(filename)); | |||||
const File file(jfilename); | |||||
const water::String jfilename = water::String(water::CharPointer_UTF8(filename)); | |||||
const water::File file(jfilename); | |||||
if (! file.existsAsFile()) | if (! file.existsAsFile()) | ||||
{ | { | ||||