veandco / go-sdl2-examples

This is where all go-sdl2 examples are stored
91 stars 34 forks source link

mix doesn't work even though audio device is opened without error #16

Closed aiur-adept closed 2 months ago

aiur-adept commented 2 months ago

here is a program you can use to test:

(needs bell.wav in the dir)

package main

import (
    "log"

    "github.com/veandco/go-sdl2/mix"
    "github.com/veandco/go-sdl2/sdl"
)

const (
    sampleHz = 48000
)

func main() {
    if err := sdl.Init(sdl.INIT_AUDIO); err != nil {
        log.Println(err)
        return
    }
    defer sdl.Quit()

    spec := &sdl.AudioSpec{
        Freq:     sampleHz,
        Format:   sdl.AUDIO_U8,
        Channels: 2,
        Samples:  sampleHz,
    }
    if err := sdl.OpenAudio(spec, nil); err != nil {
        log.Println(err)
        return
    }
    defer sdl.CloseAudio()

    mix.Init(mix.INIT_MP3)

    sdl.PauseAudio(false)

    chunk, err := mix.LoadWAV("./bell.wav")
    if err != nil {
        log.Println(err)
        return
    }
    defer chunk.Free()

    chunk.Play(0, 0)

    sdl.Delay(500) // play audio for long enough to understand whether it works

    sdl.CloseAudio()
}
aiur-adept commented 2 months ago

nevermind, i should use mix.OpenAudio. Understandable, have a nice day