When using JUCE 6.0.8 to create a VST3 plugin on Linux, none of JUCE’s asynchronous messaging utilities relying on the global MessageManager
work while the editor is closed. This means that among other things AsyncUpdater
s, Timer
s, and calls to juce::MessageManager::callAsync()
won’t do anything until the user opens the plugin’s editor. This seems to be consistent across Bitwig Studio, REAPER, Ardour, Renoise and Carla (which uses JUCE’s own plugin hosting). A minimal example of this (courtesy of @eyalamir) would involve adding a simple default constructed timer to an audio processor class like so:
struct MyTimer : juce::Timer {
MyTimer() { startTimerHz(1); }
void timerCallback() override { std::cout << "Hello, world!" << std::endl; }
};
class MyProcessor : public juce::AudioProcessor {
...
MyTimer t;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MyProcessor)
}
This timer only procs (and prints the message) while the editor is open.