Skip to content

vtamp 0.2.0

Choose a tag to compare

@rath rath released this 02 Oct 14:48
· 120 commits to main since this release

vtamp 0.2.0 lets a playback server run somewhere else: a headless server casts what it plays as Ogg Opus, a Mac can relay that server through its own speakers, and Linux ships as a headless server for the first time.

Install

On an Apple Silicon Mac:

brew install rath/tap/vtamp     # or: brew update && brew upgrade vtamp
vtamp server stop               # the next vtamp starts the new build

On 64-bit ARM Linux with glibc 2.39 or newer (Ubuntu 24.04 or later), download the headless server build:

curl -LO https://github.com/rath/vtamp/releases/download/v0.2.0/vtamp-aarch64-unknown-linux-gnu.tar.gz
curl -LO https://github.com/rath/vtamp/releases/download/v0.2.0/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar -xzf vtamp-aarch64-unknown-linux-gnu.tar.gz
install -D -m 755 vtamp-aarch64-unknown-linux-gnu/vtamp ~/.local/bin/vtamp

Or build from source with Rust 1.90 or newer, a C compiler, and cmake (new in this release, for the bundled libopus):

git clone --branch v0.2.0 https://github.com/rath/vtamp.git
cd vtamp
cargo install --locked --path .

What is new in 0.2.0

  • Headless server. vtamp server start --headless runs without an audio device and casts what it plays as Ogg Opus (48 kHz stereo, 128 kbit/s). The queue, library, and CLI work as before; vtamp cast listen | mpv - plays the cast on the same machine or over SSH, and vtamp cast status describes it.
  • Relay. vtamp server start --remote SOCKET forwards every command to a remote server and plays its cast through the local audio device. The TUI and the CLI attach to the local socket as usual, media keys keep working, and vtamp server stop stops only the relay.
  • Device casts. vtamp server start --cast casts the audio a device server plays, taken before the volume setting. --cast-http ADDR serves the cast over plain HTTP on a token path for mpv, VLC, ffmpeg, and Firefox; TLS and further authentication belong to a reverse proxy.
  • Linux headless servers. The Linux build has no audio device backend, so every server it starts is headless; AAC decodes in software there. It needs no ALSA. Tested on Ubuntu 24.04 (aarch64) and covered by CI.
  • Protocol 7. New cast_watch, cast_info, and server_info commands; doctor reports the server mode and the cast. The database stays at version 6, so no migration runs.

Upgrading from 0.1.0

  • A running 0.1.0 server keeps running after the install. Run vtamp server stop, then the next vtamp starts 0.2.0. Protocol 7 clients need a protocol 7 server.
  • Source builds now need cmake. The Homebrew formula installs the prebuilt binary and needs nothing new.
  • Casts carry full-scale audio; the volume setting applies to the listening device, not to the stream.

Platform

macOS on Apple Silicon is the supported platform for playback. Linux is a headless server only: no device playback, relay, media keys, or radio. Intel Macs and other Linux architectures build from source. Named playlists, EQ, crossfade, gapless playback, and login-time startup are not implemented.

Assets

File Contents
vtamp-aarch64-apple-darwin.tar.gz vtamp binary for macOS on Apple Silicon, LICENSE, README.md
vtamp-aarch64-unknown-linux-gnu.tar.gz vtamp headless server for 64-bit ARM Linux (glibc 2.39+), LICENSE, README.md
SHA256SUMS Checksums of both archives

Verify a download with shasum -a 256 -c SHA256SUMS on macOS or sha256sum --check --ignore-missing SHA256SUMS on Linux. The macOS binary is ad-hoc signed. Homebrew downloads carry no quarantine flag; if you download the archive with a browser instead, clear it before the first run:

xattr -d com.apple.quarantine vtamp