Logic disables plugins when there is no active region


#1

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.


AudioPlayHead::CurrentPositionInfo's isPlaying only runs when Audio is playing?
AU problems: didn't find the component
#2

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.


#3

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.


#4

@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.


#5

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.


#6

This must be possible - see Logic’s test oscillator.


#7

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…


#8

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:


#9

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


#10

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


#11

Sorry Rail, that doesn’t do the trick.


#12

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:


#13

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…


#14

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.


#15

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.


#16

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


#17

from my testing it’s not the tail…
I’m reporting DBL_MAX for my tail and it does nothing…


#18

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


#19

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?


#20

Hi Fabian,

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