Used internally to get the current track and make sure it exists.

def _get_song(self):
        '''
        Used internally to get the current track and make sure it exists.
        '''
        # Try to get the current track from the start metasong
        if self.at_beginning:
            # Make sure it exists.
            if self.pos < len(self.start):
                # It exists, so return it.
                return self.start[self.pos]
            # It doesn't exist, so let's move on!
            self.at_beginning = False
            # Generate a new track selection
            self._new_track()
        # A bit more difficult than using the start metasong, 
        # because we could have a beginning part. Call a function that gets all 
        # applicable tracks from the metasong.
        s = self._get_selectable()
        # Make sure it is long enough
        while self.pos >= len(s):
            # Or pick a new metasong.
            self._new_song()
            # And repeat.
            s = self._get_selectable()
        # Found a track, return it.
        return s[self.pos]