Linux Audio

= Linux Audio with Pulse Audio =

Pulse Audio is a popular audio system for Linux.

Its basic command line app is "pacmd"

Terminology:

Sink: an audio output, typically an Analog audio output such as a sound card.

Source: an audio input, typically an Analog audio from a sound card such as a microphone. Can also can be a loop back / monitor of an audio output (Sink)

List available sound outouts
Welcome to PulseAudio! Use "help" for usage information. >>> 2 sink(s) available. index: 0 name:  flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY state: RUNNING ...  	* index: 14 name:  driver:  	flags: HARDWARE DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY state: RUNNING ...
 * 1) pacmd list-sinks

Change Default Output Device
or
 * 1) pacmd "set-default-sink ${Device Index}"
 * 1) pacmd "set-default-sink ${Device Name}"

E.G. Welcome to PulseAudio! Use "help" for usage information. >>> >>>
 * 1) pacmd "set-default-sink 14"

or

Welcome to PulseAudio! Use "help" for usage information. >>> >>>
 * 1) pacmd set-default-sink alsa_output.usb-Behringer_BCD3000-00-BCD3000.analog-surround-40

List Apps using sound outputs
Welcome to PulseAudio! Use "help" for usage information. >>> 2 sink input(s) available. index: 1994 driver:  		flags: state: RUNNING sink: 0  ... 			application.process.id = "12170" application.process.binary = "java" ...    index: 2106 driver:  		flags: START_CORKED state: RUNNING sink: 14  ...		 			application.process.id = "22083" application.icon_name = "media-player-banshee" ...
 * 1) pacmd list-sink-inputs

Move App to another output device
Welcome to PulseAudio! Use "help" for usage information. >>> >>>
 * 1) pacmd "move-sink-input ${App Index}  ${Device Index}"
 * 1) pacmd "move-sink-input 1994 0"

pacmd help
Welcome to PulseAudio! Use "help" for usage information. >>> Available commands: help                     Show this help list-modules             List loaded modules list-cards               List cards list-sinks               List loaded sinks list-sources             List loaded sources list-clients             List loaded clients list-sink-inputs         List sink inputs list-source-outputs      List source outputs stat                     Show memory block statistics info                     Show comprehensive status load-module              Load a module (args: name, arguments) unload-module            Unload a module (args: index) describe-module          Describe a module (arg: name) set-sink-volume          Set the volume of a sink (args: index|name, volume) set-source-volume        Set the volume of a source (args: index|name, volume) set-sink-mute            Set the mute switch of a sink (args: index|name, bool) set-source-mute          Set the mute switch of a source (args: index|name, bool) set-sink-input-volume    Set the volume of a sink input (args: index, volume) set-source-output-volume Set the volume of a source output (args: index, volume) set-sink-input-mute      Set the mute switch of a sink input (args: index, bool) set-source-output-mute   Set the mute switch of a source output (args: index, bool) set-default-sink         Set the default sink (args: index|name) set-default-source       Set the default source (args: index|name) set-card-profile         Change the profile of a card (args: index|name, profile-name) set-sink-port            Change the port of a sink (args: index|name, port-name) set-source-port          Change the port of a source (args: index|name, port-name) suspend-sink             Suspend sink (args: index|name, bool) suspend-source           Suspend source (args: index|name, bool) suspend                  Suspend all sinks and all sources (args: bool) move-sink-input          Move sink input to another sink (args: index, sink) move-source-output       Move source output to another source (args: index, source) update-sink-proplist     Update the properties of a sink (args: index|name, properties) update-source-proplist   Update the properties of a source (args: index|name, properties) update-sink-input-proplist Update the properties of a sink input (args: index, properties) update-source-output-proplist Update the properties of a source output (args: index, properties) list-samples             List all entries in the sample cache play-sample              Play a sample from the sample cache (args: name, sink|index) remove-sample            Remove a sample from the sample cache (args: name) load-sample              Load a sound file into the sample cache (args: name, filename) load-sample-lazy         Lazily load a sound file into the sample cache (args: name, filename) load-sample-dir-lazy     Lazily load all files in a directory into the sample cache (args: pathname) kill-client              Kill a client (args: index) kill-sink-input          Kill a sink input (args: index) kill-source-output       Kill a source output (args: index) set-log-level            Change the log level (args: numeric level) set-log-meta             Show source code location in log messages (args: bool) set-log-time             Show timestamps in log messages (args: bool) set-log-backtrace        Show backtrace in log messages (args: frames) play-file                Play a sound file (args: filename, sink|index) dump                     Dump daemon configuration dump-volumes             Debug: Show the state of all volumes shared                   Debug: Show shared properties exit                     Terminate the daemon
 * 1) pacmd help