I'm trying to write a basic command-line program to print out all the vst's installed on the computer.
The problem is that when I call audioFormatManager.getNumFormats(), it always returns 0.
I am initializing the AudioFormatManager object by calling audioFormatManager.addDefaultFormats().
I'm building this on mac (the latest macbook pro if that matters), using the auto-generated "command-line" xcode project without any modification (besides filling in Main.cpp).
Full code:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "../JuceLibraryCode/JuceHeader.h" juce::AudioPluginFormatManager audioFormatManager; juce::KnownPluginList knownPluginList; void ScanForPlugins() { printf("Scanning for plugins...\n"); for (int i = 0; i < audioFormatManager.getNumFormats(); ++i) { auto format = audioFormatManager.getFormat(i); auto scanner = new juce::PluginDirectoryScanner( knownPluginList /* listToAddResultsTo */, *format /* formatToLookFor */, format->getDefaultLocationsToSearch() /* directoriesToSearch */, true /* searchRecursively */, juce::File::nonexistent /* deadMansPedalFile */); juce::String pluginName; while (scanner->scanNextFile(true /* dontRescanIfAlreadyInList */, pluginName)); } } void Initialize() { audioFormatManager.addDefaultFormats(); ScanForPlugins(); } void ListPlugins() { Initialize(); if (knownPluginList.getNumTypes() == 0) { printf("No plugins detected\n"); return; } printf("Installed plugins:\n"); for (auto i : knownPluginList) { printf(" %s\n", i->name.toRawUTF8()); } } int main(int argc, char *argv[]) { static_assert(__cplusplus > 199711L, "Program requires C++11 capable compiler"); ListPlugins(); return 0; }