pipewire...-modules(7)

πŸŽ€ pipewire...-modules β€” bestie, let's talk PulseAudio modules

okay so this is the pipewire...-modules(7) page, straight outta the Miscellaneous Information Manual πŸ’… it's the whole scoop on PipeWire's PulseAudio modules and honestly? it's iconic. sit down, grab a snack, we're going through all of it πŸ“


✨ NAME ✨

pipewire-pulse-modules β€” the PipeWire PulseAudio modules. short, sweet, slay.

🌸 DESCRIPTION 🌸

PipeWire's PulseAudio emulation implements several PulseAudio modules. and here's the boundary, bestie, respect it: it only supports its own built-in modules, and it cannot load external modules written for PulseAudio. no outside guests at this sleepover πŸ™ˆ

πŸ¦‹ LOADING MODULES πŸ¦‹

You can load the built-in modules with PulseAudio client programs, like so:

pactl load-module <module-name> <module-options>

You can also just add them to pipewire-pulse.conf β€” typically by dropping a drop-in file into ~/.config/pipewire/pipewire-pulse.conf.d/ that holds the module name and its arguments:

# ~/.config/pipewire/pipewire-pulse.conf.d/custom.conf

pulse.cmd = [
    { cmd = "load-module" args = "module-null-sink sink_name=foo" flags = [ ] }
]

Wanna see every module that's currently loaded, with all their arguments? easy:

pactl list modules

Want the short version instead (short king behavior):

pactl list modules short

And when you're done with a module, you can unload it using either the module-name or the index number:

pactl load-module <module-name> <parameters>
pactl unload-module <module-name|index#>
okay so fair warning, that first line up there is the load command and the second is the unload one. eyes on the prize, bestie πŸ‘€

πŸ’– COMMON MODULE OPTIONS πŸ’–

Most modules that create streams/devices support these properties. they're like the shared accessories everyone borrows:

🌈 sink_name, source_name

Name for the sink (resp. source β€” like, respectively, if you're fancy). Allowed characters in the name are a-z, A-Z, numbers, period (.) and underscore (_). The length must be 1-128 characters. no spaces, no chaos, we're being classy πŸ’…

🌈 format

The sample format. The supported audio formats are:

⭐ PCM

  • u8: unsigned 8-bit integer
  • aLaw: A-law encoded 8-bit integer
  • uLaw: ΞΌ-law encoded 8-bit integer
  • s16le: signed 16-bit little-endian integer
  • s16be: signed 16-bit big-endian integer
  • s16, s16ne: native-endian aliases for s16le or s16be
  • s16re: reverse-endian alias for s16le or s16be
  • float32le: 32-bit little-endian float
  • float32be: 32-bit big-endian float
  • float32, float32ne: native-endian aliases for float32le or float32be
  • float32re: reverse-endian alias for float32le or float32be
  • s32le: signed 32-bit little-endian integer
  • s32be: signed 32-bit big-endian integer
  • s32, s32ne: native-endian aliases for s32le or s32be
  • s32re: reverse-endian alias for s32le or s32be
  • s24le: signed 24-bit little-endian integer (note: ALSA calls this "S24_3LE")
  • s24be: signed 24-bit big-endian integer (note: ALSA calls this "S24_3BE")
  • s24, s24ne: native-endian aliases for s24le or s24be
  • s24re: reverse-endian alias for s24le or s24be
  • s24-32le: signed 24-bit little-endian integer, packed into a 32-bit integer so that the 8 most significant bits are ignored (note: ALSA calls this "S24_LE")
  • s24-32be: signed 24-bit big-endian integer, packed into a 32-bit integer so that the 8 most significant bits are ignored (note: ALSA calls this "S24_BE")
  • s24-32, s24-32ne: native-endian aliases for s24-32le or s24-32be
  • s24-32re: reverse-endian alias for s24-32le or s24-32be

⭐ Compressed audio formats

Below is a list of all supported compressed formats. The code at the beginning of each line is what you use whenever a textual identifier for a format is needed (like in configuration files or on the command line, iykyk). And listen β€” the formats whose identifier ends with -iec61937 have to be wrapped in IEC 61937 frames, which makes the compressed audio behave more like normal PCM audio. that's not optional, that's the vibe check βœ…

  • ac3-iec61937: Dolby Digital (DD / AC-3 / A/52)
  • eac3-iec61937: Dolby Digital Plus (DD+ / E-AC-3)
  • mpeg-iec61937: MPEG-1 or MPEG-2 Part 3 (not MPEG-2 AAC)
  • dts-iec61937: DTS
  • mpeg2-aac-iec61937: MPEG-2 AAC (supported since PulseAudio 4.0)
  • truehd-iec61937: Dolby TrueHD (added in PulseAudio 13.0, but doesn't work yet in practice)
  • dtshd-iec61937: DTS-HD Master Audio (added in PulseAudio 13.0, but doesn't work yet in practice)
  • pcm: PCM (not a compressed format, but listed here, because pcm is one of the recognized encoding identifiers)
  • any: (special identifier for indicating that any encoding can be used)
not me pointing out that truehd-iec61937 and dtshd-iec61937 literally say "doesn't work yet in practice" 😭 they showed up in PulseAudio 13.0 and are still out here doing nothing. icons of potential.

🌈 rate

The sample rate. that's the whole thing, bestie.

🌈 channels

Number of audio channels.

🌈 channel_map

A channel map β€” a list of comma-separated channel names. The currently defined channel names are: left, right, mono, center, front-left, front-right, front-center, rear-center, rear-left, rear-right, lfe, subwoofer, front-left-of-center, front-right-of-center, side-left, side-right, aux0, aux1 to aux15, top-center, top-front-left, top-front-right, top-front-center, top-rear-left, top-rear-right, top-rear-center. yeah, aux1 to aux15 all fit in there too, we didn't forget them 🫢

🌈 sink_properties, source_properties

Set additional properties of the sink/source. Like, for example β€” you can set the description directly when the module is loaded by setting this parameter:

load-module module-alsa-sink sink_name=headphones sink_properties=device.description=Headphones

look at her go πŸ’…

πŸ‘‘ BUILT-IN MODULES πŸ‘‘

here's the full roster, every single one, no skips:

all thirty-five of them, lined up and ready. ate and left no crumbs, fr fr πŸ”₯

πŸ’œ AUTHORS πŸ’œ

The PipeWire Developers <https://gitlab.freedesktop.org/pipewire/pipewire/issues>; PipeWire is available from <https://pipewire.org>

(they really said "come find us if something's broken", and honestly, respectful.)

🌟 SEE ALSO 🌟


and that's the page, bestie β€” the whole thing, nothing skipped, no cap 🫢 this was PipeWire 1.6.11, documented by the PipeWire crew, and you just read all of it like the main character you are. periodt. πŸ’–βœ¨

πŸ“¦ where this page comes from