VST3 wrapper: Audition doesn't call onSize

I don’t have a freely resizable window, or a corner resizer, or a constrainer. I have only two fixed possible sizes, and a button that toggles between them. I handle the resizing manually because it’s not all proportional. Before 6.0.8, I didn’t call setResizable and it worked alright everywhere. Then a resizable border appeared, which I had to take out calling setResizable (false, false). It works in most hosts, but in Audition the difference between the large and small sizes is now black and unresponsive (it doesn’t get mouse events). How is this supposed to be handled now?

Some bug fixes, removed work arounds and cleanups changed the behaviour for resizable plug-ins. I also noticed the same issue with the VST3 plug-in that has a button that changed the plugin size. The plug-in also showed the black areas.
Now you need to inform your plug-in that it is scalable with setResizable (true, ...), otherwise the host wont be notified when you change the plug-in size.

That’s the thing. setResizable (true, ...) makes the window resizable by the host, to any size, by dragging the border. I don’t want a resizable window border -I only have two specific working sizes, which are set directly from the code. I also tried setConstrainer (nullptr) just in case, didn’t make any difference.

I’m pretty sure it’s a problem with the VST3 wrapper (at least). The resizing goes well until it passes through the VST3Editor::ContentWrapperComponent, then it passes the old bounds to the peer.

Ok, it’s not a problem with the wrapper, it’s a problem with Audition. After getting resizeView it should answer with onSize, but it doesn’t -I triple checked (on Windows). Just adding || host.isAdobeAudition() to the conditionals at the end of JuceVST3EditController::JuceVST3Editor::ContentWrapperComponent::resizeHostWindow() fixes it. It didn’t happen in 6.0.7 because before the call to resizeView there was

#if JUCE_WINDOWS
 setSize (w, h);
#endif

which wasn’t very nice indeed.

Hmmm, I’m getting a VST3-only graphics problem with Adobe Audition as well - it doesn’t show any GUI at all!

This is on Mac, with a non-resizable GUI (setResizable (false, false)). The AU format displays fine in Audition.

@kamedin I tried your idea of adding host.isAdobeAudition() to the conditionals in that spot in the VST3 wrapper, but that didn’t fix it for me.

But perhaps compounding the problem, and preventing your fix from working, is the fact that PluginHostType::getHostDescription() is returning “Unknown” inside Audition.

Help, JUCE devs?

Heh, apparently there’s no definition for Audition in Mac… In juce_audio_processors/utilities/juce_PluginHostType.cpp, try adding

if (hostFilename.containsIgnoreCase ("Audition")) return AdobeAudition;

after line 166, inside #if JUCE_MAC.

Edit -I see you did that already. Did it work?

Yeah, I just reported that missing Audition definition bug in a separate thread.

Unfortunately, that fix plus your fix (with adding those conditionals) still didn’t get my GUI to show up.

Maybe that explains why it’s undefined for Mac. Why do these people keep having non-compliant hosts… The WaveLab case is amazing, like, it’s frigging Steinberg :unamused:

I’m going to start a separate thread with a bug report for VST3 builds in Audition having no GUI.

1 Like

Can you post an example which reproduces this? I’ve tested a blank Projucer generated plug-in template from the latest tip of develop with both setResizable (true, ...) and setResizable (false, ...) on both macOS and Windows in Audition 14.1.0.43 and calling setSize() results in an onSize() call and the window resizes correctly.

Audition 2019 (12.0) on Windows. Default plugin project with this editor:

struct MyEditor : juce::AudioProcessorEditor
{
    MyEditor (juce::AudioProcessor&);
    void resized() override;
private:
    juce::TextButton button{ "resize" };
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MyEditor)
};

MyEditor::MyEditor (juce::AudioProcessor& p) : AudioProcessorEditor (&p)
{
    setResizable (false, false);
    button.setClickingTogglesState (true);
    button.onClick = [this]
    {
        if (button.getToggleState()) setSize (500, 400);
        else                         setSize (400, 300);
    };
    addAndMakeVisible (button);
    setSize (400, 300);
}

void MyEditor::resized()
{
    button.setBounds (getLocalBounds());
}

size1 size2
It happens also using the corner resizer with setResizable (..., true). Audition ignores allowHostToResize: the window is always resizable but does nothing to the content -this happens to all plugins. In any case, onSize is never called. It may have been fixed in a later version.

I’m not seeing the issue using your example either. Can you try with the latest tip of JUCE develop and the latest Audition?

It’s fixed in 14.x, just checked.

1 Like

Great, thanks for checking.

1 Like