# RMS Metering Breaks When Mixer at -Inf

**URL:** <https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114>\
**Category:** FMOD Studio\
**Tags:** unity, csharp\
**Created:** [March 16, 2026, 2:45pm UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114 "2026-03-16T14:45:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Damion1](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/damion1/32/2716_2.png) [@Damion1](https://qa.fmod.com/u/Damion1)\
**Post date:** [March 16, 2026, 2:45pm UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114/1 "2026-03-16T14:45:30Z")

</div>

Hello. I hope someone can help me out.

We are using the RMS values from voice events to automate the mouth movements of some simple characters. We have no problem getting this to function; the code seems good, and it works wonderfully.

However, if you turn down the in game volume such that the voices are no longer audible, then the mouths no longer animate. The volume settings drive global parameters which, in turn, drive gains on the sfx, ambience, music, voice & master busses. So, to be clear, the volume of the events themselves are not being touched, so the signal is (or should be) still present along the entire instance dsp chain.

I suspect that it is to do with virtualisation; presumably these events are being virtualized immediately since they are not actually producing any audio (by the time it reaches the mixer) - so have ~0 audibility perhaps? Checking the event’s isVirtual flag always returns false, though I may be checking the wrong thing?

I need the player to be able to turn down the voices without it disrupting the mouth animations - any idea how I can achieve this? Can I set a flag to stop instance’s being virtualized? And how can I verify if this is indeed the cause?

Thanks for your time folks,  
Damion.

---

<div class="post-metadata">

**Author:** ![Connor\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/connor_fmod/32/3685_2.png) [@Connor\_FMOD](https://qa.fmod.com/u/Connor_FMOD)\
**Post date:** [March 16, 2026, 10:15pm UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114/2 "2026-03-16T22:15:58Z")

</div>

Hi,

Could I please grab your Unity and FMOD Integration versions?

> [@Damion1](#):
>
> any idea how I can achieve this?

How are you retrieving the RMS values? We could do something like this: [Unity Integration | Examples Dsp Capture](https://fmod.com/docs/2.03/unity/examples-dsp-capture.html) and rather than placing the DSP on the master bus we could put it on either specific character master tracks or on a character VO bus.

> [@Damion1](#):
>
> Can I set a flag to stop instance’s being virtualized?

Using the [FMOD Studio | Event Macro Controls Reference - Priority](https://fmod.com/docs/2.03/studio/event-macro-controls-reference.html#priority) system, setting VO events to `Highest` priority will stop them from ever being made virtual.

---

<div class="post-metadata">

**Author:** ![Damion1](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/damion1/32/2716_2.png) [@Damion1](https://qa.fmod.com/u/Damion1)\
**Post date:** [March 17, 2026, 3:03pm UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114/3 "2026-03-17T15:03:35Z")

</div>

Setting the priority of the events that actually contained the instruments (which were referenced events) to highest worked! Thanks 🙂

But responding to the rest:

Unity: 6.3  
FMOD: 2.03.09

We aren’t using the mixer. We are grabbing the value from event instances. Code for getting the values is as follows. There are multiple chars talking at once so bus is no good as a solution. In any case, like I said, it functions great.

```auto
private void EnableMetering()
{
    _dsp = GetMeteredHeadDSP(_sound.FMODInstance);
}

private void DisableMetering()
{
    _dsp.setMeteringEnabled(false, false);
    _dsp.release();
}

private static DSP GetMeteredHeadDSP(EventInstance instance)
{
    if (instance.getChannelGroup(out var channelGroup) != RESULT.OK)
    {
        return new DSP();
    }

    channelGroup.getDSP(CHANNELCONTROL_DSP_INDEX.HEAD, out var dsp);
    dsp.setMeteringEnabled(false, true);

    return dsp;
}

private float GetRMS(DSP dsp)
{
    dsp.getMeteringEnabled(out _, out var enabled);

    if (!enabled)
    {
        EnableMetering();
        return 0f;
    }

    dsp.getMeteringInfo(IntPtr.Zero, out var meteringInfo);

    var rms = (meteringInfo.rmslevel[0] + meteringInfo.rmslevel[1]) / 2f;

    return rms;
}

```

The link you gave seems to do with audio capture, not RMS reading?

In any case, thanks again!

---

<div class="post-metadata">

**Author:** ![Damion1](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/damion1/32/2716_2.png) [@Damion1](https://qa.fmod.com/u/Damion1)\
**Post date:** [March 17, 2026, 4:12pm UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114/4 "2026-03-17T16:12:43Z")

</div>

Ah it seems I’m not getting this error every time one of these sound plays:

[FMOD] DSPI::release : WARNING. Failed to release because unit is still attached. Use removeDSP function first.

I haven’t added any DSPs? So unsure what this means…

---

<div class="post-metadata">

**Author:** ![Connor\_FMOD](https://yyz2.discourse-cdn.com/flex036/user_avatar/qa.fmod.com/connor_fmod/32/3685_2.png) [@Connor\_FMOD](https://qa.fmod.com/u/Connor_FMOD)\
**Post date:** [March 19, 2026, 1:24am UTC](https://qa.fmod.com/t/rms-metering-breaks-when-mixer-at-inf/24114/5 "2026-03-19T01:24:49Z")

</div>

Thank you for the info and the code.

With the following settings:

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/fmod/original/2X/b/b35a107a09f61471bdfca68ed55728bc27a4376b.png)

would it be possible the share the full logs:

![image](https://canada1.discourse-cdn.com/flex036/uploads/fmod/original/2X/e/e2535c5db2dabf7e69d5e53ea2d601f8519dfa89.png)

If you revert our changes do you still get the errors?
