Audio: how do I immediately play a new audioclip without delay(code included)?

I currently have 2 Background music audio clips which I want to play immediately one after another (intro followed by a loop when the intro is done playing).

However, no matter what I try, there seems to me a noticeable gap when transitioning from one track to an other… Is there any way around this (other than crossfading)

Below is what I have come up with so far:::

///////////////////////////////////////////////////////////
private static bool loopStarted = false;
public AudioClip backGroundMusic_Intro;
public AudioClip backGroundMusic_Loop;

    //--Separate audio sources to try and avoid loading delays
private AudioSource bgA;
private AudioSource bgB;	

void Awake(){
	
	bgA = gameObject.AddComponent<AudioSource>();
	bgB = gameObject.AddComponent<AudioSource>();
	
	bgA.clip = backGroundMusic_Intro;
	bgB.clip = backGroundMusic_Loop;

	bgA.loop = false;
	bgB.loop = true;
	
	bgA.Play ();
}

// Fixed Update called multiple times per frame
void FixedUpdate () {
	if(loopStarted == false && !(bgA.isPlaying)){
		bgB.Play();
		Destroy (bgA);
		loopStarted = true;
	}
}
///////////////////////////////////////////////////////////

It is your script, actually. You can’t use Play to stitch together audio clips seamlessly like this. You need to instead use PlayScheduled.

I have build a solution called Introloop (Introloop - Unity Plugins by Exceed7 Experiments). It uses various Scheduled methods together with multiple AudioSources to achieve seamless transition from intro to looping part.

If you want to build it yourself, in that website I have also explained my approach. You can get the rough idea if you are new to audio scripting.