pulseaudio

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2023 License: MIT Imports: 12 Imported by: 0

README

This package is a fork of https://github.com/lawl/pulseaudio project which is not longer maintained and deleted from github Copy with MIT license

pulseaudio GoDoc

Package pulseaudio is a pure-Go (no libpulse) implementation of the PulseAudio native protocol.

Download:

go get github.com/lawl/pulseaudio

Package pulseaudio is a pure-Go (no libpulse) implementation of the PulseAudio native protocol.

This library is a fork of https://github.com/mafik/pulseaudio The original library deliberately tries to hide pulseaudio internals and doesn't expose them.

For my usecase I needed the exact opposite, access to pulseaudio internals. I will most likely only maintain this as far as is required for noisetorch to work. Pull Requests are however welcome.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RuntimePath

func RuntimePath(fn string) (string, error)

RuntimePath resolves a file in the pulse runtime path E.g. pass "native" to get the address for pulse' native socket Original implementation: https://github.com/pulseaudio/pulseaudio/blob/6c58c69bb6b937c1e758410d3114fc3bc0606fbe/src/pulsecore/core-util.c Except we do not support legacy $HOME paths

Types

type Card

type Card struct {
	Index         uint32
	Name          string
	Module        uint32
	Driver        string
	Profiles      map[string]*profile
	ActiveProfile *profile
	PropList      map[string]string
	Ports         []port
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client maintains a connection to the PulseAudio server.

func NewClient

func NewClient(serverAddr string) (*Client, error)

NewClient establishes a connection to the PulseAudio server.

func (*Client) Cards

func (c *Client) Cards() ([]Card, error)

func (*Client) Close

func (c *Client) Close()

Close closes the connection to PulseAudio server and makes the Client unusable.

func (*Client) Connected

func (c *Client) Connected() bool

Connected returns a bool specifying if the connection to pulse is alive

func (*Client) LoadModule

func (c *Client) LoadModule(name string, argument string) (index uint32, err error)

LoadModule requests pulseaudio to load the module with the specified name and argument string. More information on how to supply these can be found in the pulseaudio documentation: https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#loadablemodules e.g. LoadModule("module-alsa-sink", "sink_name=headphones sink_properties=device.description=Headphones") would be equivalent to the pulse config directive: load-module module-alsa-sink sink_name=headphones sink_properties=device.description=Headphones Returns the index of the loaded module or an error

func (*Client) ModuleList

func (c *Client) ModuleList() ([]Module, error)

ModuleList queries pulseaudio for a list of loaded modules and returns an array

func (*Client) Mute

func (c *Client) Mute() (bool, error)

func (*Client) ServerInfo

func (c *Client) ServerInfo() (*Server, error)

ServerInfo queries the pulseaudio server for its information

func (*Client) SetCardProfile

func (c *Client) SetCardProfile(cardIndex uint32, profileName string) error

func (*Client) SetMute

func (c *Client) SetMute(b bool) error

ToggleMute reverse mute status

func (*Client) SetSinkVolume

func (c *Client) SetSinkVolume(sinkName string, volume float32) error

func (*Client) SetVolume

func (c *Client) SetVolume(volume float32) error

SetVolume changes the current volume to a specified value from 0 to 1 (or more than 1 - if volume should be boosted).

func (*Client) Sinks

func (c *Client) Sinks() ([]Sink, error)

Sinks queries PulseAudio for a list of sinks and returns an array

func (*Client) Sources

func (c *Client) Sources() ([]Source, error)

Sources queries pulseaudio for a list of all it's sources and returns an array of them

func (*Client) ToggleMute

func (c *Client) ToggleMute() (bool, error)

ToggleMute reverse mute status

func (*Client) UnloadModule

func (c *Client) UnloadModule(index uint32) error

UnloadModule requests pulseaudio to unload the module with the specified index. The index can be found e.g. with ModuleList()

func (*Client) Updates

func (c *Client) Updates() (updates <-chan struct{}, err error)

Updates returns a channel with PulseAudio updates.

func (*Client) Volume

func (c *Client) Volume() (float32, error)

Volume returns current audio volume as a number from 0 to 1 (or more than 1 - if volume is boosted).

type Error

type Error struct {
	Cmd  string
	Code uint32
}

func (*Error) Error

func (err *Error) Error() string

type Module

type Module struct {
	Index    uint32
	Name     string
	Argument string
	NUsed    uint32
	PropList map[string]string
}

Module contains information about a pulseaudio module

func (*Module) ReadFrom

func (s *Module) ReadFrom(r io.Reader) (int64, error)

ReadFrom deserializes a PA module packet

type Server

type Server struct {
	PackageName    string
	PackageVersion string
	User           string
	Hostname       string
	SampleSpec     sampleSpec
	DefaultSink    string
	DefaultSource  string
	Cookie         uint32
	ChannelMap     channelMap
}

Server contains information about the pulseaudio server

func (*Server) ReadFrom

func (s *Server) ReadFrom(r io.Reader) (int64, error)

ReadFrom deserializes a pulseaudio server info packet

type Sink

type Sink struct {
	Index              uint32
	Name               string
	Description        string
	SampleSpec         sampleSpec
	ChannelMap         channelMap
	ModuleIndex        uint32
	Cvolume            cvolume
	Muted              bool
	MonitorSourceIndex uint32
	MonitorSourceName  string
	Latency            uint64
	Driver             string
	Flags              uint32
	PropList           map[string]string
	RequestedLatency   uint64
	BaseVolume         uint32
	SinkState          uint32
	NVolumeSteps       uint32
	CardIndex          uint32
	Ports              []sinkPort
	ActivePortName     string
	Formats            []formatInfo
}

Sink contains information about a sink in pulseaudio

func (*Sink) ReadFrom

func (s *Sink) ReadFrom(r io.Reader) (int64, error)

ReadFrom deserializes a sink packet from pulseaudio

type Source

type Source struct {
	Index              uint32
	Name               string
	Description        string
	SampleSpec         sampleSpec
	ChannelMap         channelMap
	ModuleIndex        uint32
	Cvolume            cvolume
	Muted              bool
	MonitorSourceIndex uint32
	MonitorSourceName  string
	Latency            uint64
	Driver             string
	Flags              uint32
	PropList           map[string]string
	RequestedLatency   uint64
	BaseVolume         uint32
	SinkState          uint32
	NVolumeSteps       uint32
	CardIndex          uint32
	Ports              []sinkPort
	ActivePortName     string
	Formats            []formatInfo
}

Source contains information about a source in pulseaudio, e.g. a microphone

func (*Source) ReadFrom

func (s *Source) ReadFrom(r io.Reader) (int64, error)

ReadFrom deserialized a PA source packet

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL