VST/AU Hosting Filtering


#1

Hey guys…I’m working with VST/AU hosting and having some issues with users who have a ton of VST/AUs.

  1. It is scanning VST/AU instruments and effects. How do I program it such that I only scan the VST and AU instruments and not the effects.

  2. When scanning VST/AUs, if a plugin fails, then it causes none of the plugins to load. One broken plugin breaks them all. How do I only disable the plugin that fails, but keep the ones that pass.


#2

Hello, you can find that solution in the Plugin Host example project in Projucer examples directory. It searches VST/AU instruments and also it can help us to distinguish those types. Also it catches plugin loading errors as well.


#3

Hello, guys!

I have found some interesting issues with scanning/adding AU/VST plugins by using Juce codes.

I have tried to follow your sample project. If all the plugins are working well, then it scans and loads them successfully. But if there is a plugin which is wrong or has unexpected issue, then it crashes.
Sometimes it shows only error popup or sometimes it crashes and never does anything.

I have tried to load plugins with other application such as Cubase. Those applications never crashes, they recognizes which can be loaded and which can’t be used.

I think Juce codes of scanning and loading plugins have some serious problems.

Even I tried to add “try … catch …” commands into the codes of loading au/vst plugins, but it never catch any exceptions and crashed.

Please help me or give me advice to resolve this problem.

Thank you.


#4

@hasan_tata, meet Debugger, Debugger, meet @hasan_tata

If you find problems with something, step through the code with the debugger and post a backtrace or something. Simply saying there are problems isn’t going to get you much of a response. Believe me, I’ve been moping around this forums for a long time :wink:


#5

Here are the screenshots of crash with debugging.


#6

I would like this bug answered as well, because when trying to read VSTs, one bad VST crashes the whole program and none of the good VSTs are seen.


#7

the answer here is sandboxed scanning in separate processes, don’t think juce scanning code does that at the moment.


#8

The scanning classes do have hooks to let you sandbox it - that’s how we run the scanner in Tracktion, for example.

But it’s not something we can just magically provide with a method call: you need to construct your app in such a way that it can launch a child process version of itself, pass that child some command-line parameters about what to scan, communicate back the results of the scan, etc, so there’s a lot of boilerplate you need to add to make it work.


#9

Hello, jules!

Thanks for your kind answer.
I think I got what I have to do now.

Anyhow, have you any plan to make such module or provide sample application in later Juce version?
I will be surely appreciate if Juce provides such stuffs.
Actually I am often faced with several issues while I am making some plugins. Most of them are related with message management between threads. And each time it’s really hard to find what is wrong, of course those things would be of my fault. I know Juce codes don’t like error handling on run-time and why they do, but sometimes I think error handling is absolutely needed.

Sincerely,


#10

Is there a way to desipher between plugin FX and plugin instruments. When scanning, I don’t want to scan the plugin FX, only the instruments.


#11

Yep, the PluginDescription structure has fields to tell you about the plugin.


#12

Hello @jules!
I am wondering if there is any way to get VST plugin description without creating an instance of it. I am just going to scan only VST instrument plugins and so I need to filter others out. I am trying to find the way to resolve this problem, but I can’t find any way to scan only VST instruments.
The PluginDescription seems to be possible to get only after the plugin instance is created. Is this right?
Hope to get your answer as soon as possible.
Thanks for your support.
Hasan


#13

Yeah, it contains some info that is only available by instantiating the plugin and asking it.

You can of course save the plugin description once you’ve got it, to avoid scanning again, which is what KnownPluginList helps you do.