Streaming Music Hitch - iOS - Unity 4.5.5

(Perhaps I posted this in the wrong forum previously)

Whenever we start playing a new ‘stream from disc’ audio clip, our game “hitches” for about half a second right as playback of the new track begins.

All of our AudioClips are set as follows:

  • Load type: Stream from disc
  • Hardware decoding: yes
  • 3D sound: no

Our music player class references a bunch of GameObjects which contain AudioSources that point at all of our individual songs. The Music Player calls Stop() on the previous song and waits a second and then calls Start() on the new song, and it’s in that frame – where we call Start() on the new song – that the game hitches.

While it’s not exactly a fatal error, our game is fast-paced and performance hitches like this are very noticeable. Would obviously like to know what we’re doing wrong!

Pinging this 6 weeks later.

Would really appreciate some feedback / suggestions.

Just a guess, but have you tried loading/playing from within a coroutine? It sounds to me like Unity is trying to load the stream and play it in one frame but isn’t fast enough. Maybe a coroutine could be able to do this work across several frames?

Thanks for the reply, aihodge! You’re the first person to even attempt to answer this question in over 2 months of me pinging the forums :slight_smile:

Putting the music playback code in a coroutine did not help, though I appreciate the idea. Not sure how it would since coroutines don’t spawn separate threads. I’m wondering if I can somehow offload music playback to another thread …?

I finally attached the Unity profiler to my iPhone 6 and the spike is over 300msec and can be isolated to the call to AudioSource.Play().