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

Run the Publish to PyPI workflow manually when you want to publish. Provide the release tag, such as v0.2.0, and it will publish that exact version to PyPI. 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.2.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.2-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sendspin_auracast-0.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9d1379395f07293de052f0962776d68b00b6d8fcdb38eac2b60517e8e1216262
MD5 91d76a14bdcda83c3ed6d79be3abdc01
BLAKE2b-256 3acdf75e4a9da21df97984a8acdc036dcdfdddf9faf49985099c3e7f8e786dd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_auracast-0.2.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sendspin_auracast-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b53bb8c025e146adf12b2e56819f3e93f20bfe2235bf6e636feb5213ae932dbb
MD5 8aabd996898243c896cf08f2c050bc64
BLAKE2b-256 d83a79b2e2904a7c3249d3116bca3156a6a2070eca53b504eec2ecde4982cb7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_auracast-0.2.2-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