pulsectl
Python high-level interface and ctypes-based bindings for PulseAudio (libpulse)
Decision gist · record as of 2026-08-14
Yes, if you need synchronous PulseAudio control on Linux and can accept dormant maintenance. The package is stable (MIT licensed, no known vulnerabilities, low install friction), but has not been actively developed for over 1.5 years. Use it for straightforward mixer tasks; for async patterns or active development, evaluate pulsectl-asyncio or direct libpulse bindings instead.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires PulseAudio server running and libpulse library installed on the system; Linux/POSIX only.
- Low friction installation with no runtime dependencies.
- Maintenance is dormant (596 days since last release), though the repository remains active with a recent commit on 2024-12-26 and modest community interest (180 stars).
License · maintenance · safety
MIT (permissive) — MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for both open-source and proprietary projects.
last release 2024-12-26 (596 days) · last repo commit 2024-12-26 · 180 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 164,916 downloads/mo, #10,535 on PyPI
Alternatives
Verify before relying
import pulsectl
with pulsectl.Pulse('my-app') as pulse:
for sink in pulse.sink_list():
pulse.volume_change_all_chans(sink, 0.1)- Whether Python 2 support (listed in classifiers) is actively maintained or tested in recent releases.
- Current state of async support via pulsectl-asyncio and whether it is the recommended path for new projects.
What it is and what it does
pulsectl is a ctypes-based wrapper around PulseAudio's libpulse C library, exposing mixer-like controls and introspection operations through a blocking, synchronous Python API. It lets you query and manipulate audio devices (sinks, sources, cards), adjust per-channel volume, set default devices, and listen for server state changes—all without submitting audio samples or managing playback directly.
The module represents audio objects as thin wrappers around C structs (e.g., PulseSinkInfo, PulseVolumeInfo) and exposes most operations as methods on a Pulse client instance. Volume is handled as a list of per-channel floats in a 0–65536 range, with 1.0 representing normal level and >1.0 for software boost. For async use cases, the maintainer recommends pulsectl-asyncio instead.
Use it for
- Build a volume control CLI or GUI tool that adjusts sink/source levels and switches default devices.
- Monitor PulseAudio server events (device additions, removals, property changes) in a synchronous event loop.
- Automate audio routing and profile switching across multiple sound cards and HDMI outputs.
- Integrate PulseAudio control into a larger audio application without managing low-level C bindings.
- Query audio device properties and capabilities (channel maps, profiles, proplist metadata) for diagnostics.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need synchronous PulseAudio control on Linux and can accept dormant maintenance.
The package is stable (MIT licensed, no known vulnerabilities, low install friction), but has not been actively developed for over 1.5 years. Use it for straightforward mixer tasks; for async patterns or active development, evaluate pulsectl-asyncio or direct libpulse bindings instead.
Install
pulsectl on PyPI
Before you install
Low friction installation with no runtime dependencies. Maintenance is dormant (596 days since last release), though the repository remains active with a recent commit on 2024-12-26 and modest community interest (180 stars).
Requires PulseAudio server running and libpulse library installed on the system; Linux/POSIX only.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for both open-source and proprietary projects.
Quickstart
import pulsectl
with pulsectl.Pulse('my-app') as pulse:
for sink in pulse.sink_list():
pulse.volume_change_all_chans(sink, 0.1)
Verify before relying
- Whether Python 2 support (listed in classifiers) is actively maintained or tested in recent releases.
- Current state of async support via pulsectl-asyncio and whether it is the recommended path for new projects.
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Dormant 596 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 164,916 / month, #10,535 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: POSIXOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 3Topic :: MultimediaTopic :: Multimedia :: Sound/Audio |
Evidence: pulsectl-24.12.0-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pulseaudio control python”
- pulsectlProvides a high-level Python interface to PulseAudio's libpulse…
- SoundCardSoundCard plays and records audio across Linux, macOS, and Windows…
- google-cloud-service-controlPython client library for Google Cloud Service Control API, enabling…
Give your agent the search over MCP, or paste the wish link into any chat.
More Multimedia packages
MoviePy is a Python library for video editing that reads, processes, and writes video and audio files by converting them to numpy arrays for frame-level manipulation and effect application.
Reads metadata (artist, title, duration, bitrate, and more) from audio files in formats including MP3, MP4, FLAC, OGG, WAV, and others, without writing or modifying tags.
Install it if you need to extract metadata from audio files without the overhead of a heavier library.
Converts HTML and CSS to PDF documents using Python, enabling developers with web skills to generate PDF templates without learning specialized PDF libraries.
However, the aging maintenance status (last release 537 days ago) warrants caution in production: verify that its rendering quality and feature set meet your specific…
ffmpy is a Python wrapper around FFmpeg that lets you build and execute FFmpeg command lines programmatically without writing shell commands directly.
Piexif reads, writes, and manipulates EXIF metadata in JPEG and WebP images using pure Python with no compiled dependencies.
Install it if you need to read or edit EXIF in JPEG or WebP files without external dependencies.
Provides PyTorch-native audio data augmentation transforms that run on CPU or GPU, designed to integrate directly into neural network models as differentiable modules.
However, be aware that maintenance is aging (last release 576 days ago), multiprocessing and multi-GPU setups have known limitations, and some transforms have edge…
See also pycaw · sonos-websocket · python-osc · pydub · python-songpal · SoundCard · pyfmodex · miniaudio · python-vlc