func New(client *gumble.Client) (*Stream, error) { s := &Stream{ client: client, userStreams: make(map[uint32]openal.Source), sourceFrameSize: client.Config.GetAudioFrameSize(), } s.deviceSource = openal.CaptureOpenDevice("", gumble.AudioSampleRate, openal.FormatMono16, uint32(s.sourceFrameSize)) s.deviceSink = openal.OpenDevice("") s.contextSink = s.deviceSink.CreateContext() s.contextSink.Activate() s.buffer = make([]byte, gumble.AudioMaximumFrameSize) s.link = client.AttachAudio(s) return s, nil }