Sequencer playback Issue


#1

Hello,
We’ve been using Fmod/Unreal and Its sequencer for a while but stumbled on a issue yesterday with the latest Studio version (1.10.10) running with the 4.20.3 version of UE:
On startup the banks load and every event track plays and stops properly in the sequencer but when rebuilding the banks (with UE editor running in the background) and when I playback again in the sequencer I have no sound at all with the same events in the sequencer and I get this message In the Output Log:

LogFMOD: Error: 'StudioInstance->setUserData(this)' returned 'An invalid object handle was used.'
LogFMOD: Error: 'StudioInstance->setCallback(UFMODAudioComponent_EventCallback)' returned 'An invalid object handle was used.'
LogFMOD: Error: 'StudioInstance->start()' returned 'An invalid object handle was used.'

The banks are still there and I can correctly preview them in the content browser though…
When I restart the editor everything is fine, but I can’t afford to restart the editor each time the banks are rebuilt :confused:

Is there any compatibility issue known with this version ? Maybe there is a way to troubleshoot this. Or if someone could point us towards a prior version of studio without these sequencer compatibility issues with the 4.20.3 that would be great!
Thanks for any help!


#2

I tried today with blanks projects on UE 4.20 and 4.19 and 4.16 with all compatible versions of Fmod and still got this same issue. Until I reverted with the one we used with our previous project: the 1.09.06 version and it worked like a charm… We already moved on with 4.20 and 1.09.06 is not compatible so we’re stuck.
Any help ?


#3

If anyone else encounters the same issue, we got an answer from @cameron-fmod by e-mail:

After some testing, it looks like this is caused by the StudioInstance pointer in the FMODAudioComponent becoming invalidated but not cleaned up.

If you could test this for me, to make sure I’m not missing anything with my test, I would be extremely grateful.

In UFMODAudioComponent::PlayInternal, line 648 there should be:
if (StudioInstance == nullptr)

Change this to:
if (!(StudioInstance && StudioInstance->isValid()))

This will make check to see if the pointer contains a valid instance before attempting to play.

This did solve the problem for us.

Thanks, Cameron!


#4

I’ll make sure this is added for the next release.