Logic disables plugins when there is no active region

Hi,

Logic Pro X disables all plugins on a track, when there is no active region. Is there a way to prevent Logic from doing that? Pro tools is doing the same thing, but at least they provided a flag that can be set to turn it off for a plugin.

1 Like

I didnā€™t notice a way to turn it off with Logic.
Wonder what flag Avid provides :wink: if you can elaborate.

In my specific product the ā€œuglyā€ workaround was allowing it to be MIDI Controlled / Instrument so it can be inserted as Bus or Instrument where logic wouldnā€™t ā€œoptimizeā€ your plug-in.
Iā€™ve also made a value read by my AudioProcessorEditor running within the process call:
lastProcessRun = Time::getCurrentTime().toMilliseconds();

so I can do check if my process method didnā€™t get a chance to run.

There is a Juce macro to disable dynamic processing:

JucePlugin_AAXDisableDynamicProcessing

Just set it to 1 in the preprocssor definitions.

An Instrument slot doesnā€™t make sense for my plugin as itā€™s only available on instrument tracks. What do you mean by inserted as bus? Inserting the plugin on a bus? I thought buses are never ā€œoptimizedā€ in Logic.

@Jan_Schwers , I might mis-understand your workflow.
Iā€™ve tested the following here with Logic X:

  • Audio Track no audio with Insert = NO PROCESS CALL
  • Bus no audio with Insert = NO PROCESS CALL
  • Instrument Track (MIDI Controlled Instrument allowing input ANY other input) = PROCESS CALLED
  • Instrument Track with Instrument , adding the plug as Insert = PROCESS CALLED

But Iā€™ve not seen a way to make Logic always run the process callback within audio track where thereā€™s no audio.

The user can enable recording and monitoring for a track to have the inserts always processed but I think thereā€™s nothing the plugin developer can do programmatically.

This must be possible - see Logicā€™s test oscillator.

Logicā€™s Test Oscillator isnā€™t an AU plug-in. it might use different / private API.
If you have an AU based example that would be more proof-of-concept.
but Iā€™ve tested few plug-ins including JUCE demo and NI Guitar Rig that has Tape Deck and Metronome (and isnā€™t JUCE based).

None provided audio without audio ON the track during playbackā€¦

Until JUCE 4.1.0 there was a setting method called AudioProcessor::silenceInProducesSilenceOut(). It was to signal the host, if there is no Audio there is no point in calling the processing.
I think I remember a discussion in the forum, that it had no influence, so it got removed in 4.2.0.
Maybe something to investigateā€¦

EDIT: here is the forum link:

Yes, you can actually use the plugin type kaudiounittype_generator, but then you wonā€™t get any inputs.

I may be crazyā€¦ and I have no time to check right nowā€¦ But I believe Iā€™ve seen some odd behaviour in Logic with thisā€¦ try adding an empty track below the track with your plugin and see if it changes the behaviour.

Rail

Sorry Rail, that doesnā€™t do the trick.

It was not used anywhere in the plugin wrappers. I think it was meant to be a method to be used by plugin host implementations.

Well, I guess Iā€™m out of luck. Thx to everyone for trying to find a solution. This forum is really the best community for plugin developers. :+1:

I know. My thought was that it was probably used in the past but got lost during some refactoring or SDK change. So somebody with some knowledge about the AU sdk could check if the wrapper could signal this behaviour to the host i.e. Logic and reinstall that workflow to the wrapper.
I highly doubt that the silenceInProducesSilenceOut flag was introduced without being used in any wrapper.

Unfortunately I donā€™t have logic so I donā€™t target AU yet. So I canā€™t dig into that leadā€¦

EDIT: did some research, I donā€™t know the meaning of the ioActionFlads in JuceAU::Render, but here the define silenceInputProducesSilenceOut IS used:

   #if ! JucePlugin_SilenceInProducesSilenceOut
            ioActionFlags &= (AudioUnitRenderActionFlags) ~kAudioUnitRenderAction_OutputIsSilence;
   #else
            ignoreUnused (ioActionFlags);
   #endif

But itā€™s gone now in 4.2.
Itā€™s probably a dead spoor anyway, because itā€™s set after the processing, and now that itā€™s removed it isnā€™t set at allā€¦

Not related to Logic specifically, but still related to this problem nonetheless: in Cubase 8.0.35, VST3 plugins donā€™t seem to get processed either when thereā€™s no audio on the track. They are enabled when you enable audio monitoring though. And there is a flag in the Cubase preferences ā€œSuspend VST3 plugins processing when no audio is receivedā€ which you can enable/disable.

I just did some more research and found out that melodyne is able to produce sound all the time in logic. It doesnā€™t matter if there is an active region on the track or if playback is stopped. As soon as youā€™ve got a track transferred into the plugin you can delete the region and melodyne is playing back the transferred audio data. If you click on a blob it melodyne produces a sound, so you get an idea of the pitch. This is working all the time. even when playback is stopped. I donā€™t know how the guys at Celemony did that, but at least I know itā€™s possible.

I just ran auval on melodyne. It has the type ā€œaumfā€ which is the same type as the Juce Demo plugin. Only the Juce Demo plugin is not able to produce any sound when there is no region playing back.

Also, if I insert another plugin (Juce Demo Plugin for instance) after melodyne this plugin also stays active.

1 Like

Could this have something to do tail time. Does Melodyne just report a super high processing tail time?

from my testing itā€™s not the tailā€¦
Iā€™m reporting DBL_MAX for my tail and it does nothingā€¦

Just got the same problem
May be someone got a solution?

Hi Buncker,

Let me summarize my findings:

  • I can only reproduce this if the AudioUnit is not a synth. If I tick that the Audio Plug-in is a synth in the Projucer then everything works as expected.
  • I vaguely remember the JuceDemoPlugin (itā€™s a aumf ā€œMidi controlled effect pluginā€ - not a synth) being able to play regardless if Logic was playing or not. So I went back to JUCE 3.2 but was not able to get any sound out of the demo plug-in if Logic was not playing. So I guess this may have only worked with an older version of Logic? It could also be that newer versions of the CoreAudio Utility classes donā€™t support this anymore

So it would be interesting if anyone can find a plug-in that is an ā€˜aumfā€™ but is able to produce audio even if Logic is playing. Someone mentioned melodyne above. Was this with the newest version of Logic?

Hi Fabian,

Yes, this CPU saving feature was introduced in Logix X somewhere about a year ago (or may be a half?)