You can use the existing M4L Patch and this code in the gig script
var v_song : String
// Called when a specific osc message is received
On OSCMessageReceived(m : OSCMessage) Matching "/GlobalRackspace/Scene/SetCaption"
v_song = OSC_GetArgAsString(m, 0)
v_song = ReplaceString(v_song, "\"", "", false)
SwitchToSongByIndex(GetSongIndex(v_song), 0)
End
Make sure no song is more than once in the actual selected SetList