Browse Source

Implement looking for cached AU plugins, TESTING

tags/1.9.5
falkTX 10 years ago
parent
commit
39c76eb51c
1 changed files with 69 additions and 3 deletions
  1. +69
    -3
      source/backend/CarlaHostCommon.cpp

+ 69
- 3
source/backend/CarlaHostCommon.cpp View File

@@ -24,6 +24,11 @@

#include "juce_audio_formats.h"

#ifdef CARLA_OS_MAC
# include "juce_audio_processors.h"
using juce::StringArray;
#endif

namespace CB = CarlaBackend;

// -------------------------------------------------------------------------------------------------------------------
@@ -259,6 +264,10 @@ const char* carla_get_supported_file_extensions()

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

#ifdef CARLA_OS_MAC
static StringArray gCachedAuPluginResults;
#endif

uint carla_get_cached_plugin_count(PluginType ptype, const char* pluginPath)
{
CARLA_SAFE_ASSERT_RETURN(ptype == CB::PLUGIN_INTERNAL || ptype == CB::PLUGIN_LV2 || ptype == CB::PLUGIN_AU, 0);
@@ -280,9 +289,21 @@ uint carla_get_cached_plugin_count(PluginType ptype, const char* pluginPath)
return lv2World.getPluginCount();
}

case CB::PLUGIN_AU: {
// TODO
case CB::PLUGIN_AU: {
#ifdef CARLA_OS_MAC
static bool initiated = false;

if (initiated)
return gCachedAuPluginResults.size();

initiated = true;

AudioUnitPluginFormat auFormat;
gCachedAuPluginResults = auFormat.searchPathsForPlugins(juce::FileSearchPath(), false);
return gCachedAuPluginResults.size();
#else
return 0;
#endif
}

default:
@@ -613,8 +634,53 @@ const CarlaCachedPluginInfo* carla_get_cached_plugin_info(PluginType ptype, uint
}

case CB::PLUGIN_AU: {
// TODO
#ifdef CARLA_OS_MAC
const int indexi(static_cast<int>(index));
CARLA_SAFE_ASSERT_RETURN(indexi < gCachedAuPluginResults.size(), nullptr);

using namespace juce;

String pluginId(gCachedAuPluginResults[indexi]);
OwnedArray<PluginDescription> results;

AudioPluginFormat& auFormat = *(AudioPluginFormat*)0;
auFormat.findAllTypesForFile(results, pluginId);
CARLA_SAFE_ASSERT_RETURN(results.size() > 0, nullptr);
CARLA_SAFE_ASSERT(results.size() == 1);

PluginDescription* const desc(results[0]);
CARLA_SAFE_ASSERT_RETURN(desc != nullptr, nullptr);

info.category = CB::PLUGIN_CATEGORY_NONE;
info.hints = 0x0;

if (desc->isInstrument)
info.hints |= CB::PLUGIN_IS_SYNTH;
if (true)
info.hints |= CB::PLUGIN_HAS_CUSTOM_UI;

info.audioIns = static_cast<uint32_t>(desc->numInputChannels);
info.audioOuts = static_cast<uint32_t>(desc->numOutputChannels);
info.midiIns = desc->isInstrument ? 1 : 0;
info.midiOuts = 0;
info.parameterIns = 0;
info.parameterOuts = 0;

static CarlaString sname, slabel, smaker;

sname = desc->name.toRawUTF8();
slabel = desc->fileOrIdentifier.toRawUTF8();
smaker = desc->manufacturerName.toRawUTF8();

info.name = sname;
info.label = slabel;
info.maker = smaker;
info.copyright = gNullCharPtr;

return &info;
#else
return nullptr;
#endif
}

default:


Loading…
Cancel
Save