func play_music(music openal.Source) { file := "music" + slash + "1.wav" buffer := openal.NewBuffer() data, _ := ioutil.ReadFile(file) buffer.SetData(openal.FormatStereo16, data, 44100) music.SetBuffer(buffer) music.Play() for true { time.Sleep(1 * time.Second) if music.State() == openal.Stopped { buffer := openal.NewBuffer() last := "" switch len(tracklist) { case 1: file = tracklist[0] last = file tracklist = []string{"music" + slash + "1.wav", "music" + slash + "2.wav", "music" + slash + "3.wav"} default: i := randomInt(len(tracklist)) file = tracklist[i] for file == last { i := randomInt(len(tracklist)) file = tracklist[i] } tracklist = append(tracklist[:i], tracklist[i+1:]...) } data, _ := ioutil.ReadFile(file) buffer.SetData(openal.FormatStereo16, data, 44100) music.SetBuffer(buffer) music.Play() } } }