Linux Audio with Pulse Audio[edit]
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)
A very nice audio mixer with graphical options for setting up and choosing inputs / outputs (as below) is pavucontrol
List Default Devices[edit]
You can use `pactl info` to list the default devices / settings Pulse Audio is using.
# pactl info ... Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo Default Source: alsa_input.usb-Behringer_BCD3000-00-BCD3000.analog-4-channel-input
Output[edit]
List available sound outouts[edit]
# pacmd list-sinks Welcome to PulseAudio! Use "help" for usage information. >>> 2 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo> flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY state: RUNNING ... * index: 14 name: <alsa_output.usb-Behringer_BCD3000-00-BCD3000.analog-surround-40> driver: <module-alsa-card.c> flags: HARDWARE DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY state: RUNNING ...
Change Default Output Device[edit]
# pacmd "set-default-sink ${Device Index}"
or
# pacmd "set-default-sink ${Device Name}"
E.G.
# pacmd "set-default-sink 14" Welcome to PulseAudio! Use "help" for usage information. >>> >>>
or
# pacmd set-default-sink alsa_output.usb-Behringer_BCD3000-00-BCD3000.analog-surround-40 Welcome to PulseAudio! Use "help" for usage information. >>> >>>
List Apps using sound outputs[edit]
# pacmd list-sink-inputs Welcome to PulseAudio! Use "help" for usage information. >>> 2 sink input(s) available. index: 1994 driver: <protocol-native.c> flags: state: RUNNING sink: 0 <alsa_output.pci-0000_00_1b.0.analog-stereo> ... application.process.id = "12170" application.process.binary = "java" ... index: 2106 driver: <protocol-native.c> flags: START_CORKED state: RUNNING sink: 14 <alsa_output.usb-Behringer_BCD3000-00-BCD3000.analog-surround-40> ... application.process.id = "22083" application.icon_name = "media-player-banshee" ...
Move App to another output device[edit]
# pacmd "move-sink-input ${App Index} ${Device Index}" # pacmd "move-sink-input 1994 0" Welcome to PulseAudio! Use "help" for usage information. >>> >>>
Input[edit]
List available sound inputs[edit]
# pacmd list-sources # pacmd list-sources Welcome to PulseAudio! Use "help" for usage information. >>> 4 source(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor> ... properties: device.description = "Monitor of Built-in Audio Analog Stereo" device.class = "monitor" ... * index: 1 name: <alsa_input.pci-0000_00_1b.0.analog-stereo> ... used by: 0 linked by: 0 module: 4 properties: alsa.name = "VT1708S Analog" alsa.id = "VT1708S Analog" alsa.card_name = "HDA Intel PCH" device.profile.name = "analog-stereo" device.profile.description = "Analog Stereo" device.description = "Built-in Audio Analog Stereo" ports: analog-input-microphone-front: Front Microphone (priority 8500, available: unknown) analog-input-microphone-rear: Rear Microphone (priority 8200, available: unknown) analog-input-linein: Line In (priority 8100, available: unknown) active port: <analog-input-microphone-front> ... index: 28 name: <alsa_output.usb-Behringer_BCD3000-00-BCD3000.analog-surround-40.monitor> properties: device.description = "Monitor of BCD3000 Analog Surround 4.0" device.class = "monitor" ... index: 29 name: <alsa_input.usb-Behringer_BCD3000-00-BCD3000.analog-4-channel-input> ... used by: 0 linked by: 0 alsa.name = "USB Audio" alsa.id = "USB Audio" alsa.card_name = "BCD3000" device.profile.name = "analog-4-channel-input" device.profile.description = "Analog 4-channel Input" device.description = "BCD3000 Analog 4-channel Input" alsa.mixer_name = "USB Mixer" ...
Managing Card Profiles[edit]
Audio device will often have multiple usage Profiles. Profiles such as "Input", "output" or "Input and Output"
Having your card set in the "wrong" profile will prevent its sink or source showing up and there for pulseaudio will not show the device as you may expect.
Listing a Cards Profile[edit]
We can see what profile our sound card is currently running in by listing the cards current settings.
# pactl list cards Card #1 Name: alsa_card.usb-Behringer_BCD3000-00-BCD3000 Driver: module-alsa-card.c Owner Module: 26 Properties: alsa.card_name = "BCD3000" alsa.long_card_name = "Behringer BCD3000 at usb-0000:00:1d.0-1.7, full speed" alsa.driver_name = "snd_usb_audio" ... udev.id = "usb-Behringer_BCD3000-00-BCD3000" ... device.description = "BCD3000" module-udev-detect.discovered = "1" device.icon_name = "audio-card-usb" Profiles: output:analog-surround-40: Analog Surround 4.0 Output (sinks: 1, sources: 0, priority. 700) output:analog-surround-40+input:analog-4-channel-input: Analog Surround 4.0 Output + Analog 4-channel Input Input (sinks: 1, sources: 1, priority. 701) input:analog-4-channel-input: Analog 4-channel Input Input (sinks: 0, sources: 1, priority. 1) off: Off (sinks: 0, sources: 0, priority. 0) Active Profile: output:analog-surround-40+input:analog-4-channel-input ...
Changing Profile[edit]
Changing the cards profile is simple we simple need the name of the card and profile we want to use. These names can be found in the output of the list command (above)
# pacmd set-card-profile ${Card Name} ${Profile Name}
# pacmd set-card-profile alsa_card.usb-Behringer_BCD3000-00-BCD3000 output:analog-surround-40+input:analog-4-channel-input Welcome to PulseAudio! Use "help" for usage information.
pacmd help[edit]
#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
pactl help[edit]
# pactl --help pactl [options] stat [short] pactl [options] info pactl [options] list [short] [TYPE] pactl [options] exit pactl [options] upload-sample FILENAME [NAME] pactl [options] play-sample NAME [SINK] pactl [options] remove-sample NAME pactl [options] load-module NAME [ARGS ...] pactl [options] unload-module #N pactl [options] move-(sink-input|source-output) #N SINK|SOURCE pactl [options] suspend-(sink|source) NAME|#N 1|0 pactl [options] set-card-profile CARD PROFILE pactl [options] set-(sink|source)-port NAME|#N PORT pactl [options] set-(sink|source)-volume NAME|#N VOLUME pactl [options] set-(sink-input|source-output)-volume #N VOLUME pactl [options] set-(sink|source)-mute NAME|#N 1|0 pactl [options] set-(sink-input|source-output)-mute #N 1|0 pactl [options] set-sink-formats #N FORMATS pactl [options] subscribe -h, --help Show this help --version Show version -s, --server=SERVER The name of the server to connect to -n, --client-name=NAME How to call this client on the server
Linux Pulseaudio USB Audio