Re: kAudioUnitProperty_PresentationLatency supported in LogicPro 7.2 and/or 8?
Re: kAudioUnitProperty_PresentationLatency supported in LogicPro 7.2 and/or 8?
- Subject: Re: kAudioUnitProperty_PresentationLatency supported in LogicPro 7.2 and/or 8?
- From: William Stewart <email@hidden>
- Date: Tue, 13 Nov 2007 17:47:55 -0800
This property is the summation of the total latency from the output
time of a sample for the AU until it is expected to be "presented" to
the listener. So, this property is a sum of:
Additional effect processing latencies in the signal chain from the AU
Any additional mixing latencies in the host
Size of the I/O buffer
Safety offset of the driver
Presentation latency of the device
All of these should be deterministic, except that presentation latency
of the device can be affected by what is on the other side of the I/O
interface (or even the variability of processing, etc that the I/O
interface may do)
GetCurrentTime is going to just return the current time of the CPU
clock. Because an AU doesn't know the device it is going out too (or
if it is even going out to a device), it has no way to associate that
time with the audio I/O pathways it is involved in. Every call to an
AU to render is rendering audio for "some time" in the future.
So yes, Render was not made "presentation latency" secs before the
sample time. There's no constraint on when an AU is asked to render.
The correct way to state this is that the audio your AU is being asked
to produce will take "presentation latency" secs to actually be heard
when it is in the signal chain.
Our thinking about defining this property was that the AU was being
used in something like a R/T context - AULab is a good example, or
other performance oriented hosts - as there the AU really is being
used to render audio for the I/O cycle its currently rendering for.
For an app like Logic, which has a more complex scheduling model, the
situation is not nearly so clear or as straight forward. I think the
property could be utilised to work satisfactorily because Logic still
does use a R/T type of model when you pair it down.
Of course, the property would be considered invalid if the "Is
Offline" property value is set to true.
In the meantime, I think my suggestion about adding a parameter the
user can tweak to adjust this is a perfectly reasonable solution. You
should mark the parameter as Non Real Time (so it doesn't appear in
automation lists) and possibly expert mode if you want to hide it from
your average user.
Bill
On Nov 13, 2007, at 5:18 PM, I. K. wrote:
Presentation latency is relevant but its only one part of the timing
information needed to know the host time at the moment the first
sample hits the outs on transport play - If possible at all.
A particular sample will take 'presentation latency' seconds to appear
at the outputs but that doesnt mean, as an example, a call to
CAHostTimeBase::GetCurrentTime() during say, Render was made
'presentation latency' secs before the time the sample is out.
Hosts may issue render notifications in no particular order or timing.
The basic question is, from inside an AU, is it possible to calculate
the HostTime at the moment a sample is going to be out?
ideas are welcome.
Thanks again Bill.
On 11/13/07, William Stewart <email@hidden> wrote:
In lieu of the property being implemented, I'd suggest that you
provide a field for the user to set this (and start off with a
suggested value). This would be good in any case, as there are other
factors that might contribute to this number (when provided) being a
reasonable estimate, but not 100% reliable in all cases.
Bill
On Nov 12, 2007, at 6:32 PM, I. K. wrote:
The project I am working on requires acurate host time stamps of
events. These will be made OSC bundles and sent thru udp to control
OSC aware applications; SuperCollider3 among them.
So far, I have thought of using a digital audio track to send a one
sample impulse on transport play. The OSC server application
calculates a host time offset from the time it receives this
impulse.
I dont like that. its hacky.
It would be great if the OSC Bundle was built with the correct
timing
information from the start - in the AU.
any sugestions are welcome.
Thanks for your help Bill.
On 11/12/07, William Stewart <email@hidden> wrote:
This is on our to do list for AULab, but not yet done. I don't know
of
Logic's plans in this area. You are the first to really ask for
this,
so perhaps there is enough reason now to look at supporting this
property.
Bill
On Nov 12, 2007, at 5:37 PM, I. K. wrote:
I searched the archives and found only a couple of references
regards
this without much more info than the documentation provided in
the
header.
I have tested on several hosts and none seems to have it
implemented
including AULab.
Perhaps AudioUnitProperties.h misses to mention its only
applicable to
output AudioUnits?
As a workaround, is there a way for an AU to get a reference to
the
AUGraph it is connected to?
This way I could iterate thru the graph collecting latencies and
calculate a persentation latency for mine - based on buffersize,
out
device safety buffer size, latency etc...
is there any other way?
tia,
I.
On 11/8/07, I. K. <email@hidden> wrote:
Hello all,
Does anyone know if kAudioUnitProperty_PresentationLatency is
supported in Logic Pro 7.2 and/or Logic Pro 8?
I would appreciate any hints if this property is not supported.
I am coding an AU Instrument so it is only the output
presentation
latency I am interested in.
tia,
I.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden