Skip to main content

Bridge Sendspin audio to Bluetooth LE Audio Auracast using Bumble.

Project description

sendspin_auracast

Receive Sendspin PCM audio and broadcast it over Bluetooth LE Audio (Auracast) using Bumble.

Installation

pip install sendspin_auracast

For local development:

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"

Usage

Broadcast audio from a Sendspin WebSocket server:

sendspin-auracast ws://localhost:8927/sendspin

The client advertises itself as a Sendspin player, receives PCM audio chunks, encodes them as LC3, and broadcasts them as an Auracast stream.

Use a custom Bumble transport or broadcast name:

sendspin-auracast ws://localhost:8927/sendspin \
  --transport serial:/dev/ttyACM0,1000000 \
  --name "Sendspin Auracast"

Broadcast with encryption:

sendspin-auracast ws://localhost:8927/sendspin --code "my-password"

Add manufacturer-specific BLE advertising data:

sendspin-auracast ws://localhost:8927/sendspin --manufacturer-data 0x0059:010203

Tune startup latency:

sendspin-auracast ws://localhost:8927/sendspin \
  --sendspin-buffer-ms 50 \
  --presentation-delay-us 20000 \
  --max-transport-latency-ms 40

The bridge defaults to a 100 ms advertised Sendspin player buffer. Smaller values can reduce the delay after pressing play, while larger values may be more reliable on busy hosts or noisy Bluetooth links.

For debugging, print received chunks instead of broadcasting:

sendspin-auracast ws://localhost:8927/sendspin --print

To write raw audio bytes to stdout instead:

sendspin-auracast ws://localhost:8927/sendspin --raw

Development

Run tests:

pytest

Run linting:

ruff check .

Build the package:

python -m build

Prepare a release locally:

python scripts/prepare_release.py 0.2.0

Publish to PyPI:

twine check dist/*
twine upload dist/*

Releases

Use the GitHub Actions workflow Prepare Release to create a PyPI release. It:

  • updates pyproject.toml to the requested version
  • runs lint, tests, python -m build, and twine check
  • commits the version bump and creates a v* tag
  • pushes the commit and tag
  • creates a GitHub Release

The Publish to PyPI workflow runs automatically after Prepare Release completes successfully and publishes the exact release commit. Make sure the repository's PyPI trusted publishing settings are configured for the release environment before using it.

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

sendspin_auracast-0.2.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

sendspin_auracast-0.2.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file sendspin_auracast-0.2.0.tar.gz.

File metadata

  • Download URL: sendspin_auracast-0.2.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sendspin_auracast-0.2.0.tar.gz
Algorithm Hash digest
SHA256 961d0e9f248263b521fae95224eb9e7994bf69b020895af2964b8ac5455c8873
MD5 05f4905d8244dd49c7e86b737061cbbd
BLAKE2b-256 e9c9fdd9851f2e9a850f8a10221e4b4cf14339d2cb2b65b34c29ad36b7d3de9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_auracast-0.2.0.tar.gz:

Publisher: publish.yml on Yagoor/sendspin_auracast

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

File details

Details for the file sendspin_auracast-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sendspin_auracast-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a86fef56029f41cf2241f9849f74a92dbb64e182d47aa125230d7536ba6dc04a
MD5 c8e8f927291eaa655be1853445b362d3
BLAKE2b-256 e9f303a79e47d8a985e8c080bb3d3d265e2c3cc173f1ddcde66ac1db50dedea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_auracast-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Yagoor/sendspin_auracast

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