Cannot Play Two Sounds In Parallel
Hello. The following code would crash the process with this stack trace: stacktrace.txt
I might be missing something obvious, however, just not to me. :)
The code: package main
import ( "bytes" "fmt" "time" "ui/assets"
"github.com/faiface/beep/speaker"
"github.com/faiface/beep/wav"
)
func play() { streamer, format, err := wav.Decode(bytes.NewReader(assets.ButtonClick)) if err != nil { fmt.Println("failed to wav decide sfx:", err) return }
if err := speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10)); err != nil {
fmt.Println("failed to speaker.Init sfx:", err)
return
}
speaker.Play(streamer)
}
func main() { play() play()
time.Sleep(time.Second * 3)
}
This project is maintained at https://github.com/gopxl/beep, please direct all future inquiries there.
This is an incorrect usage of beep; in order to play multiple streams of audio at the same time, only one instance of play is called. You can use the Mix function https://github.com/faiface/beep/blob/master/compositors.go#L100 to create a Streamer that mixes the inputs together into a single stream
You can only initialize the speaker once, but it should be possible to call play multiple times. Speaker has a built-in mixer.