I've previously posted this same question but none of the answers really had results. I have tried to approach this situation two ways and they work in studio but not ingame. Using local scripts and even server scripts, neither of them were successful in running through the game.
.Ended:
script.Song.Ended:connect(function()
print("Song has ended!")
end)
TimePosition and TimeLength
if script.Song.TimePosition >= script.Song.TimeLength - 5 then
if script.Song.TimePosition > 5 then
print("Song has ended!")
end
end
Both work in studio, neither works ingame.

2 comments
You shouldn't put the song inside the script
That won't solve anything