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_RESULT result;
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.

-Pete

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