Skip to main content

A GUI wrapper for testing and iterating on the aiosendspin server

Project description

Sendspin GUI

A GUI wrapper for testing and iterating on the aiosendspin server without needing to integrate with Music Assistant. image

Features

  • Server Management: Start/stop the Sendspin server with configurable settings
  • Client Discovery: Automatic mDNS discovery of Sendspin clients on your network
  • Group Management: Create and manage client groups for synchronized playback
  • Audio Streaming: Stream audio files or test tones to groups
  • Event Logging: Real-time event log with filtering capabilities

Installation

Prerequisites

  • Python 3.12 or higher

Install with uv (recommended)

uv is a fast Python package installer.

# Install uv if you don't have it
pip install uv

# Install sendspin-gui
cd sendspin-gui
uv pip install -e .

# Or with dev dependencies
uv pip install -e ".[dev]"

Install with pip

cd sendspin-gui
pip install -e .

Usage

Run the GUI

# Using the installed command
sendspin-gui

# Or run as a module
python -m sendspin_gui

Quick Start

  1. Start the server: Configure the server ID, name, and port, then click "Start Server"
  2. Connect clients: Sendspin clients on your network will be discovered automatically (if mDNS is enabled)
  3. Create groups: Select clients and click "Create Group" to group them for synchronized playback
  4. Stream audio: Use the Stream panel to play test tones or audio files to your groups

GUI Overview

Server Panel

  • Configure server ID and name
  • Set the server port (default: 8765)
  • Enable/disable mDNS for automatic discovery
  • Start/stop the server

Clients Panel

  • View all connected clients
  • See client roles and group membership
  • Select clients to create groups
  • Disconnect individual clients

Groups Panel

  • View all active groups
  • Playback controls (play/stop)
  • Volume control per group
  • Expand groups to see and manage members

Stream Panel

  • File: Browse and stream audio files (WAV, FLAC, MP3, etc.)
  • Test Tone: Generate sine wave test tones at configurable frequencies
  • URL: (Coming soon) Stream from network URLs

Event Log

  • Real-time server events
  • Filter by event type (info, success, warning, error)
  • Clear log functionality

Development

Project Structure

sendspin-gui/
├── src/
│   └── sendspin_gui/
│       ├── __init__.py
│       ├── __main__.py
│       ├── app.py              # Main application
│       ├── components/
│       │   ├── __init__.py
│       │   ├── server_panel.py
│       │   ├── clients_panel.py
│       │   ├── groups_panel.py
│       │   ├── event_log.py
│       │   └── stream_panel.py
│       └── utils/
│           ├── __init__.py
│           └── async_bridge.py
├── pyproject.toml
└── README.md

Running in development

# Install in editable mode with dev dependencies
uv pip install -e ".[dev]"
# or: pip install -e ".[dev]"

# Run the app
python -m sendspin_gui

Code style

The project uses ruff for linting:

ruff check src/
ruff format src/

Architecture Notes

The GUI uses customtkinter for a modern appearance and runs the asyncio event loop in a separate thread to avoid blocking the UI. The AsyncBridge utility handles communication between the tkinter main thread and the async server operations.

Related Projects

  • aiosendspin - The underlying async Sendspin protocol library
  • sendspin - A synchronized audio player built on aiosendspin
  • Music Assistant - Full-featured music server that uses aiosendspin

License

MIT

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_dev_server-0.1.0.tar.gz (93.5 kB view details)

Uploaded Source

Built Distribution

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

sendspin_dev_server-0.1.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file sendspin_dev_server-0.1.0.tar.gz.

File metadata

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

File hashes

Hashes for sendspin_dev_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e3bcbc4c7e2343f4664036a851a139db44dbed1a873d13bc6615eb8856cc2d91
MD5 09d68ff0b6ad52ef093afab6018bc0ce
BLAKE2b-256 b88579cc1bb87f79ec0c519e2e7744d780a25353022315865210b999be475732

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_dev_server-0.1.0.tar.gz:

Publisher: publish.yml on chrisuthe/Sendspin-dev-server

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_dev_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sendspin_dev_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b70681e7f39db08508f72b20854831d785566f3c82138a705289c40699e8edbc
MD5 4c285a5b666d15eea66a69cb773951b0
BLAKE2b-256 c6a0b569da6e5907314f78a68caeb181b70e9b8b4eb11f06596c9e13b0774b71

See more details on using hashes here.

Provenance

The following attestation bundles were made for sendspin_dev_server-0.1.0-py3-none-any.whl:

Publisher: publish.yml on chrisuthe/Sendspin-dev-server

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