# VSTPluginInstance::getLatencySamples()

**URL:** <https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934>\
**Category:** Audio Plugins\
**Created:** [December 30, 2011, 10:57am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934 "2011-12-30T10:57:45Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![zamrate](https://avatars.discourse-cdn.com/v4/letter/z/f4b2a3/32.png) [@zamrate](https://forum.juce.com/u/zamrate)\
**Post date:** [December 30, 2011, 10:57am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/1 "2011-12-30T10:57:45Z")

</div>

I think AudioProcessor::getLatencySamples() should be made a virtual function, and VSTPluginInstance::getLatencySamples() should look like this:

`int VSTPluginInstance::getLatencySamples() const noexcept
{ 
	return effect->initialDelay;
}`  
Because there are some plugins that change their latency when you twist their knobs. Example VST: IL Maximus.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [December 31, 2011, 11:49am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/2 "2011-12-31T11:49:12Z")

</div>

Well that’d make sure that getLatencySamples always returns an up-to-date value, but that wouldn’t really make much difference. Hosts can’t adapt very easily to dynamic latency, and will probably only check the getLatencySamples value when they are told that a plugin’s properties have changed. Wouldn’t a better approach be to catch the ioChanged callback and then call setLatencySamples to update the value?

---

<div class="post-metadata">

**Author:** ![zamrate](https://avatars.discourse-cdn.com/v4/letter/z/f4b2a3/32.png) [@zamrate](https://forum.juce.com/u/zamrate)\
**Post date:** [January 2, 2012, 12:32pm UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/3 "2012-01-02T12:32:51Z")

</div>

That would work as well. Another problem: How does the host know that the latency of a plugin has changed? For the moment, I’m polling all the time, and checking if the latency has changed for any plugin, but it would be better if the AudioProcessor just told the host that the latency changed.

---

<div class="post-metadata">

**Author:** ![zamrate](https://avatars.discourse-cdn.com/v4/letter/z/f4b2a3/32.png) [@zamrate](https://forum.juce.com/u/zamrate)\
**Post date:** [January 3, 2012, 11:56am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/4 "2012-01-03T11:56:35Z")

</div>

One could maybe just call AudioProcessorListener::audioProcessorChanged() after receiving audioMasterIOChanged?

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [January 3, 2012, 12:09pm UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/5 "2012-01-03T12:09:04Z")

</div>

> [@zamrate](#):
>
> One could maybe just call AudioProcessorListener::audioProcessorChanged() after receiving audioMasterIOChanged?

Yes, that sounds like a good idea, thanks!

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://forum.juce.com/u/jules)\
**Post date:** [January 3, 2012, 12:16pm UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/6 "2012-01-03T12:16:01Z")

</div>

In fact, I think it just needs to do this:

` case audioMasterIOChanged:
        setLatencySamples (effect->initialDelay);
        break;
`

---

<div class="post-metadata">

**Author:** ![zamrate](https://avatars.discourse-cdn.com/v4/letter/z/f4b2a3/32.png) [@zamrate](https://forum.juce.com/u/zamrate)\
**Post date:** [January 4, 2012, 8:40am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/7 "2012-01-04T08:40:48Z")

</div>

Indeed, even better.

---

<div class="post-metadata">

**Author:** ![zamrate](https://avatars.discourse-cdn.com/v4/letter/z/f4b2a3/32.png) [@zamrate](https://forum.juce.com/u/zamrate)\
**Post date:** [April 4, 2012, 6:06am UTC](https://forum.juce.com/t/vstplugininstance-getlatencysamples/7934/8 "2012-04-04T06:06:40Z")

</div>

What about AU plugins hosting, do we also need some code being added, or is it ok there?
