// play a track w/crossfade
 public void PlayMusicTrack(AudioTrackEnum trackId, bool loop = false)
 {
     if (Parameters.Tracks.Count > 0)
     {
         if (currentMusicPlayerId >= 0)
         {
             AudioSource actualPlayer = musicPlayers[currentMusicPlayerId].actualPlayer;
             if (actualPlayer.isPlaying)
             {
                 //Debug.Log("Stopping track " + currentTrack.ToString());
                 // stop the currently playing track
                 StartCoroutine(FadeMusicTrack(currentMusicPlayerId, false));
             }
         }
         //Debug.Log("Playing track " + trackId.ToString());
         if (MusicTracks.ContainsKey(trackId))
         {
             currentMusicPlayerId = (currentMusicPlayerId + 1) % musicPlayers.Length;
             currentTrack         = trackId;
             StartCoroutine(FadeMusicTrack(currentMusicPlayerId, true, loop));
         }
         else
         {
             GlobalManager.MInstantMessage.DeliverMessage(InstantMessageType.MusicTrackPlayed, this, trackId);
         }
     }
     else
     {
         GlobalManager.MInstantMessage.DeliverMessage(InstantMessageType.MusicTrackPlayed, this, trackId);
     }
 }