Background music player trouble

In my background music script i’ve got 3 conditions, in first - audioclips are playing randomly. The second condition - if player’s health is lower than 25 audio.clip is changed to lowLifeTrack and in 3rd condition when fight boss audio.clip is changed to bossFightTrack.
My problem is that last two conditions dont work properly i can debug them, but music is not playing(((

using UnityEngine;
using System.Collections;

public class audioPlayer : MonoBehaviour {
	public AudioClip [] soundTrack;
	public AudioClip bossFightTrack;
	public AudioClip lowLifeTrack;
	private int currentTrack;
	private GameObject objPlayer;
	private GameObject sCont;	
	private SpawnControl sContScript;
	private AIscript ptrScriptAI;
	// Use this for initialization
	void Start () {
		objPlayer = (GameObject) GameObject.FindWithTag ("Player");	
		sCont = (GameObject) GameObject.FindWithTag ("SpawnerControl");
		sContScript = (SpawnControl) sCont.GetComponent( typeof(SpawnControl));
	
	}
	
	// Update is called once per frame
	void Update () {
			AIscript ptrScriptAI = (AIscript) objPlayer.gameObject.GetComponent(typeof(AIscript) );
			if(soundTrack.Length == 0)
			return;
				
			if(!audio.isPlaying){
				currentTrack= Random.Range(0, soundTrack.Length);
				audio.clip = soundTrack[currentTrack];
				audio.Play();
				}
			
				if(ptrScriptAI.health<25){
					print("lowLife");
					audio.clip = lowLifeTrack;
					audio.Play();
					}
					if(sContScript.wavesCompleted>0){
						print("bossFight");
						audio.clip = bossFightTrack;
						audio.Play();
						}
			}
}

Strange thing… when i press alt+tab while game is running i can hear the tracks from last two conditional statements…

Is that Unity’s bug, or i’m doing smth wrong?

I think the problem is in the first if :

if(!audio.isPlaying)

The first time around it is true. And then audio starts playing. So the next time it goes through, it returns false so it never gets to the if that checks for the health.

The problem is that it gets to if that checks for the health because i can see it debugging “lowLife”, but it doesn’t pley nor random track neither “lowLifeTrack”. Identical situation happens with the third if condition ((