audio.isPlaying always returns false

I am trying to set music to play throughout the game and continue between scenes with an empty gameobject that has the script below attached on my main scene. It starts fine and when I move to other scenes it continues to play, but when I switch scenes back from another scene back to the main scene it plays a second instance. I am checking for isPlaying, but it always returns false. Is this because the gameobject is a new instance so I am not checking the original instance that is first created when the game starts?

function Awake () {

    //Also checked for gameMusic as a boolean, but that didn't work either
    //var gameMusic : GameObject = GameObject.Find("gameMusic");
    //if(gameMusic){ audio.Play(); }

    Debug.Log("is audio playing - " + audio.isPlaying);

    if (!audio.isPlaying) {
        Debug.Log("audio was not playing so it was started");
        audio.Play();
    }

    DontDestroyOnLoad (transform.gameObject);
}

First of all, you search for a game object named 'gameMusic', but then you never use that reference.

Also, if you reload the scene that the 'game music' object is part of, a new instance of that object will be created. If you want only one 'game music' object, it should be part of a scene that's only loaded once (e.g. an 'intro' scene or something of that sort).

I found the answer with the help of using singleton's from this post. I've posted my answer here.

http://answers.unity3d.com/questions/24519/using-singleton-for-background-music