# Channel isPlaying returns still true, when Unity editor has muted audio (Unity 6000.3.9, Fmod 2.03.06)

**URL:** <https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347>\
**Category:** Unity\
**Created:** [June 19, 2026, 8:08am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347 "2026-06-19T08:08:11Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![MildaGeniusBI](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@MildaGeniusBI](https://qa.fmod.com/u/MildaGeniusBI)\
**Post date:** [June 19, 2026, 8:08am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/1 "2026-06-19T08:08:11Z")

</div>

Hi, when I use returned channel from PlayDialogVoice() and testing if played by isPlaying, when Unity editor is muted, it still return true, till I unmute editor. So this blocking flow according to isPlaying.

Exist any possibility how to isPlaying can reflect audio length with muted audio?

```csharp
public static FMOD.Channel PlayDialogVoice(string dialogKey, out float length)
{
	StopCurrentDialogue();
	length = 0.0f;
	string currentLanguage = LocalizationSettings.SelectedLocale.Identifier.Code;
	string path = $"{BaseVoicesPath}/{currentLanguage}/{dialogKey}.voice.mp3";

	DebugUtility.Log($"PlayDialogVoice:{dialogKey} from:{path}", DebugTag.TagAudio);

	FMOD.MODE mode = FMOD.MODE.CREATESTREAM | FMOD.MODE.LOOP_OFF;

	// Create streaming audio from mp3 file
	FMOD.RESULT result = RuntimeManager.CoreSystem.createSound(path, mode, out _sDialogSound);

	if (result != FMOD.RESULT.OK)
	{
		DebugUtility.LogError($"PlayDialogVoice cant load dialog from:{path} result:{result}", DebugTag.TagAudio);
		return default;
	}

	// Get dialog group
	result = _sDialogBus.getChannelGroup(out FMOD.ChannelGroup dialogueGroup);
	DebugUtility.Log($"PlayDialogVoice getChannelGroup:{result}", DebugTag.TagAudio);

	result = RuntimeManager.CoreSystem.playSound(_sDialogSound, dialogueGroup, false, out _sDialogChannel);
	DebugUtility.Log($"PlayDialogVoice playSound:{result}", DebugTag.TagAudio);

	if (result == FMOD.RESULT.OK)
	{
		_sDialogChannel.setPitch(1.0f);

		// For tests, that voice reacts on bus changes
		//dialogBus.setMute(true);
		//dialogBus.setVolume(0.5f);

		_sDialogSound.getLength(out uint lengthMs, FMOD.TIMEUNIT.MS);
		length = lengthMs / 1000.0f;

		DebugUtility.Log($"PlayDialogVoice length:{length}", DebugTag.TagAudio);

		return _sDialogChannel;
	}
	else
	{
		return default;
	}
}

```

Thanks for answer

Milan

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

---

<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:** [June 22, 2026, 2:49am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/2 "2026-06-22T02:49:37Z")

</div>

Hi,

Thanks for the code and the info.

I don’t fully understand the issue.

> [@MildaGeniusBI](#):
>
> Exist any possibility how to isPlaying can reflect audio length with muted audio?

With the Unity editor muted are you finding that this code:

```csharp
_sDialogSound.getLength(out uint lengthMs, FMOD.TIMEUNIT.MS);
length = lengthMs / 1000.0f;

DebugUtility.Log($"PlayDialogVoice length:{length}", DebugTag.TagAudio);

```

Is not returning the expected values? I cannot see any `IsPlaying()` in the code provided, is this being called else where?

---

<div class="post-metadata">

**Author:** ![MildaGeniusBI](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@MildaGeniusBI](https://qa.fmod.com/u/MildaGeniusBI)\
**Post date:** [June 24, 2026, 5:14am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/3 "2026-06-24T05:14:04Z")

</div>

Hi.

the returned length is ok, no matter if is Unity editor muted or not.

We have dialogue sequences and we are testing end of dialog by this condition.

> static bool IsFinished(QueuedEntry entry, float timeNow)  
> {  
> entry.Channel.isPlaying(out bool isPlaying);  
> return timeNow \>= entry.MinCompletionTime && !isPlaying;  
> }

And when Unity editor is muted, isPlaying is always true, so no next dialog can play.

Of course, I can change condition to:

> static bool IsFinished(QueuedEntry entry, float timeNow)  
> {  
> return timeNow \>= entry.MinCompletionTime + entry.audioLength;  
> }

But I wonder, if is another possibility, how to keep isPlaying condition and it should work with muted Unity editor.

I hope, that this explains problem more deeply.

Best

Milan

---

<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:** [June 25, 2026, 1:36am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/4 "2026-06-25T01:36:31Z")

</div>

Thanks for the clarification,

I made a test with your function and checking the `isPlaying()`, I am not able to reproduce the issue:

```csharp
// My modified function
public FMOD.Channel PlayDialogVoice(out float length)
{
    //StopCurrentDialogue();
    length = 0.0f;
    //string currentLanguage = LocalizationSettings.SelectedLocale.Identifier.Code;
    //string path = $"{BaseVoicesPath}/{currentLanguage}/{dialogKey}.voice.mp3";

    //Debug.Log($"PlayDialogVoice:{dialogKey} from:{path}", DebugTag.TagAudio);

    FMOD.MODE mode = FMOD.MODE.CREATESTREAM | FMOD.MODE.LOOP_OFF;

    // Create streaming audio from mp3 file
    FMOD.RESULT result = RuntimeManager.CoreSystem.createSound(audioFilePath, mode, out sound);

    if (result != FMOD.RESULT.OK)
    {
        Debug.LogError($"PlayDialogVoice cant load dialog from:{audioFilePath} result:{result}");//, DebugTag.TagAudio);
        return default;
    }

    // Get dialog group
    result = RuntimeManager.CoreSystem.getMasterChannelGroup(out FMOD.ChannelGroup master);

// Checking if the channel is still playing
if (channel.hasHandle())
{
    FMOD.RESULT result = channel.isPlaying(out bool isPlaying);
    if (result == FMOD.RESULT.OK)
    {
        Debug.Log($"Channel is playing {isPlaying}");
    }
    else
    {
        Debug.Log($"Failed to check if channel is playing with result: {result}");
    }

    Debug.Log($"Channel Handle {channel.handle}");
}
    //result = _sDialogBus.getChannelGroup(out FMOD.ChannelGroup dialogueGroup);
    Debug.Log($"PlayDialogVoice getChannelGroup:{result}");//, DebugTag.TagAudio);

    result = RuntimeManager.CoreSystem.playSound(sound, master, false, out channel);
    Debug.Log($"PlayDialogVoice playSound:{result}");//, DebugTag.TagAudio);

    if (result == FMOD.RESULT.OK)
    {
        master.setPitch(1.0f);

        // For tests, that voice reacts on bus changes
        //dialogBus.setMute(true);
        //dialogBus.setVolume(0.5f);

        sound.getLength(out uint lengthMs, FMOD.TIMEUNIT.MS);
        length = lengthMs / 1000.0f;

        Debug.Log($"PlayDialogVoice length:{length}");//, DebugTag.TagAudio);

        return channel;
    }
    else
    {
        return default;
    }
}

```

and I am seeing the function returning false:

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

Are you able to create a reproduction project and upload it to your [profile](https://www.fmod.com/profile#uploads) that I can test?

---

<div class="post-metadata">

**Author:** ![MildaGeniusBI](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@MildaGeniusBI](https://qa.fmod.com/u/MildaGeniusBI)\
**Post date:** [June 30, 2026, 8:32am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/5 "2026-06-30T08:32:49Z")

</div>

Hello,

I prepared repro case, but I am not able reproduce it too.

Probably some other things in project has dependency on it. Iam still investigate it.

One note, when isPlaying retuns still true the playing possion goes over mp3 length (4.9s), which is weird.

`_channel.getPosition(out uint pos, FMOD.TIMEUNIT.MS);`  
`Debug.Log($"isPlaying={isPlaying} | pos={pos}ms");`

> isPlaying=True | pos=6571ms

Milan

---

<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:** [July 5, 2026, 11:17pm UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/6 "2026-07-05T23:17:10Z")

</div>

Thank you for testing that.

In your code example, the `_channel` is currently not playing but `IsPlaying` is still returning true? Could you share the full code example?

---

<div class="post-metadata">

**Author:** ![MildaGeniusBI](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@MildaGeniusBI](https://qa.fmod.com/u/MildaGeniusBI)\
**Post date:** [July 14, 2026, 5:55am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/7 "2026-07-14T05:55:44Z")

</div>

Hi,

actually in repro code example it works as expected. I cant figure out, what is diffrent in example to production code.

I think, in this case, is not useful share repro example.

Milan

---

<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:** [July 16, 2026, 1:11am UTC](https://qa.fmod.com/t/channel-isplaying-returns-still-true-when-unity-editor-has-muted-audio-unity-6000-3-9-fmod-2-03-06/24347/8 "2026-07-16T01:11:44Z")

</div>

Thanks for the info,

Unfortunately, without a consistent repro I am unable to debug the issue. If you are able to reproduce the issue in a test project we can try investigate the issue further.
