Skip to main content

Asyncio interface to the Pulseaudio and Pipewire pulse library.

Project description

Asyncio interface to the Pulseaudio and Pipewire pulse library.

libpulse is a Python project based on asyncio, that uses ctypes to interface with the pulse library of the PulseAudio and PipeWire sound servers. The interface is meant to be complete. That is, all the constants, structures, plain functions and async functions are made available by importing the libpulse module of the libpulse package.

It includes the pactl.py module, a Python implementation of the pactl command that runs both on Pulseaudio and Pipewire. The output of most pactl.py subcommands can be parsed by Python and when redirected to a file, the file can be imported as a Python module. For example start an interactive Python session and inspect the cards object with all its nested sructures and dereferenced pointers with:

$ ./pactl.py list cards > cards.py && python -i cards.py

Calling an async function is simple:

 import asyncio
 from libpulse.libpulse import LibPulse

 async def main():
     async with LibPulse('my libpulse') as lib_pulse:
         sink = await lib_pulse.pa_context_get_sink_info_by_index(0)
         print('sample_spec rate:', sink.sample_spec.rate)
         print('proplist names:', list(sink.proplist.keys()))

asyncio.run(main())

Another example processing sink-input events:

import asyncio
from libpulse.libpulse import LibPulse, PA_SUBSCRIPTION_MASK_SINK_INPUT

async def main():
    async with LibPulse('my libpulse') as lib_pulse:
        await lib_pulse.pa_context_subscribe(
                                        PA_SUBSCRIPTION_MASK_SINK_INPUT)
        iterator = lib_pulse.get_events_iterator()
        async for event in iterator:
            # 'event' is an instance of PulseEvent.
            some_function_to_process_the_event(event)

asyncio.run(main())

See the libpulse documentation.

Requirements

Python version 3.8 or more recent.

Installation

Install libpulse with pip:

$ python -m pip install libpulse

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libpulse-0.4.tar.gz (52.7 kB view details)

Uploaded Source

Built Distribution

libpulse-0.4-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file libpulse-0.4.tar.gz.

File metadata

  • Download URL: libpulse-0.4.tar.gz
  • Upload date:
  • Size: 52.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for libpulse-0.4.tar.gz
Algorithm Hash digest
SHA256 31fae6af37d5de7ae819757d14931ab58bb2b1709f7eee388860b8028a6b610c
MD5 5e9cbaaf22b80a9229d0f0b97ebd4ad0
BLAKE2b-256 d4169820376356b87b99a1310ca1249c40b5e8e19bf92d13706bf8ab8d90438c

See more details on using hashes here.

File details

Details for the file libpulse-0.4-py3-none-any.whl.

File metadata

  • Download URL: libpulse-0.4-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for libpulse-0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1cdc1821eca95c06f11fc84da76d37e0b653b3321c3a8f9dcc05c1f7fa8b4bf3
MD5 ec3d7a83ec302cc419f2efb1c1284040
BLAKE2b-256 3aa8732c5468631e80a295440c5fd3fdb258dc8952c49ffd7b114436152f0124

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page