Documentation ¶
Overview ¶
Package pulse is a cgo client library for PulseAudio.
Example (Echo) ¶
package main import ( "log" "github.com/kaey/pulse" ) func main() { s := pulse.Sample{ Format: pulse.FormatS16le, Rate: 44100, Channels: 2, } r, err := pulse.NewReader(&s, "echo", "mic") if err != nil { log.Fatalln(err) } defer r.Close() defer r.Drain() rl, err := r.Latency() if err != nil { log.Fatalln(err) } w, err := pulse.NewWriter(&s, "echo", "play") if err != nil { log.Fatalln(err) } defer w.Close() defer w.Drain() wl, err := w.Latency() if err != nil { log.Fatalln(err) } log.Println("Reader latency", rl) log.Println("Writer latency", wl) buf := make([]byte, 2048) for { err := r.Read(buf) if err != nil { log.Fatalln(err) } err = w.Write(buf) if err != nil { log.Fatalln(err) } } }
Output:
Example (Wav) ¶
package main import ( "io" "log" "os" "github.com/kaey/pulse" "github.com/kaey/wav" ) func main() { file, err := os.Open(os.Args[1]) if err != nil { log.Fatalln(err) } defer file.Close() rd, err := wav.NewReader(file) if err != nil { log.Fatalln(err) } defer rd.Close() s := pulse.Sample{ Format: pulse.FormatS16le, Rate: rd.SampleRate, Channels: rd.Channels, } w, err := pulse.NewWriter(&s, "player", file.Name()) if err != nil { log.Fatalln(err) } defer w.Close() defer w.Drain() buf := make([]byte, 2048) for { n, err := rd.Read(buf) if err != nil && err != io.EOF { log.Fatalln(err) } if n == 0 { break } err = w.Write(buf[:n]) if err != nil { log.Fatalln(err) } } }
Output:
Index ¶
Examples ¶
Constants ¶
View Source
const ( FormatS16le = 0x3 FormatS16be = 0x4 FormatS32le = 0x7 FormatS32be = 0x8 FormatS24le = 0x9 FormatS24be = 0xA )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is a PulseAudio simple connection. Do not use this directly.
type Err ¶
type Err struct {
// contains filtered or unexported fields
}
Err is a type returned by all pulse functions.
type Reader ¶
type Reader struct {
*Conn
}
Click to show internal directories.
Click to hide internal directories.