//go:build linux package audio import ( "fmt" "os" "sync" "github.com/gordonklaus/portaudio" ) var ( paMu sync.Mutex paRefCount int ) func initPortAudio() error { paMu.Lock() defer paMu.Unlock() if paRefCount == 0 { if err := portaudio.Initialize(); err != nil { return err } devices, err := portaudio.Devices() if err == nil { fmt.Fprintf(os.Stderr, "[Audio] Linux/PortAudio initialized globally. Devices found: %d\n", len(devices)) } } paRefCount++ return nil } func terminatePortAudio() { paMu.Lock() defer paMu.Unlock() paRefCount-- if paRefCount == 0 { fmt.Fprintf(os.Stderr, "[Audio] Linux/PortAudio terminating globally...\n") portaudio.Terminate() } }