TimeSynth not in sync in packaged game

Hi there fellow devs,

I have recently added in the new time synth functionality to my game and the results are great, however, when i package the game the audio is completely out of sync with itself (despite being fine in the editor). Does anybody know why this may be or if there’s anything I can try to get the audio back in sync?

Stuff that may be relevant.

I’m using engine version 4.22
I’m working in Blueprints.
The project is for VR.
I have of course enabled the Time Synth plugin.

I read somewhere to make sure you have enabled the new audio engine, is this just the Time Synth plugin or should i be looking somewhere else to enable this?
Although the music in my game is using the Time Synth nodes there is other audio using the old “Play sound 2D” and “Play sound at location” nodes. Should everything now be on Time Synth even if it does not need to be in sync?

Thanks for any help with this guys. I’m trying to package a demo for marketing purposes and this issue is really throwing a whole bag of spanners in to the works.

D

Hi @Davestation, I wasn’t able to reproduce the issue you’re experiencing. Is it possible some Blueprint timing may be affecting your TimeSynth Clip Play function calls in Packaged?

Hi Dan, thanks for responding. To be honest I wouldn’t really know where to start in checking that. As I said the audio works fine in editor so I’m sort of looking for a problem that isn’t there as it were.

Is there a way to verify which audio engine is being used (both in editor and in the packaged game)?

I’ve made changes to the engine ini file but this is a little different to the methods shown in your sticky thread at the top of this section.

also, my project is not set to use fixed frame rate, could this be contributing to the problem. I was under the impression that the new audio engine was no longer reliant on the game thread for its syncing?

thanks for your time.

Dave.

Can you give me more information about your BP timing? In your packaged build, are you getting significant difference in frame rate performance compared to Editor?

There are three threads:

Game Thread
Audio Thread (higher level audio stuff (SoundCue evaluation, Concurrency evaluation, etc.)
Audio Render Thread (DSP, mixing graph, rendering, etc.)

The Audio Thread is turned off when you’re in-Editor and all the normal Audio Thread executions happen on the Game Thread.

The Game Thread and Audio Thread are lock-stepped for GC management.

The Audio Render Thread is asynchronous.

The TimeSynth (and all Synth Components) bridge(s) the Game Thread and the Audio Render Thread. If you look at a Synth Component, you will see UObject stuff that executes on the Game Thread and you will see F Classes that do not contain UObjects that execute on the Audio Render Thread.

The TimeSynth will render sample accurately. But your Blueprints will never be sample accurate, because they live and execute on the Game Thread.

So if you’re experiencing poor performance on your packaged builds and your BP is some how framerate dependent, then that could seem like a TimeSynth bug but in reality it’s a BP bug.

Hi Dan,

I’ve since gone back to using the old engine and just having a piece of music play in the background. My goal before was that each enemy you face you would have a leit motif that would trigger as they were bought in to play.

That said, I can answer a few of your questions.

  1. I replaced the 96 bar sample with an 8 bar loop and the effect was the same so we can rule that out.

  2. I’m building for VR and the game (in editor at least) is taking under the golden 11ms per frame so performance seems good.

  3. all arrays and get all of class nodes are triggered once at start of play and never during play.

  4. the entire level is under 100k pollys.

  5. while running there’s never more than 30 draw calls

  6. there are only 2 lights (no dynamic shadows).

  7. Tick is activated and deactivated for each element as required so there’s never more than 15 objects using it.

  8. only 4 elements in the game are spawned. most exist perpetually and are un-hidden and moved in to position from a pool during play.

So optimization wise everything should be tickety-boo, I get the feeling personally that maybe i’ve not set up the gameengine.ini file correctly and the new engine is simply not being used.

As I said I’ve gone back to using the old engine but would happily do the following 2 things…

  1. Re-make the changes to the .ini file and send it over so you can verify that it is correct and should be working/using the new engine.

  2. Assuming all is good with step one, add the time synth elements back in to game and send over a zipped version of it for you to examine yourself.

I appreciate that you are no doubt incredibly busy and am happy using the old engine for now should the above seem too time consuming.

Thanks again for your time Dan, I really do appreciate your getting back to me and your efforts in helping me trouble shoot the problem.

Kind regards,

Dave

If you have a simple implementation example that you could send over, that would work.