AudioAppComponent and internal filters (I/O audio device channels)

The app is an analizer for my plugins and audio gear, the main class is an AudioAppComponent wich load plugins in two kind of tracks (FilterManager are the tracks, it has many Filter thats contains an AudioPluginInstance)

These tracks (FilterManagers) uses the input/output 1&2 (l&r) from my audio device.

I've created an "internal filter" IOFilter :  public AudioPluginInstance to use like a pluginInstance in the FilterManager to use my audio device input 3 and output 3 for example in IOFilter, how can I do that? 

Should I pass the AudioBuffer in MainApp::getNextAudioBlock to IOFilter? is there another way to do it?





In my mainContentComponent (AudioAppComponent), the getNextBlockAudio look like this:

    // Analizer preprocess (test noises, etc)
    if (analizer != nullptr)
        analizer->preProcess ();

    // Process the plugins chains. Every filterManager is a chain of audioplugins,
    // filterManager has his own (empty) AudioBuffer, so the buffer of AudioAppComponent
    // is not used.
    for (int i=0; i < filterManagers.size(); i++)
        filterManagers[i]->processBlock ();

    // process the analizer with the processed audio.
    if (analizer != nullptr)
        analizer->process ();

The original idea was to create an "Internal Filter" (from AudioPluginInstance) to get the input/output from my audio device to analize real gear.

I realize that this is more complicated than it seems.

perhaps this is not the best way to do what I'm doing does not matter much because it is for personal use .


any help would be appreciated

Not 100% sure what you're asking.. But if you're asking how to take an AudioAppComponent and make it run a plugin, you probably want to use the AudioProcessorPlayer class, which is designed for that kind of purpose.

You may also want to use the StandalonePluginHolder class, which is designed to do most of the work if you want to run your plugin in the form of a stand-alone app.

Hi Jules, 

Currently, the app runs plugins, and I using the app to analize (freq response, phase, thd, etc) my plugins and it works fine.

Now, I want to use the app to analize real hardware too. I was thinking in a audioplugin that can send his input to an audio device output and then get the processed audio in an audio device input to the plugin output..

It is something like a send in a daw.

Ok.. so you'd send the audio to the i/o device's output channels, read the result from its input channels, and do whatever you need to do to it.

What exactly do you need help with?

if is possible to open these connections in a plugin (or a class inherited from AudioPluginInstance) to treat the hardware as a plugin?

(I have created a IOFilter inherited from AudioPluginInstance, it loads in my app plugin chains, but it doen't do any process yet)



Yes, like I said in my first answer, you can use the StandalonePluginHolder class to run a plugin as an app.

all DAW's come equipped with Sends and Returns in their mixers.  Just use those!  

Setting up and managing a separate audio settings dialogue in your plugin, and then dealing with likely blocksize and samplerate mismatches just sounds like a total recipe for disaster.  (If it is even possible?) I would guess that's why my quick google i just did now does not give any suggestions on how to do that. 

here's an article i found, but all the solutions listed seem to be tied to their host DAW's:



I explained very badly.

I'm working on an app, not plugin. The app is an analizer for vst, au and vst3, like VST Plugin Analizer, but adapted to my needs. At present, the application can only analyze plugins.

The app has two kind of tracks, to compare the results in the same graph, 

I want to add the posibility to analize real hardware with the app, not to make a plugin like an app. 

So, as in juce plugin host "audio Input" and "audio Output" , I was thinking in create a plugin AudioPluginInstance (with an internal plugin format AudioPluginFormat) into the app, to do this. Although it seems that doing it this way is very difficult and I doubt it work.

I think the best way is to add send/return for each track, like in a daw... Any way I am somewhat puzzled... any suggestions are welcome and I apologize for my bad explanation.



Like I said (twice!) StandalonePluginHolder is the class you need!

Jules I had misunderstood the functionality of this class, now, watching the code, I think that's what I was looking for. Tomorrow I will dedicate time to this project and I'll delve into this​.