getCurrentPosition in AAX_wrapper reports ppqPosition without delay compensation


#1

Hi! I noticed that the getCurrentPosition function in the AAX wrapper reports the ppqPosition without taking delay compensation into account. This seem to be because “GetCurrentTickPosition” is used instead of “GetCustomTickPosition” from AAX_ITransport.

This will cause any plugin that uses that information to play MIDI to play it before everything else that is delay compensated.


#2

Have you seen this thread:


#3

Are you on Windows or MacOS?

I just tested on MacOS and in a session with a compressor with 27 samples of delay compensation on a track, I instantiated my plug-in on a stereo Aux Track and create a MIDI note on a MIDI Track… I triggered my plug-in and it recorded the output sample, sample accurate to the MIDI note.

Rail


#4

On mac. Try adding a plugin with longer latency. We are developing a plugin that has an internal MIDI track and if we use the ppq position that we get from AudioPlayHead::getCurrentPosition to trigger internal MIDI it plays the notes to early (by as many samples as the introduced delay). I can test this by playing the same midi from the internal track and on the pro tools track (syncing to host). In our previous products (EZdrummer 2 for example) this works because that wrapper uses GetCustomTickPosition, and if I change to that in the juce aax wrapper it works again.


#5

You don’t want to be calling GetCustomTickPosition() too often… check the API docs.

Rail


#6

Yes I saw that, but as far as I can tell that’s the only way to get the correct position info (with delay compensation) - unless you know of any other way of doing it?