What's new

Logic Pro—Incorrect Plug-in Delay Compensation?

Kent

sleepy member
This is a split-off of https://vi-control.net/community/threads/logic-scripter—multiport-track-delay-compensation.97100/

That thread is talking about track-by-track Negative Delay Compensation methods for Logic Pro, for making samples with various start times play on the grid together.

This thread is more macro-level: achieving the best Plug-in Delay Compensation in Logic (specifically, while using Vienna Ensemble Pro, but in general).

From the simplest blank-but-for-one-Sampler-sine-patch project to the most complex VEP template I have, I am having an issue wherein notes played in to a click are written ~1/32 too early (at 120 BPM). This is true, like I said, in all projects, and is regardless of audio buffer size, state of the PDC selection in Preferences>General>Plug-in Latency>Compensation, number of threads used, Process Buffer Range size, you name it.

For a while I thought it was me, because I do have a musical history of playing in locations, or playing instruments, that require a certain anticipation of the beat in order to sound in time.

However, continued searching has shown that this is a common problem across basically all DAWs, and has been for a while; @JT3_Jon had a very similar problem with this in Cubase c. 2014, for example.

The problem is this: in record mode, or in play-through for capturing later mode, I play notes that sound to me like they are with the click. The note-ons write to the "early" locations. On playback, since the note-ons precede the click, the part both looks (unfortunate, but workable) and sounds (not workable) early!

In other words, since the PDC shifts the apparent auditory location of the recording click based on what it thinks the plug-in latency is or should be, the PDC is interpreting my on-time playing as early.

The closest thing I have to a solution is to add a positive ms delay to the click track, so that I hear the click correctly when recording. Of course, then the click ends up being late-sounding on playback.

Is there anything to do?
 
This topic has come up from time to time on the LogicPro forum. I recommend you do some searching on that forum to see what you can come up with for answers...

There is always the possibility that you tend to play a little ahead of the beat when you play a keyboard, thus resulting in midi being recorded to the timeline early.

The thing you are talking bout here is "record offset", which is kind of closely related to PDC, but not quite exactly the same. PDC effects how we hear everything. Record Offset determines how to register incoming midi and/or audio into regions. Record offset will take into consideration not only PDC that is happening but also the reported latency from your audio device.

In theory, LogicPro knows when you are hearing audio, let's say it knows when you are HEARING the metronome sound, after it has accounted for your audio sound card latency.. and it assumes you are playing along to what you hear. It then attempts to backwards calculate where to place the stuff you're playing, midi or audio, into the region you are recording to so that it should end up on the region according to where it thinks you intended when you were listening to a click sound from the metronome.

Alright so presuming you're not playing ahead of the beat from your years in marching band or whatever...what could cause it to register everything with record offset too early?

For one thing, its possible that your sound card is not reporting latency accurately to LogicPro. Have you done a loopback RoundTripLatency test to find out? Everyone should always perform this test with their DAW anytime they change hardware to make sure. LogicPro assumes that your audio device driver is reporting latency properly, but in some cases it might not be, or if you have other digital devices inserted in front of your sound card that the driver doesn't know about, they could introduce latency and the driver won't be reporting that to LogicPro. So RTL test is a good idea.

Normally when you run that test, if you find out its off, you can use the Record Offset slider in LogicPro preferences to adjust how LogicPro will place recorded events into the region during record. So then you could move that slider until RLT test comes back exactly spot on.

In your cases, regardless of whether your RTL is accurate, perhaps you have something else strange going on, or you just tend to play ahead of the beat, whatever. You could try to adjust that record offset until your events land where you think they are supposed to land.

I am not 100% sure if that setting effects midi, but I believe it does.

What else could be causing it?

I have seen strange problems with people using external midi devices. And especially if you are trying to listen to external synths or an external midi based metronome, etc.. Then the record offset could be horribly wrong. There are long threads on the LogicPro Forum from people expressing the exact same frustration as you and it usually came down to them using some kind of external device in some way that confused the combination of PDC and record offset to a point it could not correctly calculate where to register recorded events into regions.

Also if you use a heavy mixer with a lot of latent effects, especially on AUX or master busses, that can cause some weird stuff to happen while recording tracks. Most people highly recommend do not use any latent plugins on the master buss while recording tracks, do not use on AUX tracks while recording either and when you need to use Low Latency Mode while recording also to eliminate delay in the track you're recording to. There are also some preferences related to PDC where you can turn off PDC, or turn it on only for Audio/inst tracks and leave AUX and master channels without PDC..which may or may not eliminate some delays temporarily while you record tracks.

Plugin and audio card latency is a reality of digital audio. The best bet is to simplify everything while recording tracks to get the cleanest record timing you can.

It could end up early, for example if you have a lot of latency being introduced by plugins, and you are intentionally playing the notes early on your keyboard in order to hear the sound exactly on the click. In theory, LPX should be backwards calculating all the various delays in the system to figure that out and presuming you actually were accurately playing exactly the right amount head...and human tendencies do matter...but anyway, see the point is that the more latency you have happening during record in the more places with layers of AUX sends, etc...the more complicated it is for logicPro and also if there is lots of audible latency between when you press a midi key and when you hear sound, then your ability to play exactly to the click is impaired, I would argue.

Anyway, if you are consistent about it, then try adjusting the record offset slider and that may solve the whole problem for you.
 
This is the reason why it takes me so much time to write pieces.
I spent a lot of time realigning sample libs by ear. And articulations within the libs. (Spitfire deliberately keeps some samples before the peak of the attack to sound more natural. The tradeoff is that it takes more time to align samples... per articulation).
 
oh also, if you are using a sample instrument that has built in latency (which is not reported to the host), then you will definitely be hearing the sound later then the system thinks you are hearing it. That is essentially "unreported latency". That could definitely effect how you perform and how record offset would react. You will probably be playing ahead of the beat in order to hear it on the click...which is why the events are recorded to the region early.

That would probably be a good time to use the record offset slider just while recording tracks with that particular instrument that happens to have late sample start times.

or....

if you are using a non-multi-timbral instrument, you could place LatencyFixer on the channel with the instrument that has the unreported latency. That latency would then be reported and LogicPro should become more aware about how to properly calculate the record offset.
 
Last edited:
Adjusting for latency is a never-ending quest. Little by little, the template gets more-accurate midi offsets, but unless you have separate midi tracks for shorts and longs, midi offsets don't work that well.

I haven't given up but I find that I still have to make on-the-fly adjustments so playback sounds synchronised.
 
I think most of the people on this forum are highly impacted by two separate issues, One is just generally dealing with DAW PDC and audio latency issues...which are generally solvable in a general way, reducing complexity of the issue.

But the second issue which impacts users of this forum much more so then most other musicians out there, is related to orchestral sample libraries specifically, which often have at the very least slow attack times in certain instruments or certain articulations of certain instruments.

This is unavoidable if you want complete realism.

I once asked Kirk Hunter about this and he explained to me that in order to experience the full attack transient of strings, the sample start time has to be starting at the point that is the very beginning of the actual waveform so that you hear the complete attack transient over time in its full splendid glory. The nature of a string attack transient though, is that it takes some time, sometimes a lot of time, to get from that zero sound to full transient. Real players are actually starting to make sound with their bow on the string ahead of the beat, in such a way that by the time the full transient of the note hits it will sound exactly right on the beat. They are essentially doing intuitively, what we have had to do methodically in our piano rolls, to nudge the start times of notes early.

The only way to avoid that in a sample instrument is to modify the sample instrument so that the sample start time skips some of the early parts of that attack transient, so that its closer to sounding on the beat right when you hit the note. That makes sense for playability and would probably be what is used in a string pad on a synth, for example, but if you want complete orchestral realism, you don't want to do that...so his libraries, for example, all have the complete string attack transient and will sound kind of late in response to a midi keyboard. On playback they will sound late off the grid for the same reason unless you nudge the midi start time earlier to compensate.

Most all orchestral libraries of any merit have this issue with certain instruments and/or certain articulations.

The thing that sample library makers could do better is to make things more consistent. For example, if a particular instrument with 10 articulations in it that has different attack transients, program it so that they all have the same attack latency. Some of the articulations might need to have the sample start time be AHEAD of the actual start of sound, for example...so that basically the entire instrument would have a consistent latency. If that were the case, then you could either nudge all the notes exactly the same amount ahead of the beat or use LatencyFixer or negative track delay...and the same negative delay would work for all articulations of that instrument. Even better would be if the plugin itself could report that latency to the host, then we wouldn't have to do anything at all, we'd just play the instrument as if it was a plugin that has latency, and the DAW would compensate for it automatically. Everything could be quantized.

I personally like working on the grid also, so I am interested in some of these solutions with latency fixer, Scripter, etc...
 
Last edited:
But really, this issue, which is really kind of one big issue, so I'm not sure two separate threads make sense, but you have several issues combining to create confusion...

  1. DAW's have complexities related to PDC, which effect how tracks are played back

  2. During recording tracks, DAW's have complexities regarding PDC and record offset, which can sometimes become confusing with various DAW preferences effecting things in strange ways

  3. DAW's appear to have some bugs in certain situations related to PDC, record offset and negative track delay features.

  4. Complicating it all, sample instruments sometimes have unreported latency due to attack transients as I just explained in my previous post. When there is unreported latency, then all the PDC and record offset then becomes incorrect, this can lead to inadvertently recording midi events ahead of the grid (ironically that would probably be where you would want to nudge the notes ahead of the beat to sound right). But then if you quantize, the late sample instrument transients become a problem.
 
So is this the reason why one would want to avoid articulation maps and separate shorts and longs in a template? I am making a template, and originally thought to keep it tidy by using articulation maps. Thanks!
Adjusting for latency is a never-ending quest. Little by little, the template gets more-accurate midi offsets, but unless you have separate midi tracks for shorts and longs, midi offsets don't work that well.

I haven't given up but I find that I still have to make on-the-fly adjustments so playback sounds synchronised.
 
Just to check (although this is an older thread) would this have anything to do with the broken PDC in Logic?
 
So is this the reason why one would want to avoid articulation maps and separate shorts and longs in a template? I am making a template, and originally thought to keep it tidy by using articulation maps. Thanks!
depending on the developer, even different round robins or different dynamic layers will have different offsets! Accept that you will have to make at least some sort of manual adjustment from time to time, and then decide which overall approach works best for you.
 
So is this the reason why one would want to avoid articulation maps and separate shorts and longs in a template? I am making a template, and originally thought to keep it tidy by using articulation maps. Thanks!

Just to check (although this is an older thread) would this have anything to do with the broken PDC in Logic?
Not sure, but I have been reading about this issue before I commit to Logic or Cubase. I found this:

https://whylogicprorules.com/warning-avoid-2-audio-preferences/
And this fixes the ADC:



I usually avoid adding anything with latency until mixing, so I hope this PDC thing won't be an issue for me.
 
depending on the developer, even different round robins or different dynamic layers will have different offsets! Accept that you will have to make at least some sort of manual adjustment from time to time, and then decide which overall approach works best for you.
Do you find Logic is capable in adjusting offsets? I'm new to Logic. I see that Cubase has a slider on the channel strip.

EDIT: Found it in the inspector. Not sure I need Cubase or that dongle.
 
Not sure, but I have been reading about this issue before I commit to Logic or Cubase. I found this:

https://whylogicprorules.com/warning-avoid-2-audio-preferences/
And this fixes the ADC:



I usually avoid adding anything with latency until mixing, so I hope this PDC thing won't be an issue for me.

I had seen this and have mine set up that way too, which seems counter to the settings in Logic. There also is the issue if you ever loop anything with a tempo change...it's not going to line up.
 
Articulation delays are separate topic from plugin delay compensation.
Yeah, that is what this thread is for @Jean Wilder:

 
So is this the reason why one would want to avoid articulation maps and separate shorts and longs in a template? I am making a template, and originally thought to keep it tidy by using articulation maps. Thanks!
I do separate legato, sustain, and shorts for most libraries because they almost always require different offsets. I don't use articulation maps, fyi.
 
I do separate legato, sustain, and shorts for most libraries because they almost always require different offsets. I don't use articulation maps, fyi.
That’s good to know. Not crazy about the lack of folders within folders in logic. An instance of the Spitfire player for every articulation sounds like more than what my computer can handle. I’ll look into offsetting the articulation maps in the other thread that was mentioned. If it all seems convoluted, I may go with Cubase. Unless, the grass in not greener in Cubaseland. I’m all new to this and want to head off in the right direction.
 
Cubase has exactly the same problem. Please take this discussion to that other thread we can get into it more. Its not related to plugin Delay compensation at all.
 
That’s good to know. Not crazy about the lack of folders within folders in logic. An instance of the Spitfire player for every articulation sounds like more than what my computer can handle. I’ll look into offsetting the articulation maps in the other thread that was mentioned. If it all seems convoluted, I may go with Cubase. Unless, the grass in not greener in Cubaseland. I’m all new to this and want to head off in the right direction.
Try to make use of the 64 hide groups in logic.
 
Top Bottom