Skip to main content

Async Python implementation of the Resonate Protocol.

Project description

aioresonate

pypi_badge

Async Python library implementing the Resonate Protocol.

For a WIP reference implementation of a server using this library, see Music Assistant

A project from the Open Home Foundation

CLI Client

Note: The CLI client is currently included in the aioresonate library for development purposes. Once the Resonate Protocol stabilizes, it will be moved to a separate repository and package. This will require users to uninstall aioresonate[cli] and install the new CLI package separately.

This repository includes a highly experimental CLI client for testing and development purposes.

Installation

Install from PyPI:

pip install "aioresonate[cli]"
Install from source
git clone https://github.com/Resonate-Protocol/aioresonate.git
cd aioresonate
pip install ".[cli]"

Running the CLI

resonate-cli

The CLI client will automatically connect to a Resonate server on your local network and be available for playback.

Configuration Options

Client Identification

If you want to run multiple CLI clients simultaneously, each must have a unique identifier:

resonate-cli --id my-client-1 --name "Kitchen"
resonate-cli --id my-client-2 --name "Bedroom"
  • --id: A unique identifier for this client (required if running multiple instances)
  • --name: A friendly name displayed on the server (optional)

Adjusting Playback Delay

The CLI supports adjusting playback delay to compensate for audio hardware latency or achieve better synchronization across devices.

Setting delay at startup:

resonate-cli --static-delay-ms 150

Adjusting delay in real-time: While the client is running, you can use the delay command:

  • delay - Show current delay value
  • delay <ms> - Set absolute delay (e.g., delay 200)
  • delay + <ms> - Increase delay (e.g., delay + 50)
  • delay - <ms> - Decrease delay (e.g., delay - 25)

Changing the delay clears the audio buffer to prevent desynchronization.

Debugging & Troubleshooting

If you experience synchronization issues or audio glitches, you can enable detailed logging to help diagnose the problem:

resonate-cli --log-level DEBUG

This provides detailed information about time synchronization. The output can be helpful when reporting issues.

Limitations & Known Issues

This client is highly experimental and has several known limitations:

  • Platform Support: Only tested on Linux; macOS and Windows support untested
  • Format Support: Currently fixed to uncompressed 44.1kHz 16-bit stereo PCM
  • Playback Start Glitches: When starting playback, audio dropouts or pitch shifts may occur during initial synchronization
  • Performance Requirements: Low-powered devices may not keep up. While total CPU usage is very minimal, it currently requires low latency. This will be optimized in a future version
  • CLI User Experience: The CLI is pretty bare bones for now
  • Configuration Persistence: Settings are not persistently stored; delay must be reconfigured on each restart using the --static-delay-ms option

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

aioresonate-0.11.0.tar.gz (74.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aioresonate-0.11.0-py3-none-any.whl (82.9 kB view details)

Uploaded Python 3

File details

Details for the file aioresonate-0.11.0.tar.gz.

File metadata

  • Download URL: aioresonate-0.11.0.tar.gz
  • Upload date:
  • Size: 74.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioresonate-0.11.0.tar.gz
Algorithm Hash digest
SHA256 1abae8adbd4607d1b57a45762cb95a1de66c20c70a282bf0f4b8a3a97636de51
MD5 2e1d9e264197d42bc8017e814f8ff570
BLAKE2b-256 7a63be5dce8b557e5a3554a67ea585ac200c6abcf4ac2b8161a03ab1a128f6ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for aioresonate-0.11.0.tar.gz:

Publisher: release.yml on Resonate-Protocol/aioresonate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aioresonate-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: aioresonate-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 82.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioresonate-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78f1718af5f8b8d9461a5bd86d25e0172793a18c2f12a3e3b4396e51365088b0
MD5 99a7d7d7040450ce73912356246df77e
BLAKE2b-256 174d435c459d76ffd89349f1503615047416b2b6503e3cbba58196dc183ffce6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aioresonate-0.11.0-py3-none-any.whl:

Publisher: release.yml on Resonate-Protocol/aioresonate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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