APULSE(1)

πŸ“¦
version 0.1.14 Β· 2 versions
, in nixos 26.05, nixpkgs unstable, ubuntu resolute, ubuntu stonking

πŸ’– APULSE πŸ’–

okay bestie, sit down, we're talking about apulse β€” the PulseAudio emulator for ALSA, and honestly? she's iconic. ✨


🌸 SYNOPSIS 🌸

apulse <program-name> [program-parameters]...

like... that's it. that's the whole vibe. you hand her a program name, maybe some params, and she goes. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea, bestie. apulse is an alternative partial implementation of the PulseAudio API. that's the whole thing. it's a loader script plus a bunch of shared libraries that have the exact same names as the ones from original PulseAudio, so applications can dynamically load them and genuinely believe they're talking to PulseAudio. gaslight, gatekeep, girlboss. πŸ™ˆ

and the best part? internally, no separate sound mixing daemon is used. none. zero. instead, apulse relies on ALSA's dmix, dsnoop, and plug plugins to handle multiple sound sources and capture streams running at the same time. let me break that down for you:

  • dmix plugin muxes multiple playback streams πŸ”₯
  • dsnoop plugin allows multiple applications to capture from a single microphone 🎀
  • plug plugin transparently converts audio between various sample formats, sample rates and channel numbers 🌈

and for more than a decade now, ALSA comes with these plugins enabled and configured by default. so like, no setup needed. she just works. πŸ‘‘

now, important clarification: apulse wasn't designed to be a drop-in replacement of PulseAudio. and honestly? it's pointless to try, since that would just be a reimplementation of original PulseAudio, with the same client-daemon architecture, required by the complete feature set. boring. instead, only the parts of the API that are crucial to specific applications are implemented. that's the whole philosophy.

which is exactly why there's a loader script, named apulse. what does she do? she updates the value of the LD_LIBRARY_PATH environment variable to point also to the directory where apulse's libraries are installed, making them available to the application. sneaky? a little. effective? absolutely. πŸŽ€

and the name? it comes from names of both ALSA and PulseAudio. as aoss was a compatibility layer between OSS programs and ALSA, apulse was designed to be a compatibility layer between PulseAudio applications and ALSA. history. lore. iykyk. 🧚


✨ ENVIRONMENT ✨

the following environment variables can be used to configure the devices used by apulse. try hw:0,0, plughw:0,0 and the like. refer to the ALSA user guide for a full list of device names, bestie, don't guess. πŸ“–

  • APULSE_CAPTURE_DEVICE β€” can be used to configure the capture device. πŸŽ™οΈ
  • APULSE_PLAYBACK_DEVICE β€” can be used to configure the playback device. πŸ”Š

πŸ’œ RETURN VALUE πŸ’œ

apulse is a simple shell wrapper script that calls exec on the program given in parameters. so except for cases when the wrapper itself fails to load, the return value is the return value of that program. periodt. πŸ’…


🌟 EXAMPLE 🌟

run a newer Firefox browser with fake PulseAudio:

apulse firefox

go off. πŸš€


πŸ‘‘ AUTHORS πŸ‘‘

apulse was written by Rinat Ibragimov in 2014-2017. thank you for your service, king. 🫢


okay that's the whole page bestie!! this was apulse, from the apulse manual, dated 2017-10-23 β€” mwah, no notes, she ate. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from