Wrong sound clip playing

I have an intro/loop thing set up with arrays of both the intros and loops so the level can set which bgm is playing.
Here is my script:

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class AudioDirector : MonoBehaviour {
	public AudioClip[] musicIntros;
	public AudioClip[] musicLoops;
	public int MusicIndex;
	GameObject musicSource;
	public AudioClip[] Jingles;
	public int JingleType;

	// Use this for initialization
	void Start () {
		musicSource = gameObject;
		audio.clip = musicIntros[MusicIndex];
		StartCoroutine(playMusic ());
	
	}
	
	// Update is called once per frame
	void Update () {
		DontDestroyOnLoad (gameObject);
	}
	public IEnumerator playMusic()
	{
		audio.Play ();
		yield return new WaitForSeconds(audio.clip.length);
		audio.clip = musicLoops[MusicIndex];
		audio.loop = true;
		audio.Play ();
	}
	public IEnumerator PlayJingle(int jingletype)
	{
		JingleType = jingletype;
		audio.Stop ();
		audio.loop = false;
		audio.clip = Jingles [JingleType];
		audio.Play ();
		yield return new WaitForSeconds(audio.clip.length);
		audio.clip = musicLoops[MusicIndex];
		audio.loop = true;
		audio.Play ();
	}
}

What’s happening is when I set MusicIndex, it plays that intro and then plays the second loop, no matter what MusicIndex is.

I have no idea what’s going on here. I’ve never encountered this problem before.

I FIGURED IT OUT
I was having the level change MusicIndex, so it would always change the loop to MusicIndex after the original sound clip would play.