How to show the name of the song matching the rondom array playlist?

I have a Random music playlist type, but i need to show in UI gameobject array in the correct music name display in game play, like the most racing games have this days, like wipeout series for example.
How to display the music name correctly?

The code so far:

    public AudioClip[] clips;
    private AudioSource audioSource;

    private GameObject songNameList; // for testing :(
    public GameObject[] songName;

    // Use this for initialization
    void Start () {
     
        audioSource = FindObjectOfType<AudioSource> ();
        audioSource.loop = false;
    }

    // Update is called once per frame
    void Update () {

        if (!audioSource.isPlaying)
        {
            audioSource.clip = GetRandomClip ();
            audioSource.Play();
        }

        // for testing only :(
        int sero = Random.Range (0, songName.Length);
        songNameList = songName[sero];
        songNameList.SetActive (true);
    }

    private AudioClip GetRandomClip()
    {
        return clips [Random.Range (0, clips.Length)]; 
    }
}

Be advised that the way you have this structured is going to have every song fully loaded into memory, which is going to be terrible for memory management. If you’re aiming for desktop publishing that’s not going to amount to much of an issue, but if this is eventually going to mobile or WebGL that’s a big problem. You’d be better off storing a list of strings, and having all the songs in a folder in Resources, which can be unloaded to save memory; then, you load them one at a time on demand. Additionally, if your songs are in a folder in Resources, you can just drop a song into the folder and it’ll be automatically included in the playlist.

private string[] GetSongList() {
AudioClip[] allSongs = Resources.LoadAll<AudioClip>("songs");
string[] allSongNames = new string[allSongs.Length];
for (int s=0;s<allSongs.Length; s++) {
allSongNames[s] = allSongs[s].name;
}
return allSongNames;
}

private AudioClip GetRandomClip()
{
return Resources.Load<AudioClip>("songs/"+songNames[Random.Range(0, songNames.Length)]);
}

It appears that each song name is its own GameObject (I assume with text objects on them), is that right? If so, might I suggest instead that you have a reference to a single Text object, and set its .text to the name of the song? You can get the name of the song by

Tks, for reply.
It appears that each song name is its own GameObject (I assume with text objects on them), is that right?

Yes: Only song name text.
I could not get the code to work.
I do not know what I did wrong.
GetSongList() need to be call?
And “songNames” represent What? do you mean “songName” from GameObject[ ]?
I rarely use the Resources.Load function, yes it is for pc version, everything I do in Unity is for pc. I’ve looked everywhere for how to do it , tutorials etc … I just want the random music in each element to activate the object in which the text represents music, and in that object text, has another script that after showing the respective Text with the timer switch off again. Pure and simple.
The objective is show the name of the respective song.