Browse Source

Test vst utils

tags/1.9.4
falkTX 11 years ago
parent
commit
c7ec217619
2 changed files with 74 additions and 84 deletions
  1. +33
    -10
      source/tests/CarlaUtils.cpp
  2. +41
    -74
      source/utils/CarlaVstUtils.hpp

+ 33
- 10
source/tests/CarlaUtils.cpp View File

@@ -33,6 +33,7 @@
#include "CarlaLadspaUtils.hpp" #include "CarlaLadspaUtils.hpp"
#include "CarlaDssiUtils.hpp" #include "CarlaDssiUtils.hpp"
#include "CarlaLv2Utils.hpp" #include "CarlaLv2Utils.hpp"
#include "CarlaVstUtils.hpp"


// used in dssi utils // used in dssi utils
#include "juce_core.h" #include "juce_core.h"
@@ -56,6 +57,7 @@


// #include "JucePluginWindow.hpp" // #include "JucePluginWindow.hpp"


#if 0
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


static void test_CarlaUtils() noexcept static void test_CarlaUtils() noexcept
@@ -576,7 +578,7 @@ static void test_CarlaLv2Utils() noexcept
delete lv2_rdf_new("http://calf.sourceforge.net/plugins/Reverb", true); delete lv2_rdf_new("http://calf.sourceforge.net/plugins/Reverb", true);
delete lv2_rdf_new("http://www.openavproductions.com/fabla", true); delete lv2_rdf_new("http://www.openavproductions.com/fabla", true);
delete lv2_rdf_new("http://invadarecords.com/plugins/lv2/meter", true); delete lv2_rdf_new("http://invadarecords.com/plugins/lv2/meter", true);
//delete lv2_rdf_new("http://gareus.org/oss/lv2/meters#spectr30stereo", true);
delete lv2_rdf_new("http://gareus.org/oss/lv2/meters#spectr30stereo", true);
delete lv2_rdf_new("http://plugin.org.uk/swh-plugins/revdelay", true); delete lv2_rdf_new("http://plugin.org.uk/swh-plugins/revdelay", true);
delete lv2_rdf_new("http://lv2plug.in/plugins/eg-scope#Stereo", true); delete lv2_rdf_new("http://lv2plug.in/plugins/eg-scope#Stereo", true);
delete lv2_rdf_new("http://kxstudio.sf.net/carla/plugins/carlarack", true); delete lv2_rdf_new("http://kxstudio.sf.net/carla/plugins/carlarack", true);
@@ -591,21 +593,42 @@ static void test_CarlaLv2Utils() noexcept
is_lv2_feature_supported("test1"); is_lv2_feature_supported("test1");
is_lv2_ui_feature_supported("test2"); is_lv2_ui_feature_supported("test2");
} }
#endif


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// main


int main()
static intptr_t test_vst_dispatcher(AEffect*, int, int, intptr_t, void*, float)
{ {
test_CarlaUtils();
test_CarlaMathUtils();
return 0;
}


test_CarlaBackendUtils();
test_CarlaEngineUtils();
static void test_CarlaVstUtils() noexcept
{
AEffect effect;
carla_zeroStruct(effect);
effect.dispatcher = test_vst_dispatcher;


test_CarlaLadspaUtils();
test_CarlaDssiUtils();
test_CarlaLv2Utils();
vstPluginCanDo(&effect, "test");
carla_stdout(vstEffectOpcode2str(effOpen));
carla_stdout(vstMasterOpcode2str(audioMasterAutomate));
}

// -----------------------------------------------------------------------
// main

int main()
{
// already tested, skip for now
// test_CarlaUtils();
// test_CarlaMathUtils();
//
// test_CarlaBackendUtils();
// test_CarlaEngineUtils();
//
// test_CarlaLadspaUtils();
// test_CarlaDssiUtils();
// test_CarlaLv2Utils();
test_CarlaVstUtils();


return 0; return 0;
} }


+ 41
- 74
source/utils/CarlaVstUtils.hpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla VST utils * Carla VST utils
* Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@@ -143,6 +143,9 @@ typedef AEffect* (*VST_Function)(audioMasterCallback);
static inline static inline
bool vstPluginCanDo(AEffect* const effect, const char* const feature) noexcept bool vstPluginCanDo(AEffect* const effect, const char* const feature) noexcept
{ {
CARLA_SAFE_ASSERT_RETURN(effect != nullptr, false);
CARLA_SAFE_ASSERT_RETURN(feature != nullptr && feature[0] != '\0', false);

try { try {
return (effect->dispatcher(effect, effCanDo, 0, 0, const_cast<char*>(feature), 0.0f) == 1); return (effect->dispatcher(effect, effCanDo, 0, 0, const_cast<char*>(feature), 0.0f) == 1);
} CARLA_SAFE_EXCEPTION_RETURN("vstPluginCanDo", false); } CARLA_SAFE_EXCEPTION_RETURN("vstPluginCanDo", false);
@@ -174,10 +177,8 @@ const char* vstEffectOpcode2str(const int32_t opcode) noexcept
return "effGetParamDisplay"; return "effGetParamDisplay";
case effGetParamName: case effGetParamName:
return "effGetParamName"; return "effGetParamName";
#if ! VST_FORCE_DEPRECATED
case effGetVu:
case DECLARE_VST_DEPRECATED(effGetVu):
return "effGetVu"; return "effGetVu";
#endif
case effSetSampleRate: case effSetSampleRate:
return "effSetSampleRate"; return "effSetSampleRate";
case effSetBlockSize: case effSetBlockSize:
@@ -190,24 +191,20 @@ const char* vstEffectOpcode2str(const int32_t opcode) noexcept
return "effEditOpen"; return "effEditOpen";
case effEditClose: case effEditClose:
return "effEditClose"; return "effEditClose";
#if ! VST_FORCE_DEPRECATED
case effEditDraw:
case DECLARE_VST_DEPRECATED(effEditDraw):
return "effEditDraw"; return "effEditDraw";
case effEditMouse:
case DECLARE_VST_DEPRECATED(effEditMouse):
return "effEditMouse"; return "effEditMouse";
case effEditKey:
case DECLARE_VST_DEPRECATED(effEditKey):
return "effEditKey"; return "effEditKey";
#endif
case effEditIdle: case effEditIdle:
return "effEditIdle"; return "effEditIdle";
#if ! VST_FORCE_DEPRECATED
case effEditTop:
case DECLARE_VST_DEPRECATED(effEditTop):
return "effEditTop"; return "effEditTop";
case effEditSleep:
case DECLARE_VST_DEPRECATED(effEditSleep):
return "effEditSleep"; return "effEditSleep";
case effIdentify:
case DECLARE_VST_DEPRECATED(effIdentify):
return "effIdentify"; return "effIdentify";
#endif
case effGetChunk: case effGetChunk:
return "effGetChunk"; return "effGetChunk";
case effSetChunk: case effSetChunk:
@@ -218,32 +215,26 @@ const char* vstEffectOpcode2str(const int32_t opcode) noexcept
return "effCanBeAutomated"; return "effCanBeAutomated";
case effString2Parameter: case effString2Parameter:
return "effString2Parameter"; return "effString2Parameter";
#if ! VST_FORCE_DEPRECATED
case effGetNumProgramCategories:
case DECLARE_VST_DEPRECATED(effGetNumProgramCategories):
return "effGetNumProgramCategories"; return "effGetNumProgramCategories";
#endif
case effGetProgramNameIndexed: case effGetProgramNameIndexed:
return "effGetProgramNameIndexed"; return "effGetProgramNameIndexed";
#if ! VST_FORCE_DEPRECATED
case effCopyProgram:
case DECLARE_VST_DEPRECATED(effCopyProgram):
return "effCopyProgram"; return "effCopyProgram";
case effConnectInput:
case DECLARE_VST_DEPRECATED(effConnectInput):
return "effConnectInput"; return "effConnectInput";
case effConnectOutput:
case DECLARE_VST_DEPRECATED(effConnectOutput):
return "effConnectOutput"; return "effConnectOutput";
#endif
case effGetInputProperties: case effGetInputProperties:
return "effGetInputProperties"; return "effGetInputProperties";
case effGetOutputProperties: case effGetOutputProperties:
return "effGetOutputProperties"; return "effGetOutputProperties";
case effGetPlugCategory: case effGetPlugCategory:
return "effGetPlugCategory"; return "effGetPlugCategory";
#if ! VST_FORCE_DEPRECATED
case effGetCurrentPosition:
case DECLARE_VST_DEPRECATED(effGetCurrentPosition):
return "effGetCurrentPosition"; return "effGetCurrentPosition";
case effGetDestinationBuffer:
case DECLARE_VST_DEPRECATED(effGetDestinationBuffer):
return "effGetDestinationBuffer"; return "effGetDestinationBuffer";
#endif
case effOfflineNotify: case effOfflineNotify:
return "effOfflineNotify"; return "effOfflineNotify";
case effOfflinePrepare: case effOfflinePrepare:
@@ -254,18 +245,14 @@ const char* vstEffectOpcode2str(const int32_t opcode) noexcept
return "effProcessVarIo"; return "effProcessVarIo";
case effSetSpeakerArrangement: case effSetSpeakerArrangement:
return "effSetSpeakerArrangement"; return "effSetSpeakerArrangement";
#if ! VST_FORCE_DEPRECATED
case effSetBlockSizeAndSampleRate:
case DECLARE_VST_DEPRECATED(effSetBlockSizeAndSampleRate):
return "effSetBlockSizeAndSampleRate"; return "effSetBlockSizeAndSampleRate";
#endif
case effSetBypass: case effSetBypass:
return "effSetBypass"; return "effSetBypass";
case effGetEffectName: case effGetEffectName:
return "effGetEffectName"; return "effGetEffectName";
#if ! VST_FORCE_DEPRECATED
case effGetErrorText:
case DECLARE_VST_DEPRECATED(effGetErrorText):
return "effGetErrorText"; return "effGetErrorText";
#endif
case effGetVendorString: case effGetVendorString:
return "effGetVendorString"; return "effGetVendorString";
case effGetProductString: case effGetProductString:
@@ -278,20 +265,16 @@ const char* vstEffectOpcode2str(const int32_t opcode) noexcept
return "effCanDo"; return "effCanDo";
case effGetTailSize: case effGetTailSize:
return "effGetTailSize"; return "effGetTailSize";
#if ! VST_FORCE_DEPRECATED
case effIdle:
case DECLARE_VST_DEPRECATED(effIdle):
return "effIdle"; return "effIdle";
case effGetIcon:
case DECLARE_VST_DEPRECATED(effGetIcon):
return "effGetIcon"; return "effGetIcon";
case effSetViewPosition:
case DECLARE_VST_DEPRECATED(effSetViewPosition):
return "effSetViewPosition"; return "effSetViewPosition";
#endif
case effGetParameterProperties: case effGetParameterProperties:
return "effGetParameterProperties"; return "effGetParameterProperties";
#if ! VST_FORCE_DEPRECATED
case effKeysRequired:
case DECLARE_VST_DEPRECATED(effKeysRequired):
return "effKeysRequired"; return "effKeysRequired";
#endif
case effGetVstVersion: case effGetVstVersion:
return "effGetVstVersion"; return "effGetVstVersion";
case effEditKeyDown: case effEditKeyDown:
@@ -357,32 +340,26 @@ const char* vstMasterOpcode2str(const int32_t opcode) noexcept
return "audioMasterCurrentId"; return "audioMasterCurrentId";
case audioMasterIdle: case audioMasterIdle:
return "audioMasterIdle"; return "audioMasterIdle";
#if ! VST_FORCE_DEPRECATED
case audioMasterPinConnected:
case DECLARE_VST_DEPRECATED(audioMasterPinConnected):
return "audioMasterPinConnected"; return "audioMasterPinConnected";
case audioMasterWantMidi:
case DECLARE_VST_DEPRECATED(audioMasterWantMidi):
return "audioMasterWantMidi"; return "audioMasterWantMidi";
#endif
case audioMasterGetTime: case audioMasterGetTime:
return "audioMasterGetTime"; return "audioMasterGetTime";
case audioMasterProcessEvents: case audioMasterProcessEvents:
return "audioMasterProcessEvents"; return "audioMasterProcessEvents";
#if ! VST_FORCE_DEPRECATED
case audioMasterSetTime:
case DECLARE_VST_DEPRECATED(audioMasterSetTime):
return "audioMasterSetTime"; return "audioMasterSetTime";
case audioMasterTempoAt:
case DECLARE_VST_DEPRECATED(audioMasterTempoAt):
return "audioMasterTempoAt"; return "audioMasterTempoAt";
case audioMasterGetNumAutomatableParameters:
case DECLARE_VST_DEPRECATED(audioMasterGetNumAutomatableParameters):
return "audioMasterGetNumAutomatableParameters"; return "audioMasterGetNumAutomatableParameters";
case audioMasterGetParameterQuantization:
case DECLARE_VST_DEPRECATED(audioMasterGetParameterQuantization):
return "audioMasterGetParameterQuantization"; return "audioMasterGetParameterQuantization";
#endif
case audioMasterIOChanged: case audioMasterIOChanged:
return "audioMasterIOChanged"; return "audioMasterIOChanged";
#if ! VST_FORCE_DEPRECATED
case audioMasterNeedIdle:
case DECLARE_VST_DEPRECATED(audioMasterNeedIdle):
return "audioMasterNeedIdle"; return "audioMasterNeedIdle";
#endif
case audioMasterSizeWindow: case audioMasterSizeWindow:
return "audioMasterSizeWindow"; return "audioMasterSizeWindow";
case audioMasterGetSampleRate: case audioMasterGetSampleRate:
@@ -393,14 +370,12 @@ const char* vstMasterOpcode2str(const int32_t opcode) noexcept
return "audioMasterGetInputLatency"; return "audioMasterGetInputLatency";
case audioMasterGetOutputLatency: case audioMasterGetOutputLatency:
return "audioMasterGetOutputLatency"; return "audioMasterGetOutputLatency";
#if ! VST_FORCE_DEPRECATED
case audioMasterGetPreviousPlug:
case DECLARE_VST_DEPRECATED(audioMasterGetPreviousPlug):
return "audioMasterGetPreviousPlug"; return "audioMasterGetPreviousPlug";
case audioMasterGetNextPlug:
case DECLARE_VST_DEPRECATED(audioMasterGetNextPlug):
return "audioMasterGetNextPlug"; return "audioMasterGetNextPlug";
case audioMasterWillReplaceOrAccumulate:
case DECLARE_VST_DEPRECATED(audioMasterWillReplaceOrAccumulate):
return "audioMasterWillReplaceOrAccumulate"; return "audioMasterWillReplaceOrAccumulate";
#endif
case audioMasterGetCurrentProcessLevel: case audioMasterGetCurrentProcessLevel:
return "audioMasterGetCurrentProcessLevel"; return "audioMasterGetCurrentProcessLevel";
case audioMasterGetAutomationState: case audioMasterGetAutomationState:
@@ -415,12 +390,10 @@ const char* vstMasterOpcode2str(const int32_t opcode) noexcept
return "audioMasterOfflineGetCurrentPass"; return "audioMasterOfflineGetCurrentPass";
case audioMasterOfflineGetCurrentMetaPass: case audioMasterOfflineGetCurrentMetaPass:
return "audioMasterOfflineGetCurrentMetaPass"; return "audioMasterOfflineGetCurrentMetaPass";
#if ! VST_FORCE_DEPRECATED
case audioMasterSetOutputSampleRate:
case DECLARE_VST_DEPRECATED(audioMasterSetOutputSampleRate):
return "audioMasterSetOutputSampleRate"; return "audioMasterSetOutputSampleRate";
case audioMasterGetOutputSpeakerArrangement:
case DECLARE_VST_DEPRECATED(audioMasterGetOutputSpeakerArrangement):
return "audioMasterGetOutputSpeakerArrangement"; return "audioMasterGetOutputSpeakerArrangement";
#endif
case audioMasterGetVendorString: case audioMasterGetVendorString:
return "audioMasterGetVendorString"; return "audioMasterGetVendorString";
case audioMasterGetProductString: case audioMasterGetProductString:
@@ -429,20 +402,16 @@ const char* vstMasterOpcode2str(const int32_t opcode) noexcept
return "audioMasterGetVendorVersion"; return "audioMasterGetVendorVersion";
case audioMasterVendorSpecific: case audioMasterVendorSpecific:
return "audioMasterVendorSpecific"; return "audioMasterVendorSpecific";
#if ! VST_FORCE_DEPRECATED
case audioMasterSetIcon:
case DECLARE_VST_DEPRECATED(audioMasterSetIcon):
return "audioMasterSetIcon"; return "audioMasterSetIcon";
#endif
case audioMasterCanDo: case audioMasterCanDo:
return "audioMasterCanDo"; return "audioMasterCanDo";
case audioMasterGetLanguage: case audioMasterGetLanguage:
return "audioMasterGetLanguage"; return "audioMasterGetLanguage";
#if ! VST_FORCE_DEPRECATED
case audioMasterOpenWindow:
case DECLARE_VST_DEPRECATED(audioMasterOpenWindow):
return "audioMasterOpenWindow"; return "audioMasterOpenWindow";
case audioMasterCloseWindow:
case DECLARE_VST_DEPRECATED(audioMasterCloseWindow):
return "audioMasterCloseWindow"; return "audioMasterCloseWindow";
#endif
case audioMasterGetDirectory: case audioMasterGetDirectory:
return "audioMasterGetDirectory"; return "audioMasterGetDirectory";
case audioMasterUpdateDisplay: case audioMasterUpdateDisplay:
@@ -455,14 +424,12 @@ const char* vstMasterOpcode2str(const int32_t opcode) noexcept
return "audioMasterOpenFileSelector"; return "audioMasterOpenFileSelector";
case audioMasterCloseFileSelector: case audioMasterCloseFileSelector:
return "audioMasterCloseFileSelector"; return "audioMasterCloseFileSelector";
#if ! VST_FORCE_DEPRECATED
case audioMasterEditFile:
case DECLARE_VST_DEPRECATED(audioMasterEditFile):
return "audioMasterEditFile"; return "audioMasterEditFile";
case audioMasterGetChunkFile:
case DECLARE_VST_DEPRECATED(audioMasterGetChunkFile):
return "audioMasterGetChunkFile"; return "audioMasterGetChunkFile";
case audioMasterGetInputSpeakerArrangement:
case DECLARE_VST_DEPRECATED(audioMasterGetInputSpeakerArrangement):
return "audioMasterGetInputSpeakerArrangement"; return "audioMasterGetInputSpeakerArrangement";
#endif
default: default:
return "unknown"; return "unknown";
} }


Loading…
Cancel
Save