Music mixing

I want to play an intro and then start playing looped main theme. I made two audio sources for this and a script on loop object. The idea was to make loop object check if the intro has finished and then start playing the loop. Putting details aside I’m stuck with the gap in sound between the end of intro and loop.

The code for loop check looks like this:

void Update () {
		if ((!audio.isPlaying) & (!
						audio.Play ();

The gap is happening because one Update call happens before the end of the song and the next is after the end. If you want two tracks to sync perfectly, use AudioSource.PlayDelayed(). In this case, you can just play the intro and then immediately call PlayDelayed on the loop passing in the length of the intro. Alternatively, you could keep your current code, but have it play the loop when the intro is near then end (i.e. before it’s finished). When you detect that it’s near the end, use PlayDelayed on the loop using the amount of time remaining in the intro track.

Alternatively, use Introloop script to handle the intro to looping seamlessly and automatically. Also no need to cut the audio into 2 parts, just one with 2 time boundaries is enough. Because of this, the compression that adds small amount of space at the head and tail does not matter. You can use anything you like.