Fmod isPlaying Question!!!Please Help!!!

Hello everyone!I use Fmod in the Ogre. And I want to judge the sound file is finished playing! So i use the function named ‘isPlaying’ in the Fmod Library.But the function always return ‘FMOD_ERR_INVALID_HANDLE’.Please help me! Thank you! I have the following code in step:

int channelIndexTemp;
bool isPlaying;
FMOD::Channel *channel;
if (Channelndex)
    channelIndexTemp = *Channelndex;
float tempTime = GetSoundLength(channelIndexTemp);
result = system->getChannel(channelIndexTemp, &channel);
if (result == FMOD_OK)
    result = channel->isPlaying(&isPlaying);

The value of ‘isPlaying’ is always ‘false’.

Hi anthony,

I don’t have experience with Ogre, but I believe you’ll have to check if the sound is playing every update call.

Hi Anthony,

I have moved your question out of the Unity integration subforum, into the main Studio forum.

In response to your question, it is common for isPlaying to return INVALID_HANDLE, once the channel stops playing it will go invalid quite shortly after. Just treat that error as the same as isPlaying returning false.


If you’re using FMOD studio you can listen for FMOD_STUDIO_EVENT_CALLBACK_SOUND_STOPPED

If you’re using low level FMOD setup a callback for FMOD_CHANNELCONTROL_CALLBACK_END